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

Python TCP/IP服务器无法接收消息,如何排查修复?

TCP服务器连接失败的问题分析与修复方案

你的代码存在几个关键问题,导致无法接收外部设备的连接:

  • 绑定地址错误:你使用127.0.0.1作为服务器地址,这是本地回环地址,仅能被本机进程访问,手机或其他局域网设备根本无法通过这个地址定位到你的服务器。要让外部设备连接,需绑定到0.0.0.0(监听所有可用网络接口),或者你的电脑在局域网中的实际IP(如192.168.x.x)。
  • 缺乏异常处理:代码未捕获绑定、监听、收发数据过程中的异常(比如端口被占用、连接意外中断等),导致无法排查具体错误原因。
  • 单客户端限制:当前代码在accept()后仅处理单个客户端连接,处理完成就关闭服务器,无法支持多设备同时连接(这是功能限制,非当前连接失败的核心原因)。

修复后的示例代码

import socket

def receive_messages():
    server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    # 绑定到所有网络接口,允许外部设备访问
    server_address = ("0.0.0.0", 1234)
    
    try:
        server_socket.bind(server_address)
        server_socket.listen(5)  # 允许最多5个等待连接的客户端队列
        print(f'Server listening on {server_address[0]}:{server_address[1]}...')
        
        while True:
            # 持续等待新客户端连接(串行处理,并行需多线程/多进程)
            client_socket, client_address = server_socket.accept()
            print('Connected to:', client_address)
            
            try:
                while True:
                    data = client_socket.recv(1024)
                    if data:
                        message = data.decode()
                        print(f'Received from {client_address}: {message}')
                        client_socket.sendall(b'ACK')
                    else:
                        print(f'Connection closed by {client_address}')
                        break
            except Exception as e:
                print(f'Error with client {client_address}: {e}')
            finally:
                client_socket.close()
    except Exception as e:
        print(f'Server error: {e}')
    finally:
        server_socket.close()

if __name__ == '__main__':
    receive_messages()

额外注意事项

  1. 确保电脑和手机处于同一局域网,手机连接时需使用电脑的局域网IP(如192.168.1.100),而非0.0.0.0。
  2. 检查电脑防火墙设置,确保目标端口(如1234)允许入站连接,避免被防火墙拦截。
  3. 若需公网设备连接,需在路由器上配置端口转发,但新手阶段建议先在局域网内测试。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 14:42:48