Entwickler-Ecke

Internet / Netzwerk - Prüfen, ob ein bestimmter Rechner übers Netzwerk erreichbar


tortom1000 - Fr 18.02.11 16:40
Titel: Prüfen, ob ein bestimmter Rechner übers Netzwerk erreichbar
Hallo,
ich möchte prüfen, ob ein bestimmter Rechner übers Netzwerk erreichbar ist.
Falls nicht, ist egal, warum, er kann also ausgeschaltet sein oder wird gerade neu gestartet
oder Netzwerkkarte ist deaktiviert oder oder oder.

Dazu sind mir zwei Ansätze eingefallen, die mehr oder weniger gut sind:

1. Schreiben einer Datei in eine Freigabe des zu prüfenden Rechners und anschließendes löschen derselben
Nachteil: irgendwie sehr unsaubere Lösung...
Vorteil: Zugriff auf den Rechner ist "verläßlicher" als beim Pingen.

2. Anpingen (mittels Indy-Komponente) und auswerten der übertragenen Bytes -> 0 Bytes -> Rechner nicht verfügbar
Nachteil: Dauert sehr lange bzw. ist die Abfrage sehr langsam, wenn keine Netzwerkverbindung besteht.
Ferner friert dann das Programm zur Laufzeit des Ping ein. Abhilfe wäre wohl, den Ping in einem Thread
laufen zu lassen (ohne lang drüber nachgedacht zu haben...)

Vieleicht weiß jemand eine einfachere und trotzdem zuverlässige Methode dazu oder hat einige Tipps diesbezüglich
parat?

Gruß
Tortom


platzwart - Fr 18.02.11 16:56

Das mit dem Schreiben in eine Datei hat noch viele weitere Nachteile. Du müsstest nämlich sicherstellen, dass du auf den Rechnern entsprechende Schreibrechte hast, musst auf die Kompatibilität der Betriebssysteme achten etc.

Wieso ist das Anpingen 'sehr langsam'? Benötigst du das Ergebnis innerhalb von Millisekunden? Und dass die Anwendung nicht zwangsläufig einfriert, hast du ja schon selbst geschrieben ;)


tortom1000 - Fr 18.02.11 17:02

Das Ergebnis kann ruhig einige sekunden auf sich warten lassen. Ist wohl
eher so'ne Gefühlssache mit der Langsamkeit.

Du würdest also auch die Ping-Methode in einem Thread vorziehen?


Narses - Fr 18.02.11 17:12

Moin!

user profile icontortom1000 hat folgendes geschrieben Zum zitierten Posting springen:
Das Ergebnis kann ruhig einige sekunden auf sich warten lassen. Ist wohl
eher so'ne Gefühlssache mit der Langsamkeit.
Du kannst ja die Timeout-Zeit anpassen. :nixweiss:

user profile icontortom1000 hat folgendes geschrieben Zum zitierten Posting springen:
Du würdest also auch die Ping-Methode in einem Thread vorziehen?
Hier gibt´s das schon als fertige Lösung [http://www.delphi-forum.de/topic_ICMPEchoAPI+quotPingquot+WrapperUnit_53259.html]. :les: ;)

cu
Narses