Errno 10061 : Aucune connexion n'a pu être établie car l'ordinateur cible l'a expressément refusé ( client - serveur )
J'ai un problème avec ces client et le serveur codes, je reçois le [Errno 10061] Aucune connexion n'a pu être établie car l'ordinateur cible l'a expressément refusé
Je suis en cours d'exécution du serveur sur une machine virtuelle avec Windows XP SP3 et le client sur Windows 7 64 bits, ma version de python est 2.7.3. Ce que je veux savoir, c'est comment dois-je modifier le code pour utiliser le client et le serveur sur différents réseaux! Merci!
serveur :
#!/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
client :
#!/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 : le code est à partir d'internet.
- il refusait activement implique que le serveur de la machine pare-feu a bloqué la connexion, probablement sans rapport avec le code.
- pare-feu est désactivé :/ encore avoir d'erreur
- Comment est votre VM connecté au réseau? Via NAT + Port vers l'avant ou en mode bridge?
- C'est via Via NAT + Port de l'avant !
Vous devez vous connecter pour publier un commentaire.
10061 est WSAECONNREFUSED "connexion refusée", ce qui signifie qu'il n'y avait rien à l'écoute à l'adresse IP:port que vous avez essayé de vous connecter.
Il y avait un produit pare-feu autour de l'année 2000 qui a émis refus plutôt que d'ignorer les connexions entrantes de ports bloqués, mais cela a été rapidement reconnue comme une fuite d'informations pour les attaquants et corrigée ou retirée.
Astuce:
actively refused
sonne comme un peu plus profonde des problèmes techniques, mais......en fait, cette réponse (et aussi spécifiquement
errno:10061
) est également donné, si on appelle la bin/mongo exécutable et mongodb service est tout simplement pas en cours d'exécution sur la machine cible. Cette même s'applique à des instances de machine (tout se passe sur localhost).➪ Toujours la règle pour cette triviale possibilité première, c'est à dire tout simplement en utilisant la ligne de commande client pour accéder à votre base de données.
Voir ici.
En utilisant les exemples de: https://docs.python.org/3.2/library/socketserver.html
J'ai décidé que j'avais besoin de définir le port d'HÔTE de la machine, j'ai eu le programme de serveur en cours d'exécution sur. Donc TCPServer sur 192.168.0.1 HOST = TCPServer IP 192.168.0.1 puis j'ai dû mettre le TCPClient côté pour pointer vers le TCPServer IP. Donc le TCPClient valeur de l'HÔTE = 192.168.0.1 - Désolé, c'est le mieux que je peux la décrire.
si vous avez serveur distant installé sur votre machine. donner server.py l'hôte "localhost" et le numéro de port.
ensuite, côté client , vous avez à donner local ip 127.0.0.1 et le numéro de port.
puis ses œuvres
J'ai été confronté à un problème similaire quand j'étais en appelant l'API REST à l'aide de python de la bibliothèque et de ce que j'ai trouvé que mon serveur est en mode veille qui a conduit à cela. Dès que je suis connecté au serveur via la Connexion Bureau à Distance, mon appel API pour travailler.
La solution est d'utiliser la même adresse IP et numéro de Port à la fois client et serveur.
Essayez, dans client à utiliser
TCP_IP = 'écrire le numéro ip ici
TCP_PORT = bref le numéro de port ici
s.connect((TCP_IP, TCP_PORT))
la solution à court terme est d'utiliser la valeur par défaut de iis hôte et le port normalement 120.0.0.1 et 80 respectivement. Cependant suis toujours à la recherche d'une plus grande adaptabilité de la solution.
Cela pourrait être à cause de proxy ou de pare-feu. Si c'est un proxy, alors vous devez spécifier le paramètre de proxy au point d'entrée de votre code ou d'un projet.