Socket.Gaierror behoben: [Errno 8] Knotenname oder Servname angegeben oder in Python nicht bekannt

Rohan Timalsina 15 Februar 2024
  1. Erstellen Sie socket.gaierror: [Errno 8] nodename nor servname provided, or not known in Python neu
  2. Fix socket.gaierror: [Errno 8] nodename nor servname provided, or not known in Python
Socket.Gaierror behoben: [Errno 8] Knotenname oder Servname angegeben oder in Python nicht bekannt

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:

Socket-Fehler

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:

Socket-Fehler behoben - Verbindung erfolgreich

Jetzt wissen wir, wie man den socket error in Python behebt. Wir hoffen, dass Sie dieses Tutorial hilfreich finden.

Rohan Timalsina avatar Rohan Timalsina avatar

Rohan is a learner, problem solver, and web developer. He loves to write and share his understanding.

LinkedIn Website

Verwandter Artikel - Python Error