我正在从C服务器到我的Python客户端通过网络接收结构。该协议是UDP。我无法控制服务器及其协议/数据格式。它由这个结构组成(是的,IPv4 +端口):
struct ip_s {
uint8_t i1;
uint8_t i2;
uint8_t i3;
uint8_t i4;
uint16_t port; // big endian
};
除了转换为big-endian的端口之外,数据“按原样”发送,并转换为(char*)
。
如何将此结构接收为可由Python处理的格式?
其他信息:
答案 0 :(得分:3)
它可能看起来像这样:
# socket setup
(buffer, sockaddress) = mysocket.recvfrom(6)
if len(buffer)== 6:
i1,i2,i3,i4, port = struct.unpack('!BBBBH', buffer)
答案 1 :(得分:0)
我通过网络收到结构
停在那儿。不要那样做。此技术引入了以下依赖项:
(2)和(3)依次取决于:
这是相当多的依赖。不要这样做。定义应用程序协议并使用它。或者使用类似XDR的东西来解决问题。