ConnectionRefusedError: [Errno 111] Verbindung abgelehnt

Zeeshan Afridi 21 Juni 2023
  1. Warum der ConnectionRefusedError: [Errno 111] Connection failed in Python auftritt
  2. So lösen Sie den ConnectionRefusedError: [Errno 111] Verbindung abgelehnt in Python
  3. Abschluss
ConnectionRefusedError: [Errno 111] Verbindung abgelehnt

Dieser Fehler weist darauf hin, dass der Client keine Verbindung zum Port auf dem System des Serverskripts herstellen kann. Da Sie den Server anpingen können, sollte dies nicht der Fall sein.

Dies kann viele Gründe haben, z. B. falsches Routing zum Ziel. Die zweite Möglichkeit besteht darin, dass Sie eine Firewall zwischen Ihrem Client und Server haben, die sich entweder auf dem Server oder auf dem Client befinden kann.

Es sollten keine Router oder Firewalls vorhanden sein, die die Kommunikation stoppen könnten, da sich Server und Client basierend auf Ihren Netzwerkadressen im selben lokalen Netzwerk befinden sollten.

Warum der ConnectionRefusedError: [Errno 111] Connection failed in Python auftritt

Dieser Fehler tritt auf, wenn der Client aufgrund einer ungültigen IP oder eines ungültigen Ports nicht auf den Server zugreifen kann oder wenn die Adresse nicht eindeutig ist und von einem anderen Server verwendet wird.

Der Fehler Verbindung verweigert tritt auch auf, wenn der Server nicht läuft, sodass der Client nicht auf den Server zugreifen kann, da der Server die Verbindung zuerst akzeptieren sollte.

Codebeispiel:

# server code
import socket

s = socket.socket()
host = socket.gethostname()
port = 1717
s.bind((host, port))

s.listen(5)
while True:
    c, addr = s.accept()
    print("Got connection ", addr)
    c.send("Meeting is at 10am")
    c.close()
# client code
import socket

s = socket.socket()
host = "192.168.1.2"
port = 1717

s.connect((host, port))
print(s.recv(1024))
s.close

Ausgang:

socket.error: [Errno 111] Connection refused

So lösen Sie den ConnectionRefusedError: [Errno 111] Verbindung abgelehnt in Python

Versuchen Sie, die Empfangsbuchse so zugänglich wie möglich zu halten. Vielleicht würde die Erreichbarkeit nur auf einer Schnittstelle stattfinden, was das Local Area Network nicht beeinträchtigen würde.

Andererseits kann es vorkommen, dass er ausschließlich auf die Adresse 127.0.0.1 lauscht und Verbindungen von anderen Hosts unmöglich macht.

Codebeispiel:

import socket

s = socket.socket()
host = socket.gethostname()
port = 1717
s.bind(("", port))

s.listen(5)
while True:
    c, addr = s.accept()
    print("Got connection ", addr)
    c.send("The Meeting is at 10 am")
    c.close()
import socket

s = socket.socket()
host = socket.gethostname()
port = 1717
s.bind(("", port))

s.connect((host, port))
print(s.recv(1024))
s.close()

Ausgang:

Got connection('192.168.1.2')
The meeting is at 10 am

Wenn Sie den Befehl python server.py ausführen, erhalten Sie die Meldung Got connection. Gleichzeitig mit dem Ausführen des Befehls python client.py erhalten Sie eine Nachricht vom Server.

Die DNS-Auflösung kann der andere Grund für dieses Problem sein. Da socket.gethostname() den Hostnamen zurückgibt, wird ein Fehler zurückgegeben, wenn das Betriebssystem ihn nicht in eine lokale Adresse übersetzen kann.

Das Linux-Betriebssystem kann die Hostdatei bearbeiten, indem es eine Zeile hinzufügt.

host = socket.gethostname()
port = 1717
s.bind((host, port))

Verwenden Sie gethostbyname

host = socket.gethostbyname("192.168.1.2")
s.bind((host, port))

Daher müssen Sie auf Client- und Serverseite die gleiche Technik verwenden, um auf den Host zuzugreifen. Zum Beispiel würden Sie das oben beschriebene Verfahren im Fall eines Kunden anwenden.

Sie können auch über den lokalen Hostnamen hostnamehost = socket.gethostname() oder den spezifischen Namen für den lokalen Host host = socket.gethostbyname("localhost") zugreifen.

host = socket.gethostname()
s.connect((host, port))
host = socket.gethostbyname("localhost")
s.connect((host, port))

Abschluss

ConnectionRefusedError in Python tritt auf, wenn der Client keine Verbindung zum Server herstellen kann. Mehrere Gründe sind, dass der Client die IP- oder Portadresse nicht kennt und der Server nicht läuft, wenn der Client eine Verbindung herstellen möchte.

Es gibt mehrere oben erwähnte Methoden, um dieses Verbindungsproblem zu lösen.

Zeeshan Afridi avatar Zeeshan Afridi avatar

Zeeshan is a detail oriented software engineer that helps companies and individuals make their lives and easier with software solutions.

LinkedIn

Verwandter Artikel - Python Error