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

ThreadedTCPServer可响应同进程客户端但跨进程客户端连接被拒问题

问题原因

你这个问题的核心是服务端进程在你启动独立客户端之前就已经退出了,端口监听早就关闭了,不是跨进程访问的问题:

  • 你写的服务端代码里,ThreadedTCPServer的实例是放在with上下文管理器中使用的,当with块内的所有代码执行完毕后,上下文会自动调用服务端的close方法,直接关闭9999端口的监听。
  • with块内除了启动服务线程,就只有三次内置client调用、合计3秒的sleep,等这三行请求执行完,with块就退出了,主线程没有任何额外的阻塞逻辑,整个服务端进程直接结束,你误以为服务端还在后台监听,实际上此时端口已经被释放了。
  • 同进程的client能调用成功,是因为这三次调用都发生在with块退出、服务端关闭之前。
修复方案

你只需要在服务端三次内置client调用之后,加一段阻塞逻辑,避免主线程提前退出、with块提前关闭即可,比如:

# 原有三次client调用
client(ip, port, "Hello World 1 at " + str(datetime.now()))
time.sleep(1)
client(ip, port, "Hello World 2 at " + str(datetime.now()))
time.sleep(2)
client(ip, port, "Hello World 3 at " + str(datetime.now()))

# 新增:阻塞等待服务线程结束,服务端会一直保持监听
server_thread.join()

改完之后再启动服务端,进程会一直保持运行,其他独立进程的客户端就能正常连接9999端口了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 16:24:02