Autor Beitrag
Narses Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Administrator
Beiträge: 10102
Erhaltene Danke: 1212

W2k .. W7pro .. W10ent
TP3 .. D7pro .. D10.2CE
BeitragVerfasst: Do 08.09.11 22:29 
Moin und :welcome: in der Entwickler-Ecke!

user profile iconShyran hat folgendes geschrieben Zum zitierten Posting springen:
(selber unter Delphi XE kompiliert) und beim simplen Ping auf "localhost" (Vista) bekomme ich

"localhost -> Systemfehler: WSANO_DATA"
Die Unit stammte noch aus prä-unicode Zeiten und hatte deshalb ein Problem mit Hostnamen-Strings. Habe ich behoben, die aktuelle Version (wie immer im ersten Beitrag) hat jetzt keine Probleme mehr damit.

cu
Narses

_________________
There are 10 types of people - those who understand binary and those who don´t.
Shyran
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 20


Rad Studio XE
BeitragVerfasst: Fr 09.09.11 07:56 
Vielen Dank für's Willkommen und: Ich probiere das gleich mal aus und gebe Feedback - bis später!

---Moderiert von user profile iconNarses: Beiträge zusammengefasst---

Da isser wieder ...

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
i:= Ping.Execute('192.168.212.253'500);
case i of
     0: Listbox2.Items.Add('192.168.212.253');//Tu das, Ping war supi
    -1: ;//Mach dies (Timeout)
    -2: ;//Mach was anderes (LastError befummeln)
    end;


Obiger Code tut erstmal und wird nun von mir weiter verwurstet. Meinen Dank für die spontane Hilfe - und noch viel (!) größerer Dank für die eigentliche Arbeit am Wrapper, Narses *verbeug*. Bestimmt komme ich hier nochmal vorbei, sobald ich den asynchronen Ping mal probiere ... Ich ahne da Schwieirgkeiten in der Ausführung.

Grüße

---Moderiert von user profile iconNarses: Beiträge zusammengefasst---

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
for j:=2 to 254 do begin

i:= Ping.Execute('192.168.212.'+IntToStr(j), 500);
case i of
     0: Listbox2.Items.Add('192.168.212.'+IntToStr(j));//Tu das, Ping war supi
    -1: ;//Mach dies (Timeout)
    -2: ;//Mach was anderes (LastError befummeln)
    end;
  end;


Frühstück vorbei, das läuft nun. Ich nehme an, es wäre an dieser Stelle deutlich sinnvoller, die andere Ping-Funktion (asynchrone) zu nutzen, der Aufruf und die Callback Funktion sind mir dabei aber noch unklar, das muss ich zunächst noch verstehen. Obiger Code-Schnippsel liefert mir unbefriedigende Ergebnisse. In meiner Listbox tauchen nur wenige Adressen auf, im eigenen Subnet aber sind deutlich mehr vertreten.

Ein kleiner Schubs in Richtung der Nutzung der ansynchronen Funktion wäre hilfreich für mich.

Danke!
Narses Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Administrator
Beiträge: 10102
Erhaltene Danke: 1212

W2k .. W7pro .. W10ent
TP3 .. D7pro .. D10.2CE
BeitragVerfasst: Fr 09.09.11 12:00 
Moin!

user profile iconShyran hat folgendes geschrieben Zum zitierten Posting springen:
Meinen Dank für die spontane Hilfe - und noch viel (!) größerer Dank für die eigentliche Arbeit am Wrapper, Narses *verbeug*.
:beer: ;)

user profile iconShyran hat folgendes geschrieben Zum zitierten Posting springen:
Ich nehme an, es wäre an dieser Stelle deutlich sinnvoller, die andere Ping-Funktion (asynchrone) zu nutzen,
Jup, dafür ist das gedacht.

user profile iconShyran hat folgendes geschrieben Zum zitierten Posting springen:
der Aufruf und die Callback Funktion sind mir dabei aber noch unklar, das muss ich zunächst noch verstehen.
[...]
Ein kleiner Schubs in Richtung der Nutzung der ansynchronen Funktion wäre hilfreich für mich.
Dazu habe ich die Demo-Anwendung geschrieben, dort wird auch der asynchrone Ping eingesetzt, einfach mal im ersten Beitrag reinsehen. :les: :think:

user profile iconShyran hat folgendes geschrieben Zum zitierten Posting springen:
Obiger Code-Schnippsel liefert mir unbefriedigende Ergebnisse. In meiner Listbox tauchen nur wenige Adressen auf, im eigenen Subnet aber sind deutlich mehr vertreten.
Standard-Timeout sind 1000ms, zum Einen. Zum Anderen gibt es bei massiven Ping-Requests manchmal probleme mit Intrusion-Detection-Systemen, die blocken sowas dann. Auch die sonstige Netzauslastung kann eine Rolle spielen, ICMP-Pakete sind ja wie UDP volatil. :nixweiss:

cu
Narses

_________________
There are 10 types of people - those who understand binary and those who don´t.
Shyran
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 20


Rad Studio XE
BeitragVerfasst: Fr 09.09.11 13:44 
Angeschaut habe ich die Demo selbstverständlich (hatte ja geschrieben, dass ich sie selbst auch compiliert hatte, zum Testen), aber noch "Erfurcht" vor der Anwendung besaß. Nun habe ich mir nach Deinem letzten Beitrag Deine Demo mal vorgenommen ... und möchte - insbesondere auch für die anderen Nutzer und vlt. auch "Anfänger", darstellen, wie ich das nun nutze. Das gehört in diesem Forum bestimmt auch zum guten Ton (bin ja neu).

Also zunächst in den Deklarationen meines Programms hinzu:

ausblenden Delphi-Quelltext
1:
procedure PingResult(Result: TAsyncPingResult);					

Auf Knopfdruck dann wird der Ping auf das Subnet losgelassen:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
procedure TForm2.Button2Click(Sender: TObject);
var i,j,RefID :integer;
begin
RefID:=1;
   for j:=2 to 254 do
   begin
     Ping.ExecuteAsync(RefID,'192.168.212.'+IntToStr(j),PingResult);
   end;
end;


Um dann im Anschluss zu einem kleinen Teil ausgewertet zu werden. Mich interessierte in diesem Fall nur, ob Datensammler an meinem GPRS-Router hingen:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
procedure TForm2.PingResult(Result: TAsyncPingResult);
begin
  if Result.ErrorCode=0 then
    begin
      Listbox2.Items.Add(inet_ntoa(Result.IPv4));
    end;
end;


Begeistert war ich insb. von der Geschwindigkeit, in der meine Listbox sich auffüllte - echt toll!

Nohchmal dickes danke an Narses. Es sieht alles am Ende so einfach aus ...

-Shyran
Enricoffo
Hält's aus hier
Beiträge: 2



BeitragVerfasst: Di 19.11.13 22:57 
Hallo,

ist ja schon eine Weile her, daher meine Frage:
Gibt es schon ein Update der Unit, wo auch IP V6 unterstützt wird?
Narses Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Administrator
Beiträge: 10102
Erhaltene Danke: 1212

W2k .. W7pro .. W10ent
TP3 .. D7pro .. D10.2CE
BeitragVerfasst: Di 19.11.13 23:40 
Moin und :welcome: im Forum!

user profile iconEnricoffo hat folgendes geschrieben Zum zitierten Posting springen:
Gibt es schon ein Update der Unit, wo auch IP V6 unterstützt wird?
Nein, gibt es bisher nicht und habe ich auch (bisher) nicht geplant. :nixweiss:

Aber ist ja open-source, also immer gerne ran an die Buletten. ;)

cu
Narses

_________________
There are 10 types of people - those who understand binary and those who don´t.
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 18718
Erhaltene Danke: 1624

W10 x64 (Chrome, IE11)
Delphi 10.2 Ent, Oxygene, C# (VS 2015), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Sa 10.01.15 07:21 
In der Demo ist übrigens im Formular Position auf poDesktopCenter statt poScreenCenter gesetzt. Mit einer geraden Anzahl von Bildschirmen ist das schlecht, weil das Fenster genau zur Hälfte auf dem einen und zur Hälfte auf dem anderen Monitor ist.
Das beeinträchtigt die Demo nicht, ist aber ja auch leicht zu ändern. ;-)

Nebenbei ist die Demo ein sehr gutes Beispiel für den Bug in Delphi 7 bezüglich des Fensterrahmens. Die angehängte Exe sieht unter XP richtig aus, aber ab Vista nicht mehr... (siehe am rechten und unteren Rahmen)

Delphi7BorderError
Einloggen, um Attachments anzusehen!
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 18718
Erhaltene Danke: 1624

W10 x64 (Chrome, IE11)
Delphi 10.2 Ent, Oxygene, C# (VS 2015), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Fr 16.01.15 09:53 
Hier übrigens eine Lösung für Delphi 7 für das Randproblem:
www.entwickler-ecke....ewtopic.php?p=691804

Für diesen Beitrag haben gedankt: Narses