2009-10-27 158 views
3

我正在学习套接字编程(在Python中),我想知道封装数据的最佳/典型方法是什么?我的数据包将用于在接收端发出运行,停止,配置等命令。使用JSON还是直接文本有帮助?设计一个简单的网络包

回答

1

我建议你使用固定格式或大多数固定格式,因为这样做会让事情变得更简单。
届时使用的功能,如标准库的struct.Struct,其包()和umpack()方法,也可能是更多特色略微pacakges如Construct,你应该有很多为你做解析工作;-)

0

如果您正在开发某种学习练习,您可能会发现最好使用结构化文本(即人类可读和人为可写)格式。

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

一般来说文本在数据包大小方面效率较低,但它具有如下优点:如果执行数据包捕获(例如,使用wireshark)或者如果要使用telnet模仿客户端。

如果这只是一个学习练习,那么调试的便利性是一个重要问题。

0

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

1

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

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