Python读取UDP C#流

标签 python udp

有一个服务器发送 UPD 流 - 每秒 60 个数据包

我用twisted来阅读它:

from twisted.internet.protocol import DatagramProtocol
from twisted.internet import reactor
class Echo(DatagramProtocol):
    def datagramReceived(self, data, (host, port)):
        print ('1',data)
class Echo(DatagramProtocol):
reactor.listenUDP(port, Echo())
reactor.run()

在控制台中我有这样的:

('1', '\xea\xb6|C\x00\x00\x00\x00gK\xa0E\x00O\x05\xbd\x97\xb7\x04B\xf6\xfdY@\xb9\xa8\x0cD\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x004\x8e8\xbfKkv\xb3\xa6i1\xbf\xa6i1\xbf\x00\x00\x00\x004\x8e8?\xc0\x98\xed\xc1\xbd\x98\xed\xc1=\x1a\x9a\xc1\x96\x19\x9a\xc1\x9d\x88)\xba\x9fB,\xbaA\xb2\xa9;\xc5]\xd86\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x06\x00\x00\x80\xcd\xcc\xcc=\x00\x00\x80?\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xd4Q\x81@')
('1', '\x7f\xd5\x82D\x00\x00\x00\x00+8\x89Ed\xf0/\xbe\xbdy\x06D\x8b\xfaM@\xa9-ZD\x9f\x03EB\x89\xeb4\xc2Z+\x87\xbes\xf7\x9bAw\xc7\xca\xbeMv\x83\xbc\xc4\x07k\xbf\xd6\x06k\xbf\x93);\xbc\xd6\xe0\xca>m\xc4\xb5A\x7f\xdc\xd6A\xf7\x8arA!\xbdcAe\r\xb3B\xc4\xf7\xd3B*\\\xdeBWF\xe5B\xa5\xffBB\xddaCB\x8c EBL8EB\x00\x00\x807\x00\x00$\xbc\x00\x00\x807\x00\x00\x00\x00\x00\x00\xa0@F\xc6\xb1=(O\x12\xbf\x00\x00\x00\x00\x885\xa4D')

分析流量的人说:“通过此发出的数据包包含字段(38 个不同的字段)。所有字段都是 float 据类型(在 C# 中)”

我明白是 38 个数字吗?我可以使用 Python 来阅读它们吗?

最佳答案

您可以使用 struct 模块:

floats = struct.unpack('<38f', data)

(您可能需要将 > 更改为 <,具体取决于数据的字节顺序。)

关于Python读取UDP C#流,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10106346/

相关文章:

python - 如何从 Python 执行 Common Lisp 代码

python - 将 python 脚本的结果传递到 ExtendScript `.jsx` 文件

c# - Python 和 C# 之间的 IPC

networking - -P 标志对 iperf 有什么作用?

unity3d - 脚本运行时统一崩溃

c# - 不确定将 EndPoint 传递给 Socket.ReceiveFrom()

python - 使用 Python PuLP 进行混合整数编程的时间限制

python - Pandas to_sql() 性能 - 为什么这么慢?

java - 服务器在Java中同时处理来自多个客户端的 "n"请求

ios - Swift:使用 GCDAsyncUdpSocket 接收 UDP