设计一个简单的网络数据包

时间:2009-10-27 22:03:59

标签: python network-programming

我正在学习socket编程(在python中),我想知道封装数据的最佳/典型方式是什么?我的数据包将用于在接收方发出运行,停止,配置等命令。使用JSON或直接文本是否有帮助?

4 个答案:

答案 0 :(得分:1)

我建议您使用固定格式或大多数固定格式,因为这样可以使事情变得更容易 然后使用诸如标准库的 struct.Struct 之类的功能,以及它的pack()和umpack()方法,或者可能是一些稍微更具特色的pacakges,例如Construct,你应该有很多为你完成的解析工作; - )

答案 1 :(得分:1)

我建议开始使用纯文本 - 它更容易调试。文本采用的格式取决于您正在做什么,有多少命令,参数等。您是否充实了命令的外观?一旦你弄清楚它看起来像什么,它可能会建议一个单独的格式。

您使用的是TCP还是UDP? TCP很容易,因为它是一个流,但是如果你使用UDP,请记住UDP数据包的最大大小,以及你的消息有多大。

答案 2 :(得分:0)

如果你正在开发一些学习练习,你可能会发现最好采用结构化文本(即人类可读和人类可写)格式。

一个例子是每个命令使用固定数量的字段,固定宽度的文本字段和/或易于分析的字段分隔符。

通常,文本在数据包大小方面效率较低,但如果您执行数据包捕获(例如,使用wireshark)或者您希望使用telnet模拟客户端,它确实具有可以轻松读取的优点。

如果这只是一个学习练习,那么易于调试是一个重要问题。

答案 3 :(得分:0)

看看scapy(一个很棒的Python数据包操作库)如何实现它。看起来有handful of fields

相关问题