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

Python网络客户端接收日志丢包且挂起问题求助

解决Python客户端接收服务器日志末尾丢失与挂起的问题

问题根源分析

  • 判断条件无效:你用logsreturned == ''判断接收结束,但s.recv()返回的是bytes类型,空字节流是b'',和字符串''永远不相等,这个break条件根本不会触发。
  • 连接未正常关闭:如果服务器发送完所有日志后没主动关闭socket,客户端的阻塞式recv会一直等待数据,导致程序挂起。

修正后的客户端代码

with open('raw.txt', 'wb') as f:
    while True:
        logsreturned = s.recv(512)
        print(logsreturned)
        # 空字节流意味着服务器已关闭连接,终止循环
        if not logsreturned:
            break
        f.write(logsreturned)

关键注意事项

  • 服务器端必须在发送完所有日志后,调用s.close()关闭TCP连接,这样客户端的recv才会返回空bytes,触发循环终止。
  • 移除了多余的logsreturned = '',下一次循环会重新给变量赋值,这行代码完全没必要。
  • 检查代码缩进,确保while循环处于with语句块内部,避免文件提前关闭导致数据写入失败。

内容的提问来源于stack exchange,提问作者E.V.A.

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.06 16:05:06