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

Вниз

Ping   Найти похожие ветки 

 
Demonenok   (2006-01-27 07:32) [0]

Привет. Ув. Мастера, помогите, весь рунет облазил(в силе плохого знания анг. языка, не мог остальной проглядеть), нигде не смог найти, примеры пинга сервера, мне нужно, что бы программа пинговала сервер, если пинг проходит, ф-ция возвращала true, иначе false. помогите пожалуйсто, как это реализовать.


 
Ezorcist   (2006-01-27 07:35) [1]

пинг проходит всмысле? пинг возвращает не boolean, а время в мс. Ну какое время тебя устраивает решай сам)

unit Unit1;

interface

uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
winsock, StdCtrls;

type
IPINFO = record
Ttl :char;
Tos :char;
IPFlags :char;
OptSize :char;
Options :^char;
end;

type
ICMPECHO = record
Source :longint;
Status :longint;
RTTime :longint;
DataSize:Shortint;
Reserved:Shortint;
pData :^variant;
i_ipinfo:IPINFO;
end;

TIcmpCreateFile =
 function():integer; {$IFDEF WIN32} stdcall; {$ENDIF}
TIcmpCloseHandle =
 procedure(var handle:integer);{$IFDEF WIN32} stdcall; {$ENDIF}
TIcmpSendEcho =
 function(var handle:integer; endereco:DWORD; buffer:variant;
 tam:WORD; IP:IPINFO; ICMP:ICMPECHO; tamicmp:DWORD;
 tempo:DWORD):DWORD;{$IFDEF WIN32} stdcall; {$ENDIF}

type
TForm1 = class(TForm)
Button1: TButton;
Button2: TButton;
Edit1: TEdit;
Memo1: TMemo;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
{ Private declarations }
public

end;

var
Form1: TForm1;

implementation

{$R *.DFM}

procedure TForm1.Button1Click(Sender: TObject);
var
wsadt : wsadata;
icmp :icmpecho;
HNDicmp : integer;
hndFile :integer;
Host :PHostEnt;
Destino :in_addr;
Endereco :^DWORD;
IP : ipinfo;
Retorno :integer;
dwRetorno :DWORD;
x :integer;

IcmpCreateFile : TIcmpCreateFile;
IcmpCloseHandle : TIcmpCloseHandle;
IcmpSendEcho : TIcmpSendEcho;

begin
if (edit1.Text = "") then begin
Application.MessageBox("Digite um HostName ou um End. IP",
"Error", MB_OK);
exit;
end;
HNDicmp := LoadLibrary("ICMP.DLL");
if (HNDicmp <> 0) then begin
@IcmpCreateFile := GetProcAddress(HNDicmp,"IcmpCreateFile");
@IcmpCloseHandle := GetProcAddress(HNDicmp,"IcmpCloseHandle");
@IcmpSendEcho := GetProcAddress(HNDicmp,"IcmpSendEcho");
if (@IcmpCreateFile=nil) or (@IcmpCloseHandle=nil) or
  (@IcmpSendEcho=nil) then begin
Application.MessageBox("Erro pegando endereзos ICMP","Error", MB_OK);
FreeLibrary(HNDicmp);
end;
end;
Retorno := WSAStartup($0101,wsadt);

if (Retorno <> 0) then begin
Application.MessageBox("Nгo foi possнvel carregar WinSockets",
   "WSAStartup",MB_OK);
WSACleanup();
FreeLibrary(HNDicmp);
end;

Destino.S_addr := inet_addr(Pchar(Edit1.text));
if (Destino.S_addr = 0) then begin
Host := GetHostbyName(PChar(Edit1.text));
end
else begin
Host := GetHostbyAddr(@Destino,sizeof(in_addr), AF_INET);
end;

if (host = nil) then begin
Application.MessageBox("Host nгo encontrado","Error", MB_OK);
WSACleanup();
FreeLibrary(HNDicmp);
exit;
end;
memo1.Lines.Add("Pinging " + Edit1.text);

Endereco := @Host.h_addr_list;

HNDFile := IcmpCreateFile();
for x:= 0 to 4 do begin
Ip.Ttl := char(255);
Ip.Tos := char(0);
Ip.IPFlags := char(0);
Ip.OptSize := char(0);
Ip.Options := nil;

dwRetorno := IcmpSendEcho(
HNDFile,
Endereco^,
null,
0,
Ip,
Icmp,
sizeof(Icmp),
DWORD(5000));
Destino.S_addr := icmp.source;
Memo1.Lines.Add("Pingou " + Edit1.text);
end;

IcmpCLoseHandle(HNDFile);
FreeLibrary(HNDicmp);
WSACleanup();
end;

end.


 
CyMKuH ©   (2006-01-28 13:33) [2]

Есть библиотека компанентов ICS, вот там есть компанентик Ping!


 
sniknik ©   (2006-01-28 15:26) [3]

он есть и в indy, стандартном сейчас, зачем далеко ходить... только там не компонентом а свойством оформлено какогото информационного комтанента... но какая разница?


 
Demonenok   (2006-01-30 00:19) [4]

Ezorcist   (27.01.06 07:35) [1]
Неработает =( Выдаёт ошибку.

CyMKuH ©   (28.01.06 13:33) [2]
А подробнее? Где слить библиотеку, как юзать?

sniknik ©   (28.01.06 15:26) [3]
Как его использовать? Как он работает?

Спасибо за ответы %)


 
Demonenok   (2006-01-31 12:16) [5]

Ezorcist   (27.01.06 07:35) [1]

<...>
null,
0,
Ip,
Icmp,
<...>

Тут ошибка.



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

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

Наверх




Память: 0.46 MB
Время: 0.078 c
15-1138382833
Ермак
2006-01-27 20:27
2006.02.19
Американский экономист Л. Ларуш: "Россиянам нужно спасать нацию"


2-1138877410
Паша_
2006-02-02 13:50
2006.02.19
Как узнать какие threads запущены?


2-1138793071
sergeii
2006-02-01 14:24
2006.02.19
Label ?


10-1113541861
12345
2005-04-15 09:11
2006.02.19
Связь м/у CoInitializeEx и OpenDialog?


2-1138464386
TeNbOK
2006-01-28 19:06
2006.02.19
Как выбрать соответствие свойству Text в списке Combobox?





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