通过网络发送pythonc_types结构

sending python c_types structure through network

我有一个声明为 c_types

的结构
 class MyMessage(Structure):
   __fields__ = [ ("name",c_char * 32), ("id", c_int) ]

我想使用以下伪代码通过 UDP 将此数据发送到我的 C++ 客户端

 myMessage = MyMessage()
 socket.sendto( *myMessage*, host, port)

在我的 C++ 中,我通常在每个字段上调用 ​​hton,然后将结构写入 char 缓冲区。我如何在 python 中执行此操作?我看到人们使用 struct.pack,这是正确的方法吗?使用 struct.pack 格式化时是否应该处理 hton?

是的,你应该使用 struct.pack。您可以在编写包格式字符串时指定字节顺序。要将其格式化为 hton,您可以使用 > 符号。请参阅 byte order and alignment

上的结构文档
>>> import struct
>>> struct.pack(">L", 1)    # big endian
'\x00\x00\x00\x01'
>>> struct.pack("L", 1)
'\x01\x00\x00\x00'