Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.06.17;
Скачать: CL | DM;

Вниз

Альтернатива ReplyStatus в Indy 10   Найти похожие ветки 

 
progmax ©   (2006-10-24 09:48) [0]

Когда-то писал пинговалку, используя компонент TIdIcmpClient:

function ping: string;
begin
IdIcmpClient1.Host:="192.168.2.1";
IdIcmpClient1.Ping;
if IdIcmpClient1.ReplyStatus.BytesReceived = 0 then rezult:="connect"s off";
end;

Недавно поставил себе 10 версию Indy а в нем ReplyStatus.BytesReceived нету.
Подскажите пожалуйста, как организавать данную функцию на Indy 10?


 
Орион ©   (2006-10-24 09:55) [1]

событие OnReply

procedure TForm1.IdIcmpClient1Reply(ASender: TComponent;
 const AReplyStatus: TReplyStatus);
begin
  MessageDlg(IntToStr(AReplyStatus.BytesReceived), mtCustom, [mbOK], 0);
end;


 
Орион ©   (2006-10-24 09:56) [2]

хотя стоп! как это нету ReplyStatus.BytesReceived?
У меня все есть :)

"Это не правильные пчелы, и они делают неправильный мед" (с)


 
progmax ©   (2006-10-24 12:50) [3]

Мне нужно пингануть удаленный компьютер в консольном приложении. Я думал в модулях прописать IdIcmpClient и использовать этот компонент, но по какой-то причине у меня нету метода ReplyStatus.
Подскажите пожалуйста, может можно пингануть удаленный хост каким-то другим способом, более удобным для моего случая?


 
Орион ©   (2006-10-24 15:07) [4]

> [3] progmax ©   (24.10.06 12:50)

можно.

function IcmpPCreateFile: THandle; stdcall; external "ICMP.dll" name "IcmpCreateFile";

function IcmpCloseHandle(ICMPHandle: THandle): Boolean; stdcall; external "ICMP.dll" name "IcmpCloseHandle";

function IcmpSendEcho(ICMPHandle: THandle; DestAddress: Longint; RequestData: Pointer; RequestSize: Word; RequestOptns, ReplyBuffer: Pointer; ReplySize, Timeout: DWord): DWord; stdcall; external "ICMP.dll" name "IcmpSendEcho";


+ MSDN


 
Орион ©   (2006-10-24 15:10) [5]

 TIcmpEcho = record
   Source,
   Status,
   RTTime: Longint;
   DataSize: Shortint;
   Reserved: Shortint;
   Data: Pointer;
   IPInfo: TIPInfo;
 end;

 TIPInfo = record
   TTL,
   TOS,
   IPFlags,
   OptSize: Byte;
   Options: Pointer;
 end;

function ExecutePing(IP: string): DWord;
var
 IcmpEcho: TIcmpEcho;
 IcmpFile: THandle;
 IPInfo: TIPInfo;
begin
 IcmpFile:=IcmpCreateFile;
 IPInfo.TTL:=TTL;
 with IPInfo do
 begin
  TOS:=0;
  IPFlags:=0;
  OptSize:=0;
  Options:=nil;
 end;
 Result:=IcmpSendEcho(IcmpFile, inet_addr(PChar(IP)), nil, 0, @IPInfo, @IcmpEcho, SizeOf(TIcmpEcho), DWord(WaitInterval));
 if not IsWinNT then IcmpCloseHandle(IcmpFile);


Код я писал очень, очень давно. Поэтосу он ужасный :)


 
корешь   (2006-11-28 21:37) [6]


> Недавно поставил себе 10 версию Indy а в нем ReplyStatus.
> BytesReceived нету.

Это не самое страшное в нем нет свойства TTL, а как без него построить путь до заданного хоста?



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

Текущий архив: 2007.06.17;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.017 c
8-1159820586
Чайник
2006-10-03 00:23
2007.06.17
Как очистить TImage от ранее загруженного изображения?


1-1176899250
webpauk
2007-04-18 16:27
2007.06.17
размер иконок


2-1179901879
Leta
2007-05-23 10:31
2007.06.17
Выполнить строку


9-1151275884
Goo
2006-06-26 02:51
2007.06.17
Rotate


2-1179993652
roughneck
2007-05-24 12:00
2007.06.17
DLL + MDI окна