Nur um es klarzustellen: Ich habe Python vor zwei Wochen gestartet, aber ich bin ein C #, ASP, PHP, JavaScript Entwickler.
Ich habe gerade ein neues Projekt mit Python und PyQt gestartet und möchte, dass mein Projekt ein Server ist, der mit anderen Instanzen dieses Servers auf anderen Computern kommunizieren kann.
Ich muss also die IP-Adresse und den Hostnamen des Computers abrufen.
Zuerst dachte ich über die Verwendung des MSDOS "net view" -Befehls nach, aber das war bevor ich diesen Befehl in meinem Job ausprobierte und sah, dass das ungefähr 15s dauern konnte (was ich für zu langsam halte).
Ich hatte diese Idee von: Ссылка
Der Befehl "net view" kann auch Computer zurückgeben, die sich nicht mehr im Netzwerk befinden und beim Versuch, ihre IP-Adressen nach Hostnamen abzurufen, eine Ausnahme auslösen (wodurch der Prozess jedes Mal verlangsamt wird, wenn auf einen Computer nicht zugegriffen werden kann).
Meine Frage: Gibt es eine Möglichkeit, die IP- und Hostnamen aller Computer im lokalen Netzwerk zu erhalten, ohne dabei net view
unter Windows zu übergeben, weil net view
eine langsame Operation sein könnte?
Gibt es auch eine Möglichkeit, nur Computer zu erhalten, auf denen meine Anwendung ausgeführt wird? (also wäre es schneller)
Vielen Dank im Voraus
Wenn Sie die IP-Adresse des Hosts abrufen möchten, auf dem das Python-Skript ausgeführt wird, ist die Antwort user2096338 der richtige Weg.
Um alle Computer in einem Netzwerk in einem LAN zu finden, können Sie scapy . Ссылка ist ein Link, den ich beim Durchsuchen eines ähnlich SO Frage; die alle Computer in einem Netzwerk (LAN) entdeckt.
Wenn Sie sicherstellen möchten, dass das obige Skript nur die Computer zurückgibt, auf denen der Server ausgeführt wird, gibt es mehrere Möglichkeiten, die nachfolgend in der Reihenfolge der Portabilität aufgeführt sind:
Meiner Meinung nach ist Methode 1 die sicherste und portabelste Methode, da sie das Öffnen unnötiger Ports (wie Methode 3) verhindert, die Sicherheitslücken darstellen (je nachdem, in wessen Kontext Ihr Python-Skript läuft). Es hängt auch nicht von der Verfügbarkeit des WMI-Dienstes auf den Remote-Hosts ab (einige Systeme können WMI deaktiviert haben).
Hoffe das hilft
Für den Hostnamen und die IP-Adresse des Localhost können Sie die Methoden socket module und gethostname sowie gethostbyname verwenden:
%Vor%Tags und Links python windows networking ip-address