Главная страница
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.023 c
2-1179820641
RusTim
2007-05-22 11:57
2007.06.17
Как руссифицировать ActionManager


2-1180152633
зыбыл ник(((
2007-05-26 08:10
2007.06.17
самораспоковывающийся архив


2-1179902990
Teru
2007-05-23 10:49
2007.06.17
Скриншот Image


2-1180010845
Цукор5
2007-05-24 16:47
2007.06.17
помогите с запросом


15-1179488147
Дельфинчик
2007-05-18 15:35
2007.06.17
Окошки Виста - кто что думает?