Главная страница
    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.46 MB
Время: 0.013 c
2-1140179344
chelLexa
2006-02-17 15:29
2006.03.05
как сделать мигание надписи на кнопке


10-1113539192
JekSoft
2005-04-15 08:26
2006.03.05
Объект OLE/ActiveX для MS Office


15-1139317557
Progger
2006-02-07 16:05
2006.03.05
чем Delphi 5 хуже более поздних версий? Или лучше?


2-1139853465
13
2006-02-13 20:57
2006.03.05
проблемы с панелями ToolBar to CoolBar


15-1139052861
Kerk
2006-02-04 14:34
2006.03.05
Оценка качества создания сайта





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский