连接被拒绝后尝试重新连接 - Python

时间:2016-01-19 17:26:17

标签: python sockets networking try-catch

我正在尝试创建一个脚本,在出错时会尝试重新连接。但即使在接收服务器启动后它仍然无法连接

send_sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
while True:
    try:            #Cant get it to make connection after retrying
        send_sock.connect((ip, port))       #always throws Con Refused when tryed
        break
    except socket.error:
        print "Connection Failed, Retrying.."
        time.sleep(1)
send_sock.send("hi")

编辑:已更正"尝试:"错字

2 个答案:

答案 0 :(得分:0)

Python套接字会给您一个错误,该错误应该有助于调试您的问题。以你为榜样。

try:            
    send_sock.connect((ip, port))       
except socket.error as error:
    print("Connection Failed **BECAUSE:** {}").format(error)

其次,你几乎不应该使用while true: [...]因为它会导致各种各样的问题。在这种情况下,您可以在X尝试之后放入一个计数器并在该中断上循环。

While counter < 100:
      try:            
          send_sock.connect((ip, port))       
       except socket.error as error:
           print("Connection Failed **BECAUSE:** {}").format(error)
           print("Attempt {} of 100").format(counter)
           counter += 1

查看Python Docs on socket exceptions了解详情。

答案 1 :(得分:0)

我本人也遇到过同样的问题,一旦解决,它实际上是一个非常简单的解决方案,您需要做的就是在每次尝试连接之前创建send_sock。不知道为什么可以解决这个问题,但是对我有用。希望它也对您有用。

while True:
    try:#moved this line here
        send_sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
        send_sock.connect((ip, port)) #no longer throws error
        break
    except socket.error:
        print "Connection Failed, Retrying.."
        time.sleep(1)
    send_sock.send("hi")