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

Arduino Nano RP2040通过WiFi与Python Socket服务端连接失败求助

Socket连接问题排查方案

1. 服务端WinError 10049报错解决

这个报错的核心原因是你填写的192.168.0.4不是运行Python服务端设备的本地网卡IP,bind操作只能绑定本机实际存在的IP地址,不能随意填写。
解决方法:

  • 先查询设备真实局域网IP:Windows系统打开cmd执行ipconfig,找到你当前连接的WiFi对应的「无线局域网适配器 WLAN」栏下的IPv4地址,比如实际查询结果为192.168.43.20,就把服务端host改成这个值
  • 调试阶段更推荐直接把host设置为0.0.0.0,这样服务端会监听本机所有可用网卡的连接请求,不需要手动匹配IP,适配性更高

2. 改host为127.0.0.1后连接失败的原因

127.0.0.1是本机回环地址,仅允许当前设备内部的程序访问,Arduino是局域网内的独立设备,根本无法访问到你电脑的127.0.0.1,自然连接失败。

3. 全链路连通性排查步骤

  • 确认Arduino和服务端设备连接的是同一个WiFi,注意你用的是企业级WiFi(调用了beginEnterprise方法),多数企业WiFi默认开启了客户端隔离,同一WiFi下的设备无法互相通信,遇到这种情况可以换成个人手机热点调试,俩设备都连同一个热点即可
  • 补充Arduino端WiFi连接状态校验:你现有代码没有判断WiFi是否连接成功就直接发起Socket连接,建议在WiFi.beginEnterprise之后增加调试逻辑,等待WiFi连接成功后再往下执行,同时打印Arduino的IP确认网段匹配:
    while (WiFi.status() != WL_CONNECTED) {
      delay(500);
      Serial.print(".");
    }
    Serial.println("WiFi connected");
    Serial.println("Arduino IP: ");
    Serial.println(WiFi.localIP());
    
    确认Arduino的IP网段和服务端设备的IP网段一致,比如服务端IP是192.168.43.20,Arduino的IP也应该是192.168.43.x
  • 关闭服务端设备的防火墙:Windows防火墙默认会阻止外部设备的TCP连接请求,调试阶段可以先关闭专用网络防火墙,或者单独给13380端口添加入站规则
  • 先做基础连通性测试:Arduino成功连WiFi后,在服务端设备的cmd里执行ping [Arduino的IP],如果能ping通再排查Socket连接问题
  • 确认Arduino代码里的serverIP和服务端实际绑定的IP完全一致,不要出现服务端用43段IP、Arduino连0段IP的低级错误

4. 现有代码的可优化点

  • Python服务端里的json.load(output)写法错误,load用于读取文件对象,读取字节数据需要用json.loads(output.decode('utf-8')),调试阶段可以先注释掉JSON解析相关代码,先调通连接再处理数据逻辑
  • Arduino的loop函数里没有加延时,会高频发送数据容易堵死端口,调试阶段可以加个delay(1000)控制发送频率

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 16:54:02