今天编写一个tcp服务器的时候出现错误:socket.error: [Errno 9] Bad file descriptor
出现的原因是连接已经被关闭,部分语句还在试图调用已经关闭的连接。
代码片段:
while True:
data = tcpCliSock.recv(BUFSIZE)
if not data:
break
tcpCliSock.send("hello")
tcpCliSock.close()
代码分析:
tcpCliSock.close()关闭连接后,while还没有结束,又调用了data = tcpCliSock.recv(BUFSIZE),引发了错误。
代码修改:
把tcpCliSock.close()放到while循环外就可以了。
修改后的代码:
while True:
data = tcpCliSock.recv(BUFSIZE)
if not data:
break
tcpCliSock.send("hello")
tcpCliSock.close()