Socket.Gaierror behoben: [Errno 8] Knotenname oder Servname angegeben oder in Python nicht bekannt
-
Erstellen Sie
socket.gaierror: [Errno 8] nodename nor servname provided, or not known
in Python neu -
Fix
socket.gaierror: [Errno 8] nodename nor servname provided, or not known
in Python
Das socket
-Modul in Python bietet eine Schnittstelle zur Berkeley-Sockets-API. Sockets helfen dabei, zwei Knoten in einem Netzwerk zu verbinden, damit sie miteinander kommunizieren können.
Manchmal erhalten Sie in Python einen Socket-Fehler
, wenn Sie mit socket
-Modulen arbeiten. In diesem Tutorial lernen Sie, diesen Fehler in Python zu beheben.
Erstellen Sie socket.gaierror: [Errno 8] nodename nor servname provided, or not known
in Python neu
Hier werden wir den socket.gaierror
neu erstellen und erklären, wie man ihn in Python löst.
Das folgende Skript ist ein Server, der darauf wartet, dass ein Client eine Verbindung zum angegebenen Port herstellt.
import socket
s = socket.socket()
host = "localhost"
port = 1234
s.bind((host, port))
s.listen(5)
while True:
c, addr = s.accept()
print("Connection received from", addr)
c.send("Thank you for connecting")
c.close()
Die Funktion socket.socket()
erstellt ein Socket-Objekt und die Funktion socket.bind()
bindet den Socket an die angegebene Adresse.
socket.accept()
akzeptiert die Verbindung, wenn sich ein Client verbindet. Wenn die Verbindung erfolgreich ist, gibt es die Ausgabe zurück und schließt die Verbindung.
Unten ist ein Client, der sich mit dem angegebenen Host verbindet.
import socket
s = socket.socket()
host = socket.gethostname()
port = 1234
s.connect((host, port))
print(s.recv(1024))
s.close
Führen Sie nun im Hintergrund server.py
und als nächstes client.py
aus.
python server.py &
python client.py
Ausgang:
Fix socket.gaierror: [Errno 8] nodename nor servname provided, or not known
in Python
Die Ausgabe zeigt, dass der Fehler in Zeile 7 aufgetreten ist, wo der Code s.connect((host, port))
lautet. Das liegt daran, dass socket.gethostname()
den Hostnamen der Maschine zurückgibt, auf der der Python-Interpreter gerade läuft.
Anstelle des Hostnamens müssen Sie jedoch die Host-IP-Adresse angeben. Sie können dieses Problem lösen, indem Sie in der Datei client.py
den host
als localhost
oder 127.0.0.1
zuweisen.
import socket
s = socket.socket()
host = "localhost"
port = 1234
s.connect((host, port))
print(s.recv(1024))
s.close
Ausgang:
Jetzt wissen wir, wie man den socket error
in Python behebt. Wir hoffen, dass Sie dieses Tutorial hilfreich finden.
Verwandter Artikel - Python Error
- Adresse wird bereits verwendet Fehler in Python
- AttributeError: __Exit__ in Python
- AttributeError: 'Dict'-Objekt hat kein Attribut 'Append' in Python
- AttributeError: 'NoneType'-Objekt hat kein Attribut 'Text' in Python
- AttributeError: Int-Objekt hat kein Attribut
- AttributeError: Modul Urllib hat keine Attributanforderung