Python. 类、结构体、字典?

3 投票
3 回答
647 浏览
提问于 2025-04-16 11:37

我正在把TCP/IP数据包拆解成字符串格式。请问有什么好的方法来组织和存储这些数据呢?我应该用ctypes结构体、Python类、字典,还是其他什么方式来存储?每种方法的优缺点是什么呢?

3 个回答

1

我非常喜欢详细的需求说明。

如果没有这些详细说明,我会选择使用命名元组。

这样你就可以像这样使用:thisPacket.srcPort

然后你可以把你的数据包放进像MongoDB这样的数据库里,之后可以用很酷的方式来查询它们。

1

我非常喜欢用字典来处理这类事情,因为

  1. 你可以像这样使用:thisPacket['srcPort']
  2. 然后你可以把这些数据包放进像MongoDB这样的数据库里,之后可以用很酷的方式查询它们(比如:给我所有从80端口进来的数据包,且来自某个特定的子网,并且有某个标志设置的)
8

你应该使用类。这样可以让你在将来有更多的灵活性去扩展。

字典的语法比较复杂,访问里面的内容时需要写很多代码,而且如果你需要添加一些方法,字典是做不到的。

ctypes主要是用来访问那些为其他API准备的结构。如果你的数据只是在Python中使用,唯一的好处就是它在内存中会占用更少的空间。

撰写回答