我正在尝试从裸机嵌入式设备向运行python的脚本发送UDP数据包。 我在WireShark中看到该数据包,并确认一切正确。 但是,Python脚本看不到该数据包。
我已经通过从另一个python脚本发送UDP数据包测试了python代码。接收到的python脚本会在那个时候接收到它。
我在防火墙中看到该数据包。它说数据包被允许并发送到python。我在防火墙中创建了一条规则,以允许来自此设备的流量。我还尝试过禁用防火墙。
下面是我的python脚本,正在监听UDP数据包
import socket
UDP_PORT = 5005
sock = socket.socket(socket.AF_INET, # Internet
socket.SOCK_DGRAM) # UDP
sock.bind(('', UDP_PORT))
while True:
data, addr = sock.recvfrom(1024) # buffer size is 1024 bytes
print "received message:", data
print "received from:", addr
Python为什么会丢弃数据包?
Netstat显示它已收到UDP数据包,没有任何错误:
Netstat收到数据包之前
netstat -s -n -p UDP
IPv4的UDP统计信息
收到的数据报= 5982014
无端口= 79096
接收错误= 829
发送的数据报= 1641811
收到数据包后的Netstat
netstat -s -n -p UDP
IPv4的UDP统计信息
收到的数据报= 5982130
无端口= 79100
接收错误= 829
已发送的数据报= 1641932