Delphi-PRAXiS
Seite 1 von 4  1 23     Letzte »    

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi Ping und Daten Verwerten (https://www.delphipraxis.net/118235-ping-und-daten-verwerten.html)

gasty 3. Aug 2008 17:59


Ping und Daten Verwerten
 
Also Hallo erstmal :D
Mein Problem ist dieses:
Ich bin relativ neu in Delphi, lern erst seit nem halben Jahr und das auch nur in der Schule, also Basics hab ich relativ gut drauf aber mehr auch net ^^

Also ich möchte eine Adresse anpingen und dann ein grünes oder ein rotes Bild anzeigen (je nach dem ob ping funktioniert hat oder nicht)


Also ich könnte mir vorstellen dass es ungefähr so werden wird:

Delphi-Quellcode:
"ping adresse"
if ping = true then shape1.color := cl_Green;
else shape1.color := cl_Red;
Aber ich hab keine Ahnung wie ich das mit dem Ping umsetzen soll. Das mit dem Rot/Grün weiß ich :P


Freue mich über jede Art von Hilfe :D

hboy 3. Aug 2008 18:50

Re: Ping und Daten Verwerten
 
Liste der Anhänge anzeigen (Anzahl: 1)
Ich hab schonmal was dazu gefunden ( ping und trace siehe Anhang )

gasty 3. Aug 2008 18:53

Re: Ping und Daten Verwerten
 
So und wie benutz ich das? :P
Also wenn ich das so anschau denk ich irgendwie in das Projekt einbeziehen und dann ICMPPing als wert für das grün bzw rote fenster benutzen.
Aber es wäre nett wenn du mir erklärst wie ich das genau mache :D

hboy 3. Aug 2008 19:01

Re: Ping und Daten Verwerten
 
Hi,

bisher habe ich nur trace gebraucht und das geht mit


Zitat:

procedure TraceCallback(hop, ip: dword; rtt: integer); stdcall;
var s :string;
begin
if rtt = -1 then s := '*' else s := inttostr(rtt);
if s = '*'
then form1.memo1.lines.add('#'+inttostr(hop) + ' * -- ' + inet_ntoa(in_addr(ip)))
else form1.memo1.lines.add('#'+inttostr(hop) + ': ' + s + 'ms -- ' + inet_ntoa(in_addr(ip)));
application.processmessages;
end;

tracert(dnsnametoip(param),TraceCallback,30);
Ping ist noch einfacher, da musst du nur die einzelnen Bytes der IP in ein DWORD packen.

Delphi-Quellcode:
procedure TForm1.irgendwas(Sender :TObject);
var
  ip: DWORD;
  var b: Array[0..3] of Byte absolute ip;
  ping : Boolean;
begin
  b[3] := 192; b[2] := 168; b[1] := 0; b[0] := 1;
  ping := ICMPPing(ip);
end;

gasty 3. Aug 2008 19:16

Re: Ping und Daten Verwerten
 
Kann ich mit dem Programm auch DNS-Adressen anpingen?
Und wie benutz ich dann den Ping um das Shape entsprechend zu färben?

helgew 3. Aug 2008 19:54

Re: Ping und Daten Verwerten
 
Dazu brauchst du ein Ereignis, entweder ein Timer-Event oder ein ButtonClick, um etwas zu machen. Setze einfach einen Timer in dein Formular und doppelklicke drauf, dann solltest du in ´TForm1.Timer1Timer(Sender:TObject) landen, welches dann der Form nach meinem obigen Beispiel folgt und nachdem du den Boolean zugewiesen hast, kommt dein Codeschnippel

gasty 4. Aug 2008 13:12

Re: Ping und Daten Verwerten
 
also ich habe vor über einen Button eine Liste von adressen zu checken, ob diese erreichbar sind.
also
"button click"
"ping adresse1" if ping = true then shape1.color := cl_green;
else shape1.color := cl_red;
"ping adresse2" ... usw.

Und wie kann ich damit dns adressen anpingen?
und wie kann ich die .pas datei überhaupt in mein Projekt einbinden?

gasty 4. Aug 2008 16:54

Re: Ping und Daten Verwerten
 
Also ich hab jetzt bei Delphi "Projekt - Dem Projekt hinzufügen" gemacht und die trace.pas hinzugefügt, dann testweise versucht einen ping auf button-click zu programmieren.

Delphi-Quellcode:
procedure TForm1.Button7Click(Sender: TObject);
var
  ip: DWORD;
  var b: Array[0..3] of Byte absolute ip;
  ping : Boolean;
begin
  b[3] := 127; b[2] := 0; b[1] := 0; b[0] := 1;
  ping := ICMPPing(ip);
  if ping = true then shape1.brush.color := clgreen
  else shape1.brush.color := clred;
end;
Aber es kommt immer dieser Error:
Zitat:

[Fehler] Unit1.pas(115): Undefinierter Bezeichner: 'ICMPPing'
Ok, habe diesen Fehler gelöst :P
hab einfach bei uses trace hingeschrieben, aber jetz bleibt immernoch die eine große frage:
Wie kann ich DNS-Adressen anpingen? :D

Danke schonmal an alle die bisher geholfen haben :P

//Edit: Noch ne Frage:
Also ich hab es jetzt mit vielen if gemacht und würde gerne wissen ob es nicht besser geht, da ich das irgendwie nicht so schön finde. (Hab schon mit case probiert, geht aber irgendwie nicht)
Aber das komische ist, er zeigt immer rot an, obwohl die adresse erreichbar ist. (router-ip)
Wahrscheinlicht liegt der Fehler wieder an mir also poste ich mal den quelltext ;D
Delphi-Quellcode:
procedure TForm1.Button7Click(Sender: TObject);
var
  ip: DWORD;
  var b: Array[0..3] of Byte absolute ip;
  ping : Boolean;
begin
  x := 1;
  if x = 1 then
    begin
      b[3] := 192; b[2] := 168; b[1] := 2; b[0] := 1;
      ping := ICMPPing(ip);
      if ping = true then shape1.brush.color := cllime
      else shape1.brush.color := clred;
      x := 2;
    end;
  if x = 2 then
    begin
      b[3] := 192; b[2] := 168; b[1] := 2; b[0] := 1;
      ping := ICMPPing(ip);
      if ping = true then shape2.brush.color := cllime
      else shape2.brush.color := clred;
      x := 3;
    end;
  if x = 3 then
    begin
      b[3] := 192; b[2] := 168; b[1] := 2; b[0] := 1;
      ping := ICMPPing(ip);
      if ping = true then shape3.brush.color := cllime
      else shape3.brush.color := clred;
      x := 4;
    end;
  if x = 4 then
    begin
      b[3] := 192; b[2] := 168; b[1] := 2; b[0] := 1;
      ping := ICMPPing(ip);
      if ping = true then shape4.brush.color := cllime
      else shape4.brush.color := clred;
      x := 5;
    end;
  if x = 5 then
    begin
      b[3] := 192; b[2] := 168; b[1] := 2; b[0] := 1;
      ping := ICMPPing(ip);
      if ping = true then shape5.brush.color := cllime
      else shape5.brush.color := clred;
      x := 0;
    end;
end;


Also die 2 großen Fragen:
Wie pinge ich DNS-Adressen?
und
Wie funkioniert das richtig, da ich das Gefühl hab, ich hab in dem Quelltext etwas falsch gemacht?

xSkaschY 4. Aug 2008 19:09

Re: Ping und Daten Verwerten
 
Mal ne Frage, was soll der unnötige If-Abfragen kram?

Code:
x = 1
if x = 1 then...

x = 2
if x = 2 then...

usw.


DNS -> schau dir mal LookupHostName an.

//


Alternativ: Indy!

gasty 4. Aug 2008 19:19

Re: Ping und Daten Verwerten
 
ich will ja mehrere adressen abfragen, ich hab jetz im beispiel nur eine genommen um zu testen ob der ping geht, was aber auch nicht der fall ist
und mich stören die vielen if-abfragen auch aber wie kann ich das besser umsetzen? mit case färbt sich nur das erste kästchen.

Ich hab jetz auch Indy, aber keine Ahnung wie ich das benutzen kann.
Ich denke mal es hat was mit der IdICMPClient Kompo zu tun für das pingen und IdDNSResolve um DNS-Adressen aufzulösen.
Nun habe ich aber wie gesagt keine Ahnung was ich mit diesen Kompos machen soll.


Alle Zeitangaben in WEZ +1. Es ist jetzt 13:56 Uhr.
Seite 1 von 4  1 23     Letzte »    

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz