Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 从以太网端口读取UDP套接字_Python_Sockets_Udp_Ethernet - Fatal编程技术网

Python 从以太网端口读取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

我有一个雷达,我想读取雷达通过以太网端口发送的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 = sock.recvfrom(1024) # buffer size is 1024 bytes
        print "received message:", data
但当我运行它时,我会收到如下奇怪的消息:

在雷达的用户手册中,它说数据包由以下字段组成:

  • PacketType:(无符号字节)
  • TargetCount:(无符号字节)
  • PacketID:(未签名的int32)
  • 保留:(无符号字节[32])
  • 目标:(雷达目标[TargetCount]:检测到的目标数组
如何从UDP数据包中读取此字段


提前谢谢

您在那里看到了二进制数据的文本表示形式。您必须将字段拆分并将其转换为给定的数据类型。
struct.unpack()
可能会有所帮助:您能给我一个示例,我如何使用此函数吗?非常感谢
socket.AF\u INET
并不意味着“以太网”,它的意思是IPv4。在互联网上有很多使用结构的例子。-这一个看起来不错。我修改了代码,添加了以下行:(类型、计数、id、保留1、保留2、保留3、保留4、速度、角度、距离、信号、目标)=结构解包(“!2B I 4B 4f I”,数据)打印(类型、计数、id、预留1、预留2、预留3、预留4、速度、角度、距离、信号、目标)