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

Python编写的简单UDP应用跨同局域网设备无法接收数据

问题核心原因

你代码中使用的127.0.0.1是本地回环地址,仅支持同一设备内部的进程通信,数据不会经过物理网卡传输到局域网其他设备,这是跨设备通信失败的核心原因,防火墙属于次要排查项。

修复步骤

1. 提前确认网络状态

  • 确保树莓派和笔记本连接同一局域网
  • 分别查询两台设备的局域网IP:
    • Windows笔记本执行ipconfig,查看WLAN/以太网对应的IPv4地址,格式一般为192.168.x.x
    • Linux/macOS设备执行ip addr或ifconfig查询
  • 在树莓派终端执行ping 笔记本局域网IP,确认网络连通

2. 修改树莓派端代码

树莓派作为发送端,不需要绑定本地回环地址,只需指定接收端(笔记本)的局域网IP即可,修改后代码示例:

import socket

# 替换为你实际查询到的笔记本局域网IP
target_ip = "192.168.3.25"
port = 5005
sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
message = b"Hello World"
sock.sendto(message, (target_ip, port))
sock.close()

3. 修改笔记本端代码

笔记本作为接收端,需要绑定所有网卡才能接收局域网内其他设备发来的请求,将绑定IP改为0.0.0.0即可,修改后代码示例:

import socket
# 0.0.0.0代表监听本机所有网卡的请求
ip = "0.0.0.0"
port = 5005
sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
sock.bind((ip, port))

while True:
    data, addr = sock.recvfrom(1024) 
    print("received message: %s" % data)

4. 防火墙排查(修改代码后仍失效时操作)

  • Windows设备:打开Windows Defender防火墙高级设置,添加入站规则,放行5005端口的UDP流量
  • Linux/macOS设备:在终端执行对应命令放行5005端口的UDP入站流量

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 21:54:07