Ich habe ein Problem mit diesen Client- und Server-Codes. Ich bekomme immer die [Errno 10061] Es konnte keine Verbindung hergestellt werden, weil der Zielcomputer sie aktiv abgelehnt hat
Ich verwende den Server auf einer virtuellen Maschine mit Windows XP SP3 und dem Client unter Windows 7 64bit. Meine Python-Version ist 2.7.3. Ich möchte wissen, wie ich den Code bearbeiten muss, um Client und Server in verschiedenen Netzwerken zu verwenden! Vielen Dank!
Server:
#!/usr/bin/python # This is server.py file
import socket # Import socket module
s = socket.socket() # Create a socket object
Host = '0.0.0.0' # Get local machine name
port = 12345 # Reserve a port for your service.
print 'Server started!'
print 'Waiting for clients...'
s.bind((Host, port)) # Bind to the port
s.listen(5) # Now wait for client connection.
c, addr = s.accept() # Establish connection with client.
print 'Got connection from', addr
while True:
msg = c.recv(1024)
print addr, ' >> ', msg
msg = raw_input('SERVER >> ')
c.send(msg);
#c.close() # Close the connection
Klient :
#!/usr/bin/python # This is client.py file
import socket # Import socket module
s = socket.socket() # Create a socket object
Host = socket.gethostname() # Get local machine name
port = 12345 # Reserve a port for your service.
print 'Connecting to ', Host, port
s.connect((Host, port))
while True:
msg = raw_input('CLIENT >> ')
s.send(msg)
msg = s.recv(1024)
print 'SERVER >> ', msg
#s.close # Close the socket when done
PS: Der Code stammt aus dem Internet.
10061 ist WSAECONNREFUSED, 'Verbindung abgelehnt', was bedeutet, dass an dem IP: Port, mit dem Sie eine Verbindung herstellen wollten, nichts zugehört hat.
Um das Jahr 2000 gab es ein Firewall-Produkt, das ablehnte, anstatt eingehende Verbindungen zu blockierten Ports zu ignorieren. Dies wurde jedoch schnell als Informationsverlust für Angreifer erkannt und korrigiert oder zurückgezogen.
Hinweis: actively refused
klingt nach etwas tieferen technischen Problemen, aber ...
... eigentlich ist diese Antwort (und auch speziell errno:10061
) auch gegeben, wenn die ausführbare Datei bin/mongo aufgerufen wird und der mongodb-Dienst auf dem Zielcomputer einfach nicht ausgeführt wird. Dies gilt auch für lokale Computerinstanzen (alle auf localhost).
➪ Schließen Sie diese triviale Möglichkeit immer zuerst aus, d. H. Indem Sie einfach den Befehlszeilenclient für den Zugriff auf Ihre Datenbank verwenden.
Anhand der Beispiele aus: https://docs.python.org/3.2/library/socketserver.html .__ stellte ich fest, dass ich den Host-Port auf dem Computer einstellen musste, auf dem das Serverprogramm ausgeführt wurde. Also TCPServer auf 192.168.0.1 Host = TCPServer IP 192.168.0.1 Dann musste ich die TCPClient-Seite so einstellen, dass sie auf die TCPServer IP verweist. Der TCPClient-Host-Wert = 192.168.0.1. Das ist das Beste, was ich beschreiben kann.
wenn Sie einen Remote-Server auf Ihrem Computer installiert haben. Geben Sie server.py Host als "localhost" und die Portnummer ... an. Dann müssen Sie auf der Clientseite die lokale IP-Adresse 127.0.0.1 und Portnummer angeben
Ich hatte ein ähnliches Problem, als ich die REST -API mit der Python-Bibliothek aufrief. Ich fand heraus, dass mein Server in den Schlafmodus ging, was dazu führte. Sobald ich mich über Remote Desktop Connection am Server angemeldet habe, funktionierte mein API-Aufruf.