AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Delphi Ping und Daten Verwerten

Ping und Daten Verwerten

Ein Thema von gasty · begonnen am 3. Aug 2008 · letzter Beitrag vom 5. Aug 2008
Antwort Antwort
Seite 2 von 4     12 34   
gasty

Registriert seit: 14. Nov 2007
Ort: Nidderau
80 Beiträge
 
Delphi 7 Enterprise
 
#11

Re: Ping und Daten Verwerten

  Alt 5. Aug 2008, 12:51
Also ich habe jetz eine Lösung gefunden Aber wieder ein neues Problem
Der Ping an sich funktioniert, aber es dauert ziemlich lange.
Ich habe den ping code jetz so geändert:
Delphi-Quellcode:
  if x = 1 then
    begin
      host:='www.google.de';
      code := ping(host,hopcount,rtt,ipad);
      if code = 0 then begin // ping kam an
        shape1.Brush.color := cllime;
      end else shape1.Brush.color := clred;
      x := 2;
    end;
  if x = 2 then
    begin
      host:='www.microsoft.com';
      code := ping(host,hopcount,rtt,ipad);
      if code = 0 then begin // ping kam an
        shape2.Brush.color := cllime;
      end else shape2.Brush.color := clred;
      x := 3;
    end;
usw.
Und wie gesagt der Ping an sich funktioniert, aber es dauert zu lange finde ich, kann ich das irgendwie beschleunigen?
Es sind 5 Pings und er braucht ca. 40 sek das finde ich zu lange, am inet kanns net liegen, hab DSL 16k
  Mit Zitat antworten Zitat
Kalfany

Registriert seit: 28. Feb 2008
Ort: München
153 Beiträge
 
Delphi 2007 Professional
 
#12

Re: Ping und Daten Verwerten

  Alt 5. Aug 2008, 14:07
wieso machst du überhaupt diese if verschachtelung, denn so wie dus hast werden die eh alle abgearbeitet

Delphi-Quellcode:
host:='www.google.de';
code := ping(host,hopcount,rtt,ipad);
if code = 0 then begin // ping kam an
  shape1.Brush.color := cllime;
end else
  shape1.Brush.color := clred;

host:='www.microsoft.com';
code := ping(host,hopcount,rtt,ipad);
if code = 0 then begin // ping kam an
  shape2.Brush.color := cllime;
end else
  shape2.Brush.color := clred;
usw...
so gehts doch auch oder nicht? und wenn du alle deine brushes vorher rot machst dann kannst du dir den else teil auch sparen.

5 pings gesammt oder 5 pings pro adresse?
  Mit Zitat antworten Zitat
gasty

Registriert seit: 14. Nov 2007
Ort: Nidderau
80 Beiträge
 
Delphi 7 Enterprise
 
#13

Re: Ping und Daten Verwerten

  Alt 5. Aug 2008, 14:17
5 pings insgesamt, also 5 adressen die angepingt werden.
Ich werds mal ohne das if probieren.

geht auch, aber es ist immernoch zu langsam, kann man das irgendwie optimieren? oder geht es vielleicht mit indy schneller? aber ich hab keine ahnung wie ich mit indy pingen kann.
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.534 Beiträge
 
Delphi 11 Alexandria
 
#14

Re: Ping und Daten Verwerten

  Alt 5. Aug 2008, 14:26
Das Protokoll für Ping heißt ICMP, schau da mal in den Indys nach . Außerdem könnte man Deinen Code noch ein wenig kürzen:
Delphi-Quellcode:
const sAdresses: array[0..4] of string = ('www.microsoft.de',
                                          'www.google.de',
                                          'www.delphipraxis.net',
                                          'german-bash.org',
                                          'www.sourceforge.net');
var i: integer;
    aShapes: array[0..4] of TShape;
begin
  aShapes[0] := Shape1;
  aShapes[1] := Shape2;
  aShapes[2] := Shape3;
  aShapes[3] := Shape4;
  aShapes[4] := Shape5;
  for i := 0 to 4 do
    if ping(sAdresses[i]) then
      aShapes[i].Brush.Color := clRed;
end;
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
gasty

Registriert seit: 14. Nov 2007
Ort: Nidderau
80 Beiträge
 
Delphi 7 Enterprise
 
#15

Re: Ping und Daten Verwerten

  Alt 5. Aug 2008, 14:35
Also das es mit der ICMP Kompo was zu tun hat hab ich mir gedacht ^^
Aber wie benutze ich die denn?
Also bei Host kann man ja den namen eintragen, aber wie pingt man den dann an?
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.534 Beiträge
 
Delphi 11 Alexandria
 
#16

Re: Ping und Daten Verwerten

  Alt 5. Aug 2008, 15:00
Ich habe in der Firma leider kein Indy zur Verfügung. Wirf zur Not mal einen Blick in die Demos oder schau einfach mal, ob es eine Methode "Ping", "Execute" oder so gibt.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
gasty

Registriert seit: 14. Nov 2007
Ort: Nidderau
80 Beiträge
 
Delphi 7 Enterprise
 
#17

Re: Ping und Daten Verwerten

  Alt 5. Aug 2008, 15:07
Also wenn ich ein icmp-client draufsetze und versuche das programm zu starten kommt immer ein Error - Bild angehängt.
Ich habe noch nichts verändert, nur den client auf die form gesetzt und versucht zu starten, brauch ich vielleicht noch etwas anderes als diese eine kompo?
Miniaturansicht angehängter Grafiken
error_869.jpg  
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.534 Beiträge
 
Delphi 11 Alexandria
 
#18

Re: Ping und Daten Verwerten

  Alt 5. Aug 2008, 15:09
Da scheint irgend etwas mit Deinen Indies nicht zu stimmen. Hast Du unterschiedliche Versionen installiert?
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
gasty

Registriert seit: 14. Nov 2007
Ort: Nidderau
80 Beiträge
 
Delphi 7 Enterprise
 
#19

Re: Ping und Daten Verwerten

  Alt 5. Aug 2008, 15:16
Eigentlich habe ich nur die 10er installiert. Am besten installier ich es nochma neu.
Und geht es eigentlich mit indy schneller als mit dem code den ich habe? wenn nicht kann ichs mir ja eigentlich sparen
Aber 30-40sec für 5 pings find ich viel zu lang, so max. 10sec sollte es dauern.

Ahja btw, hier die funktion vom ping, vlt kann man da irgendwo timeout zeit einstellen oder so?
ich blick da nicht so ganz durch.

Delphi-Quellcode:
function GetRTTAndHopCount(DestIpAddress:DWORD; HopCount :pointer; MaxHops: DWORD;
    RTT : pointer):boolean; stdcall; external 'iphlpapi.dll';

function ping(host:string; var hopCount, RTT:DWORD; var ipAd:string):DWORD;

// by retnyg
// returns 0 is successfully, otherwise errorcode
// overwrites values hopcount, rtt, and ipad
// hopcount: number of hops
// rtt: roundtrip time
// ipAd: numerical ip-value, if used with a hostname
  function GetIPAddress(const HostName: string): string;
  var
    R: Integer;
    WSAData: TWSAData;
    HostEnt: PHostEnt;
    Host: string;
    SockAddr: TSockAddrIn;
  begin
    Result := '';
    R := WSAStartup($0101, WSAData);
    if R = 0 then
      try
        Host := HostName;
        if Host = 'then
        begin
          SetLength(Host, MAX_PATH);
          GetHostName(@Host[1], MAX_PATH);
        end;
        HostEnt := GetHostByName(@Host[1]);
        if HostEnt <> nil then
        begin
          SockAddr.sin_addr.S_addr := Longint(PLongint(HostEnt^.h_addr_list^)^);
          Result := inet_ntoa(SockAddr.sin_addr);
        end;
      finally
        WSACleanup;
      end;
  end;

var ip: DWORD;
begin
  result:=0;
  hopCount:=0;
  RTT:=0;
  ipAd := GetIPAddress(host);
  ip := inet_addr(@ipAd[1]);
  if not GetRTTAndHopCount(ip, @hopCount, 30, @RTT) then result:=GetLastError;
end;
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.534 Beiträge
 
Delphi 11 Alexandria
 
#20

Re: Ping und Daten Verwerten

  Alt 5. Aug 2008, 15:41
Ich denke schon, dass das mit Indy schneller geht, der Code scheint eher eine Art Traceroute durchzuführen (wozu sonst Hopcount?).
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:39 Uhr.
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