2009-10-27 156 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數據包的最大大小,因此消息可以有多大。