在写一个传输文件的socket程序时,客户端实现了和服务端断开连接后重新自动连接功能,但是连接上服务端后再重启服务端,客户端出现了Errno 10054异常。出错的代码如下:
client.py:
import socket
ip = '192.168.0.124'
port = 8000
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
def run():
while True:
try:
s.connect((ip, port))
# do something:send, recv
except socket.error, e:
print "get connect error as", e
continue
s.close()
if __name__ == '__main__':
run()
解决方案:调整 s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)语句的位置,每次重新连接都生成新的socket实例。
client.py:
import socket
ip = '192.168.0.124'
port = 8000
def run():
while True:
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
try:
s.connect((ip, port))
# do something:send, recv
except socket.error, e:
print "get connect error as", e
continue
s.close()
if __name__ == '__main__':
run()