struct.pack()对网络数据包做了什么

时间:2016-02-01 02:13:09

标签: python struct network-programming

python官方文档提到了' struct' module用于在Python和二进制数据结构之间进行转换。 这里的二进制数据结构是指什么?据我所知,数据结构是否指的是网络相关C函数中定义的数据包结构?

struct.pack(fmt,v1,v2)是否以fmt格式构建字段v1,v2的C等效结构?例如,如果我正在构建一个IP数据包,我的fmt是IP头,值是ip header feilds? 我指的是this example,同时了解如何构建网络数据包。

1 个答案:

答案 0 :(得分:1)

二进制数据结构是指内存中数据的布局。 Python的对象比简单的C TIMESTAMP WITH TIME ZONE复杂得多。 Python对象中有大量的头数据,这使得完成Python解释器的常见任务变得更加简单。

您的解释基本上是正确的。另一个需要注意的重要事项是我们指定一个特定的字节顺序,它可能与标准C结构使用的字节顺序相同,也可能不同(取决于您的机器架构)。