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

Python macOS Socket编程:P2P网络TCP连接异常排查求助

问题分析与解决方案

核心错误原因

  • 服务端代码犯了一个关键错误:用于监听连接的TCP套接字(tcp_socket)不能直接用来收发数据。accept()方法返回的connection对象才是和客户端建立好的连接套接字,所有读写操作都必须通过这个connection完成。
  • 你现在调用tcp_socket.recv(),会触发OSError: [Errno 57] Socket is not connected——因为监听套接字本身处于未连接状态,根本无法接收数据。
  • 服务端的这个错误会直接导致连接被强制重置,客户端因此收到ConnectionResetError: [Errno 54] Connection reset by peer。

修正后的服务端代码

tcp_socket = socket(AF_INET, SOCK_STREAM)
tcp_socket.bind(('127.0.0.1', port))
tcp_socket.listen(3)
while True:
    connection, client_addr = tcp_socket.accept()
    # 必须用accept返回的connection套接字处理数据
    filename = connection.recv(1024).decode() 
    print('request from', client_addr, ': ', filename)
    # 补充响应客户端的逻辑(比如返回文件内容)
    connection.send('sample file content'.encode())
    connection.close() # 处理完请求后关闭连接

额外说明

  • 同一端口同时跑UDP和TCP是完全合法的,操作系统会通过协议类型区分不同套接字,这部分逻辑没问题。
  • 客户端代码可以保留,但建议加一层异常处理,避免因连接异常直接崩溃。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 18:12:10