我正在学习套接字编程(在Python中),我想知道封装数据的最佳/典型方法是什么?我的数据包将用于在接收端发出运行,停止,配置等命令。使用JSON还是直接文本有帮助?设计一个简单的网络包
3
A
回答
1
我建议你使用固定格式或大多数固定格式,因为这样做会让事情变得更简单。
届时使用的功能,如标准库的struct.Struct,其包()和umpack()方法,也可能是更多特色略微pacakges如Construct,你应该有很多为你做解析工作;-)
0
如果您正在开发某种学习练习,您可能会发现最好使用结构化文本(即人类可读和人为可写)格式。
一个例子是每个命令使用固定数量的字段,固定宽度的文本字段和/或易于分析的字段分隔符。
一般来说文本在数据包大小方面效率较低,但它具有如下优点:如果执行数据包捕获(例如,使用wireshark)或者如果要使用telnet模仿客户端。
如果这只是一个学习练习,那么调试的便利性是一个重要问题。
0
看看scapy(一个很棒的Python数据包操作库)如何实现它。看起来像有一个handful of fields。
1
我建议以纯文本开始 - 它更容易调试。你的文本所采用的格式取决于你在做什么,有多少命令,参数等等。你是否充实了你的命令的外观?一旦你弄清楚它看起来会是什么样子,它可能会建议一种格式。
您使用的是TCP还是UDP? TCP很容易,因为它是一个流,但是如果你使用UDP,请记住UDP数据包的最大大小,因此消息可以有多大。
相关问题
- 1. 简单的网络应用程序设计
- 2. 网络简单网络连接的简单Qt代码
- 3. 简单的网页设计的好工具/软件包
- 4. TensorFlow上的简单网络
- 5. 设计/分割挂在网络表单
- 6. 寻找一个简单的Python/MongoDB的网络教程
- 7. 一个简单的纸牌游戏的Python网络库
- 8. 如何设置一个简单的网络服务器(Windowws XP Pro)
- 9. 一个简单的网络服务器切换二郎
- 10. 如何验证一个简单的网络表格
- 11. 设计贝叶斯网络
- 12. 网络UDP广播设计?
- 13. 神经网络设计
- 14. Android的 - 简单的设计
- 15. 简单的网络服务器或网络的测试框架
- 16. 简单的网络监测出站数据包丢失
- 17. 简单的CMS设计师
- 18. 简单的设计选择?
- 19. 帮助设计一个安全的网络协议
- 20. 简单的ehcache程序来验证多播的网络设置
- 21. 简单的TCP网络与C#
- 22. 如何改进简单的网络
- 23. Java中的简单网络聊天
- 24. 简单网络门户的UML类图
- 25. 简单的网络帮助(C#WinForms)
- 26. 简单的Java网络程序
- 27. 在android上的简单网络爬虫?
- 28. 简单的Python网络爬虫
- 29. Qt中简单的网络超时(C++)
- 30. 创建简单的P2P网络