程序连接到服务器,然后在连接被服务器关闭时,如果我尝试重新连接它说:socket.error: [Errno 9] Bad file descriptor
如果我关闭套接字在客户端,然后我尝试重新连接时,它说:socket.error: [Errno 106] Transport endpoint is already connected
。如何在损坏的管道后重新连接插座?
有没有办法破管后重新连接,而无需创建一个新的socket?
import socket
host = '127.0.0.1'
port = 1337
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
def loop():
try:
while 1:
print s.recv(512)
except socket.error:
#s.close()?
connect()
def connect():
s.connect((host, port))
loop()
connect()
原因是套接字连接是在操作系统级别进行管理的(并且这适用于任何编程语言)。在Linux下,为连接分配一个文件描述符,连接关闭时将销毁该连接,因此您需要重新连接以创建新的文件描述符。 – EdwardGarson