Toon posts:

[delphi] ping voor actieve pc's in LAN

Pagina: 1
Acties:
  • 119 views sinds 30-01-2008
  • Reageer

Verwijderd

Topicstarter
Ik heb een programma dat tekst (gebaseerd op net send) verstuurt naar een pc in mijn lan. Nu wil ik kunnen zien in dat programma of die pc wel aanstaat. Dus wil ik een ping naar die pc versturen (dit programma is niet actief op de andere pc -> maakt dat uit?)

Het ip adres van een pc is bv.192.168.0.3

Nu ga ik daar het indy component idICMPClient voor gebruiken. Maar ik weet eigenlijk niet goed hoe ik moet beginnen.

Het programma moet ongeveer doen zoals hieronder:
code:
1
2
3
4
5
6
7
8
9
10
procedure TForm1.IdIcmpClient1Reply(ASender: TComponent;
  const AReplyStatus: TReplyStatus);
begin
  
  if (ping = returned) then begin
    label1.caption := ('PC 1 is online');
  end else begin
    label1.caption := ('PC 1 is offline');

end;

Hoe kan ik dit in de juiste statements implementeren in het programma?

Bij voorbaat dank ;)

  • elnino
  • Registratie: Augustus 2001
  • Laatst online: 03-09 05:13
Ik heb niet echt veel verstand van Delphi, maar ik denk dat je het beste kunt kijken in de documentatie van dat Indy-component en zoeken naar voorbeelden van het Ping-component. Daar vind je ook wat de functies retourneren etc. etc.

Misschien kun je via internet ook wel wat voorbeelden vinden hierover, zoek in Google maar eens op 'delphi idICMPClient'. Dan vind je bovenaan dit (Duitse) voorbeeld: http://www.tutorials.delphi-source.de/indy/file013.shtml.

Succes! :)

Verwijderd

Topicstarter
Ik heb het :)

voor de geïntereseerde:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
procedure TForm4.Timer1Timer(Sender: TObject);
begin
  IdIcmpClient1.OnReply := IdIcmpClient1Reply;
  IdIcmpClient1.ReceiveTimeout := 1000;
  IdIcmpClient1.Host := ('192.168.0.3');
  IdIcmpClient1.Ping;
end;

procedure TForm4.IdIcmpClient1Reply(ASender: TComponent;
  const AReplyStatus: TReplyStatus);
begin
  if (aReplyStatus.BytesReceived > 0) then begin
    form1.richedit1.text := ('aan');
  end else begin
    form1.richedit1.text := ('uit');
  end;
end;

Dit was alles :)

Voor eventuele aanwijzingen of verbeteringen in de code sta ik natuurlijk altijd open.