我正在尝试创建一个脚本,在出错时会尝试重新连接。但即使在接收服务器启动后它仍然无法连接
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")
编辑:已更正"尝试:"错字
答案 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
答案 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")