Python Socketserver客户端超时
我有一个Python中的socketserver,它必须使用select.select方法处理多个客户端,如下面的代码所示:Python Socketserver客户端超时,python,sockets,Python,Sockets,我有一个Python中的socketserver,它必须使用select.select方法处理多个客户端,如下面的代码所示: import socket import select class Server: def __init__(self): self.server = socket.socket(socket.AF_INET, socket.SOCK_STREAM) self.server.bind(('localhost', 2000))
import socket
import select
class Server:
def __init__(self):
self.server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
self.server.bind(('localhost', 2000))
self.socket_list = [self.server]
self.addresses = ['localhost']
self.commands = [""]
self.running = True
self.server.listen(10)
def listen(self):
while self.running:
read, write, error = select.select(self.socket_list, [], self.socket_list, 0)
for sock in read:
if sock == self.server and self.running:
try:
conn, address = self.server.accept()
conn.settimeout(30)
self.socket_list.append(conn)
self.addresses.append(address[0])
self.commands.append("")
except:
self.shutdown()
break
elif self.running:
try:
packet = sock.recv(60)
if not packet:
self.close_conn(sock)
index = self.socket_list.index(sock)
self.commands[index] += packet
if '\n' in self.commands[index]:
#handle command
except:
self.close_conn(sock)
def close_conn(self, conn):
#close client conn
def shutdown(self):
#shutdown server
if __name__ == "__main__":
Server().listen()
我目前的问题是,客户端的连接应该在30秒后关闭,但这并没有发生,尽管我使用conn.settimeout(30)声明了这一点。我还没有找到任何解释来解释为什么会发生这种情况
注意:注释用于替换与问题无关的部分代码。也许这会有帮助也许这会有帮助