Python HTTP服务器可被浏览器访问但Raspberry Pi Pico无法连接
服务器绑定地址限制本地访问
检查你的server.py里的服务器绑定代码,要是写的是127.0.0.1或者localhost,那服务器只会监听本地回环接口,局域网里的Pico根本连不上。把绑定地址改成0.0.0.0(监听所有可用接口)或者服务器的局域网IP,比如:# 错误写法 server.bind(('127.0.0.1', 8080)) # 正确写法 server.bind(('0.0.0.0', 8080)) # 或者指定局域网IP server.bind(('192.168.1.105', 8080))Pico端使用了错误的服务器地址
别在Pico代码里写localhost或者127.0.0.1,这俩是Pico自身的回环地址,不是你的服务器地址。换成服务器的局域网IP,比如Pico里的请求代码改成:response = urequests.get("http://192.168.1.105:8080/")你可以在服务器上用
ifconfig(Linux)或ipconfig(Windows)查自己的局域网IP。服务器和Pico不在同一局域网网段
分别查两者的IP:Pico里用print(wlan.ifconfig())看自身IP,服务器端查局域网IP,确保前三位网段一致(比如都是192.168.1.x)。如果网段不同,要么把Pico连到服务器所在的WiFi,要么调整路由器路由设置(一般家庭环境直接换同WiFi就行)。路由器开启了AP隔离
很多路由器默认开了AP隔离(也叫客户端隔离),会阻止同一WiFi下的设备互相访问。进路由器管理后台(一般是192.168.1.1或192.168.0.1),找到“AP隔离”“客户端隔离”选项,把它关掉再试。端口监听范围验证
用命令确认服务器端口是否真的对外监听:- Linux/macOS:
netstat -anp | grep 你的端口号,看输出里的LISTEN地址是不是0.0.0.0或局域网IP - Windows:
netstat -ano | findstr 你的端口号,同样检查监听地址
- Linux/macOS:
DNS解析问题(如果用了域名)
要是Pico代码里用的是域名访问服务器,可能DNS解析失败导致找不到主机。先换成直接用服务器局域网IP测试,排除解析问题。
内容的提问来源于stack exchange,提问作者timo

