gpt4 book ai didi

python - TCP 服务器正在关闭连接

转载 作者:太空狗 更新时间:2023-10-29 22:08:27 30 4
gpt4 key购买 nike

我有这个代码

class ThreadedTCPRequestHandler(SocketServer.BaseRequestHandler):

def handle(self):
_data = self.request.recv(1024)

Utils.log("Received from %s: %s" % (self.client_address, _data))

调用它

kamcon_server = ThreadedTCPServer((HOST, 3011), ThreadedTCPRequestHandler)

server_thread = threading.Thread(target = kamcon_server.serve_forever)
server_thread.setDaemon(True)
server_thread.start()

我可以连接到主机,服务器可以发送数据,但是当客户端向服务器发送东西时,连接会自动关闭。为什么?谢谢。

最佳答案

您的handle() 方法每个连接只调用一次recv()。如果要处理来自客户端的多个消息,则需要循环。您还应该考虑您的协议(protocol),以便您可以处理大于 1024 字节的请求/响应消息(例如,解析 _data 并确定您是否有完整的消息、缓冲部分请求等)。

例如:

def handle(self):
close = 0
while not close:
_data = self.request.recv(1024)
if not _data:
# EOF, client closed, just return
return
Utils.log("Received from %s: %s" % (self.client_address, _data))
self.request.send('got %d bytes\r\n' % len(_data))
if 'quit' in _data:
close = 1

客户端 session :

% telnet localhost 3011
hi
got 4 bytes
bye
got 5 bytes
telnet> quit

关于python - TCP 服务器正在关闭连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5793252/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com