树莓派用Python向Flask服务器发字典报连接错误如何解决?
问题排查与修复方案
目标IP地址配置错误
你树莓派代码里填的127.0.0.1是本机回环地址,用这个地址树莓派只会尝试访问自己本机上运行的8080端口服务,自然找不到运行在PC上的Flask服务。
修复方法:
- 确保树莓派和你的PC连接在同一个局域网下
- 查看PC的局域网真实IP地址:Windows系统执行
ipconfig,macOS/Linux系统执行ifconfig或ip addr,找到对应网卡的IPv4地址,格式一般为192.168.x.x/10.x.x.x
请求路由不匹配
你树莓派端请求的路径是/events,但PC端Flask代码里只定义了接收POST请求的路由为/json,路径不匹配的情况下请求会被Flask拒绝。
修复方法:两边路径保持一致即可,二选一:
- 方案1:修改树莓派端的请求路径,把
server_ip = 'http://127.0.0.1:8080/events'改成server_ip = 'http://[你的PC局域网IP]:8080/json' - 方案2:修改Flask端的路由装饰器,把
@app.route('/json', methods=['POST'])改成@app.route('/events', methods=['POST'])
端口被防火墙拦截
PC端系统防火墙默认会拦截外部设备对本地端口的访问,你需要给8080端口开放入站规则,或者临时关闭PC的防火墙测试。
优化后代码示例
树莓派端关键修改部分:
# 把192.168.3.10换成你自己PC的真实局域网IP server_ip = 'http://192.168.3.10:8080/json' headers = {'Content-Type': 'application/json'} # 可直接用json参数传字典,不用手动转json字符串 req = requests.post(server_ip, json=mac_dict)
Flask端保持原有配置即可,启动后确认输出显示运行在0.0.0.0:8080就代表允许外部设备访问。
内容的提问来源于stack exchange,提问作者user11989615
相关产品推荐
相关产品推荐

