IdIcmpClient - komenda PING

problemy z tworzeniem programów do obsługi sieci, internetu, e-mail itp..

IdIcmpClient - komenda PING

Nowy postprzez czakll » niedziela, 10 sierpnia 2008, 01:33

Witam, napisalem maly programik do pingowania hostow. Uzylem komponentu IdIcmpClient, podalem adres hosta (w object managerze) i na button1 funkcje Ping(). Niby wszystko ladnie pieknie ale pingi podawane przez AReplyStatus.MsRoundTripTime sa niemal zupelnie inne niz czasy systemowego polecenia ping. Co robie zle?
Avatar użytkownika
czakll
Bladawiec
Bladawiec
 
Posty: 6
Dołączył(a): piątek, 8 sierpnia 2008, 12:30
PodziÄ™kowaÅ‚ : 0
OtrzymaÅ‚ podziÄ™kowaÅ„: 0
    NieznanyNieznana

Re: IdIcmpClient - pytanie

Nowy postprzez Cyfrowy Baron » niedziela, 10 sierpnia 2008, 08:23

Nie wiem jak to robisz, bo kodu przecież nie podałeś, ale ja z wykorzystaniem komponentu TIdIcmpClient uzyskuję czasy takie same jak z wykorzystaniem programu Ping:

Kod: Zaznacz cały
void __fastcall TForm1::Button1Click(TObject *Sender)
{
IdIcmpClient1->Host="cyfbar.republika.pl";
for(int i = 0; i < 4; i++)
{
  unsigned t = GetTickCount();
  IdIcmpClient1->Ping("", 0);
  ListBox1->Items->Add("czas = " + (String)(GetTickCount() -t) + " ms");
  Application->ProcessMessages();
}
}


Można to wszystko oczywiście bardziej rozbudować:

Kod: Zaznacz cały
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
IdIcmpClient1->ReceiveTimeout = 2000;
IdIcmpClient1->Host = "cyfbar.republika.pl";
for(int i = 0; i < 4; i++)
{
  IdIcmpClient1->Ping("50", 52);
  Application->ProcessMessages();
}
}
//---------------------------------------------------------------------------

void __fastcall TForm1::IdIcmpClient1Reply(TComponent *ASender,
     const TReplyStatus &AReplyStatus)
{
  String sTime = "=";
  if (AReplyStatus.MsRoundTripTime == 0) sTime = "<1";

  ListBox1->Items->Add(
                  IntToStr(AReplyStatus.BytesReceived) +  " bajtów z "
                  + AReplyStatus.FromIpAddress +
                  ": Sequence ID = " + IntToStr(AReplyStatus.SequenceId)
                  + " TTL=" + IntToStr(AReplyStatus.TimeToLive) +
                  " Time" + sTime + IntToStr(AReplyStatus.MsRoundTripTime)
                 + "ms");
}
//---------------------------------------------------------------------------


Avatar użytkownika
Cyfrowy Baron
Administrator
Administrator
 
Posty: 4716
Dołączył(a): niedziela, 13 lipca 2008, 15:17
PodziÄ™kowaÅ‚ : 12
OtrzymaÅ‚ podziÄ™kowaÅ„: 442
System operacyjny: Windows 7 x64 SP1
Kompilator: Embarcadero RAD Studio XE2
C++ Builder XE2 Update 4
SKYPE: cyfbar
Gadu Gadu: 0
    NieznanyNieznana


  • Podobne tematy
    Odpowiedzi
    Wyświetlone
    Ostatni post

Powrót do Aplikacje sieciowe

Kto przeglÄ…da forum

Użytkownicy przeglądający ten dział: Brak zalogowanych użytkowników i 5 gości

cron