struct.pack也就是将数据按照二进制的格式进行传输 | |
在网络编程中,利用 socket 进行通信时,常常会用到 struct 模块,在网络通信中,大多数传递的数据以二进制流(binary data)存在。传递字符串时无需过多担心,但传递 int,char 之类的基本数据时,就需要一种机制将某些特定的结构体类型打包成二进制流的字符串,然后在进行网络传输,而接收端也可以通过某种机制进行解包还原出原始数据。struct 模块便提供了这种机制,该模块主要作用就是对 python 基本类型值与用 python 字符串格式表示的 C struc 类型间的转化(This module performs conversions between Python values and C structs represented as Python strings.)。 另一种使用场景在与 python 与其他语言之间数据交换时使用,例如 C++ 写的客户端发送了一个 int 型(4字节)的数据到 Python 的服务器,Python 接收到这个数据时,需要解析成 Python 认识的整数,此时就将用到 struct 模块。 |
|
如果熟悉结构体中数据对齐的规则,可以合理设计结构体的结构,各成员变量的顺序,使得所有的数据成员存放在连续的存储区,而且结构体的长度等于所有成员长度之和(可以适当在尾部用字符数组补齐,避免编译器自动填充),这样就方便用send函数发送了。( 如果服务器和客户端都是用C |
python- socket通信 以16进制的数据进行传递与解析
最新推荐文章于 2024-07-20 02:19:24 发布
本文介绍如何使用Python进行socket通信,重点在于如何处理以16进制形式传输和解析二进制数据。通过实例展示了在项目开发中控制USR-R16-T继电器灯通断的过程。
摘要由CSDN通过智能技术生成