一个连接被对方重设。一个建立的连接被远程主机强行关闭,若远程主机上的进程异常终止运行(由于内存冲突或硬件故障),或者针对套接字执行了一次强行关闭,便会产生10054错误.
在写一个传输文件的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(sock