Python:通过套接字发送整数值

mar*_*low 3 python sockets hex integer tcp

我正在使用Python在服务器和客户端应用程序之间通过TCP套接字传输数据。我需要发送代表数据样本的4个字节。初始样本是一个32位无符号整数。如何通过套接字发送那4个字节的原始数据?

我想发送数据:0x12345678和0xFEDCBA98通过套接字发送的原始数据应该与我在wirehark / tcpdump / etc上读取的数据完全相同。我不想将8个十六进制数字中的每个值都表示为一个ASCII字符,我希望原始数据保持完整。

谢谢

use*_*547 5

在Python中发送二进制数据的主要方法是使用struct模块。

例如,像这样打包3个4字节无符号整数

In [3]: struct.pack("III", 3, 4, 5)
Out[3]: '\x03\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00'
Run Code Online (Sandbox Code Playgroud)

请注意使用“ <”,“>”等来保持字节序正确。