Python 从以太网端口读取UDP套接字
我有一个雷达,我想读取雷达通过以太网端口发送的UDP数据包。 所以我创建了这个脚本:Python 从以太网端口读取UDP套接字,python,sockets,udp,ethernet,Python,Sockets,Udp,Ethernet,我有一个雷达,我想读取雷达通过以太网端口发送的UDP数据包。 所以我创建了这个脚本: import socket UDP_PORT = 2700 interface="" sock = socket.socket(socket.AF_INET, # Ethernet socket.SOCK_DGRAM) # UDP sock.bind((interface, UDP_PORT)) while True: data, addr = s
import socket
UDP_PORT = 2700
interface=""
sock = socket.socket(socket.AF_INET, # Ethernet
socket.SOCK_DGRAM) # UDP
sock.bind((interface, UDP_PORT))
while True:
data, addr = sock.recvfrom(1024) # buffer size is 1024 bytes
print "received message:", data
但当我运行它时,我会收到如下奇怪的消息:
在雷达的用户手册中,它说数据包由以下字段组成:
- PacketType:(无符号字节)
- TargetCount:(无符号字节)
- PacketID:(未签名的int32)
- 保留:(无符号字节[32])
- 目标:(雷达目标[TargetCount]:检测到的目标数组
提前谢谢您在那里看到了二进制数据的文本表示形式。您必须将字段拆分并将其转换为给定的数据类型。
struct.unpack()
可能会有所帮助:您能给我一个示例,我如何使用此函数吗?非常感谢socket.AF\u INET
并不意味着“以太网”,它的意思是IPv4。在互联网上有很多使用结构的例子。-这一个看起来不错。我修改了代码,添加了以下行:(类型、计数、id、保留1、保留2、保留3、保留4、速度、角度、距离、信号、目标)=结构解包(“!2B I 4B 4f I”,数据)打印(类型、计数、id、预留1、预留2、预留3、预留4、速度、角度、距离、信号、目标)