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

Python Socket无法接收UDP数据包问题排查求助

Python UDP Socket无法接收数据包排查建议

问题背景

在搭载Ubuntu 18.04的NVIDIA Jetson NX上配置Python Socket接收以太网UDP数据包:

  • 以太网适配器已配置固定IP
  • 通过tcpdump可观测到目标IP为192.168.33.30、端口4098的UDP数据包
  • 已完全禁用防火墙,但运行以下代码仍无法接收数据:
import socket

UDP_IP = "192.168.33.30"
UDP_PORT = 4098

sock = socket.socket(socket.AF_INET, # Internet
           socket.SOCK_DGRAM) # UDP
sock.bind((UDP_IP, UDP_PORT))

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

排查建议

  • 尝试绑定到全接口地址:将UDP_IP改为"0.0.0.0",让Socket监听所有可用网络接口,避免因网卡绑定配置问题导致无法接收。
  • 检查端口占用情况:执行sudo lsof -i :4098或sudo netstat -tulpn | grep 4098,确认端口4098是否被其他进程占用。
  • 验证数据包目标MAC:确认发送端发出的UDP数据包目标MAC地址为Jetson NX以太网适配器的MAC,排除ARP解析或网络转发导致的数据包丢失。
  • 本地测试UDP发送:在Jetson NX终端执行nc -u 192.168.33.30 4098,手动输入内容发送,验证代码是否能接收,排查发送端问题。
  • 开启网卡混杂模式:执行sudo ip link set eth0 promisc on(替换eth0为你的实际网卡名称),确保系统能处理非自身MAC的数据包(tcpdump会临时开启该模式,但程序运行时可能已恢复)。
  • 查看系统网络日志:通过dmesg | grep -i udp或journalctl -u systemd-networkd查看是否存在UDP相关的系统错误日志。
  • 尝试以root权限运行代码:虽然4098属于非特权端口,但可尝试sudo python3 your_script.py,排除潜在的权限限制问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 21:15:34