Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Сети";
Текущий архив: 2006.03.05;
Скачать: [xml.tar.bz2];

Вниз

Пингуем по длинному IP   Найти похожие ветки 

 
XfroSt   (2005-11-22 15:39) [0]

Для пинга в дельфи я использую функцияю:

function TMF.ping(Host: string): boolean;
begin
IdICMPClient1.Host:=Host;                  // Указываем проверяемый адрес
IdICMPClient1.onReply:=IdICMPClient1Reply; // "Включаем" проверку ответов
try
 IdICMPClient1.Ping();
 Application.ProcessMessages()             // Ждем ответа
except
 on E: Exception do                        // Есть непонятный глюк при первом пинге "не своей" подсети
 begin                                     // при повторном все работает нормально
  if E.Message="Non-echo type response received" then
  begin
   IdICMPClient1.Ping();                   // Повторный пинг
   Application.ProcessMessages()           // Ждем ответа
  end
  else isOnline:=false                     // все-таки возникла ошибка - адрес не отвечает
 end
end;
IdICMPClient1.onReply:=nil;                // "Отключаем" ожидание ответа
Result:=isOnline;
isOnline:=false
end;


пингует тока адреса типа 192.168.20.247 а вот когда его преобразуешь в длинный адрес: 3232240887 то выскакивет ошибка! Хотя винда пингует оба адреса нормально.

как это исправить?
Или как перевести длинный адрес в короткий обратно?


 
Digitman ©   (2005-11-22 15:55) [1]


> Хотя винда пингует оба адреса нормально


что тебе "винда" ?

справка к св-ву TIdICMPClient.Host для Пушкина писана что ли ?)

там же черным по белому написано :

The address can be a computer name such as "wvnvm.wvnet.edu" or an IP address such as "129.71.2.4"


> как перевести длинный адрес в короткий обратно


inet_addr(), inet_ntoa()


> Application.ProcessMessages()            


в дан.контексте - пятое колесо телеге


 
Anatoly Podgoretsky ©   (2005-11-22 16:34) [2]

XfroSt   (22.11.05 15:39)  
Использовать другой компонент, который работает в соответствии с твоими требованиями.


 
XfroSt   (2005-11-22 16:40) [3]

спасибо я уже нашел выход и положения:
//Функция получает в качестве параметра строку, содержащую IP адрес, и возвращает  IP адрес в виде DWord значения
function IPtoDWORD(const s:string):DWORD;
var
   L:TStringList;
   b:packed array [0..3] of byte;
   i:integer;
begin
   Result:=0;
   L:=TStringList.Create;
   try
       L.Delimiter:=".";
       L.DelimitedText:=s;
       for i:=0 to 3 do
           b[3-i]:=StrToInt(L[i]);
       Result:=pdword(@b[0])^;
   finally
       L.Free
   end
end;
////Функция получает в качестве параметра  IP адрес в виде DWord значения, и возвращает строку, содержащую IP адрес
function DWORDtoIP(d:DWORD):string;
var
   L:TStringList;
   i:integer;
begin
   Result:="";
   L:=TStringList.Create;
   try
       L.Delimiter:=".";
       for i:=3 downto 0 do
           L.Add(IntToStr(byte(d shr (i shl 3))));
       Result:=L.DelimitedText;
   finally
       L.Free
   end
end;


просто длинный адрес мне был необходим для подсчета количества адресов в промежутке...
Теперь все пашет.



Страницы: 1 вся ветка

Форум: "Сети";
Текущий архив: 2006.03.05;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.45 MB
Время: 0.012 c
15-1139584213
ZeFiR
2006-02-10 18:10
2006.03.05
rtl70.bpl


15-1139527229
unknown
2006-02-10 02:20
2006.03.05
Подкинули задачку...


1-1138962622
dan317
2006-02-03 13:30
2006.03.05
Исчезновение объектных published-свойств - у кого было ?


1-1138991454
ancot
2006-02-03 21:30
2006.03.05
не работает WM_PRINT


2-1139805854
Officeman
2006-02-13 07:44
2006.03.05
randomize;





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский