Python, Connectin Refusé 10061
Je reçois cette erreur
[Errno 10061] Aucune connexion n'a pu être établie car l'ordinateur cible l'a expressément refusé.
Je suis sous Windows 7 64 bits, pas de virus ou de logiciels de protection, et python est autorisé à travers mon pare-feu (j'ai aussi essayé de transformer mon pare-feu est complètement éteint, mais même résultat). Quand je lance le serveur et l'utilisation de telnet, il se connecte très bien. Lorsque j'essaie de me connecter au serveur avec le client, il échoue. Toutes les suggestions sur ce que je pourrais essayer de résoudre ce problème? Si vous avez besoin de plus d'informations il suffit de demander et je vais vous donner.
Code Client
import socket
import sys
def main():
host = ""
port = 8934
message = "Hello World!"
host = raw_input("Enter IP: ")
#Create Socket
try:
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
except socket.error, msg:
print "Failed to create socket. Error code: %s Error Message: %s"%(str(msg[0]),msg[1])
sys.exit()
print "Socket created"
#Connec to Server
print host
print port
s.connect((host,port))
print "You are connected to %s with IP adress of %s"%(host,host)
#Send Data
try:
s.sendall(message)
except socket.error:
print "Failed to send."
#Receive Data
reply = s.recv(4096)
if __name__ == "__main__":
main()
Code Serveur
# !usr/bin/python
import socket
import sys
HOST = ""
PORT = 8934
def main():
#Setup socket
try:
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
except socket.error,msg:
print "Unable to create socket"
sys.exit()
print "Socket created."
#Bind to adress
try:
s.bind((HOST,PORT))
except socket.error,msg:
print "Bind failed. Closing..."
sys.exit()
print "Socket bound."
#Start listening
s.listen(10)
print "Socket Listening"
#Accept connection
conn, addr = s.accept()
print "Connected to %s:%s"%(addr[0],addr[1])
if __name__ == "__main__":
main()
Aussi, veuillez corriger votre indentation, on peut copier et coller votre code à exécuter, ou tout simplement de le lire, sans avoir à deviner.
Je me rends compte qu'il va quitter oui. Tout ce que je suis inquiète, c'est de le faire pour se connecter à tous, alors je vais travailler à partir de là. Désolé pour l'indentation, je ne le savais pas raté son coup.
Aussi loin que je peux dire, le fait que le serveur se ferme est le seul réel problème ici. Vous pouvez uniquement exécuter le client une fois, puis le serveur se ferme, et si vous exécutez le client à nouveau, vous obtenez une erreur 10061 (ou, sur Unix, un 61 erreur). Si vous exécutez un autre serveur, vous pouvez exécuter un client.
OriginalL'auteur cgasser | 2012-12-08
Vous devez vous connecter pour publier un commentaire.
Prendre une supposition à votre indentation, et l'exécution de votre code... il fonctionne très bien.* (Tant que je tape dans
127.0.0.1
quand il me demande l'adresse IP.)Bien sûr la deuxième fois que je lance le client (si je n'ai pas redémarré le serveur), j'ai une connexion refusé d'erreur. Mais c'est juste parce que vous avez codé un serveur qui se ferme immédiatement dès qu'il pénètre à la première connexion. Donc la deuxième fois que vous exécutez le client, il n'y a pas de serveur, le système d'exploitation rejette la connexion.
Vous pouvez toujours exécuter de nouveau le serveur, ce qui vous permet d'exécuter le client une fois de plus. (Sauf que le serveur peut obtenir un 10048 erreur lorsqu'il tente de lier la prise, parce que l'OS est de le garder autour de l'ancien propriétaire. Si vous voyez que, regardez
SO_REUSEADDR
dans les docs.)* Par "fonctionne très bien", je veux dire qu'il se connecte, et affiche les éléments suivants avant de la quitter:
Évidemment, il n'envoie jamais de rien pour le serveur ou reçoit quelque chose en retour, parce que le serveur n'a pas de
send
ourecv
appels, ou quoi que ce soit d'autre.OriginalL'auteur abarnert