python- socket通信 以16进制的数据进行传递与解析

本文介绍如何使用Python进行socket通信,重点在于如何处理以16进制形式传输和解析二进制数据。通过实例展示了在项目开发中控制USR-R16-T继电器灯通断的过程。
摘要由CSDN通过智能技术生成


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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值