Форум: "Сети";
Текущий архив: 2007.06.17;
Скачать: [xml.tar.bz2];
ВнизАльтернатива 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;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.043 c