You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何让Python socketserver保持Socket连接以接收多个请求?

让TCP服务器保持连接以处理单个Socket的多个请求

你的问题出在服务器的handle方法逻辑上:当前代码只处理一次客户端请求就结束了,socketserver框架会在handle方法执行完毕后自动关闭与客户端的连接,所以第二次发送请求时会触发连接中止错误。

要实现单个Socket连接下处理多个请求,只需要修改handle方法,让它循环接收客户端的消息,直到客户端主动断开连接:

import socketserver

class MyTCPServer(socketserver.BaseRequestHandler):
    def handle(self):
        # 循环处理当前连接的所有请求
        while True:
            try:
                message = self.request.recv(4096)
                # recv返回空字节串,表示客户端已关闭连接
                if not message:
                    break
                self.request.sendall(b'hello')
            except Exception as e:
                # 处理连接异常,比如客户端强制断开
                print(f"连接出现异常: {e}")
                break

server = socketserver.TCPServer(('127.0.0.1', 4444), MyTCPServer)
server.serve_forever()

修改说明:

  • 添加while True循环,让handle方法持续监听当前连接的消息
  • 通过if not message判断客户端是否关闭连接:当客户端调用s.close()时,recv会返回空字节串,此时退出循环,结束当前连接的处理
  • 增加异常捕获,避免客户端意外断开导致服务器抛出未处理的异常

修改后,你的客户端代码不需要做任何改动,就可以通过同一个Socket连接发送多次请求了。

内容的提问来源于stack exchange,提问作者SomethingSomething

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.06 07:07:16