首页 > 其他 > 详细

struct模块

时间:2020-03-02 14:43:53      阅读:62      评论:0      收藏:0      [点我收藏+]

struct模块的使用

pack和unpack用法是主要用于解决TCP协议的产生的粘包问题

  • pack用法:
    • pack是把输入的数值打包成为4个字节的长度,无论数值多少,pack后的结果都是4个字节,这样可以先把文件的长度确定下来,通过打包把长度传递过去,通过长度来接收文件。
    • 格式:
      l_s = struct.pack(‘i‘, 数据的长度)
      sk/conn.send(l_s)

    第一个必须是类型,数值对应的是‘i‘, 第二个是数据的长度

  • unpack用法:
    • unpack是把传递过来的数据长度解包为可以看懂的正常数值
    • 格式:
      l_r = conn/sk.unpack(‘i‘, 打包的数据/l_s)[0]
      conn/sk.recv(l_r)

      第一个必须是打包前的原数据类型,第二个需要解包的数据, 解包后的数据是由长度组成的元组,必须转换取下标为0

'''client.py'''
import struct
a ='123456adsfghvcxaasdfghbvc'
l = len(a)
s = struct.pack('i', l)
print(s)
sk.send(s)

# 结果是:b'\x19\x00\x00\x00'
'''server.py'''
import struct
# l_pack = sk.recv()
# length = struct.unpack('i', l_pack)
length = struct.unpack('i', b'\x19\x00\x00\x00')[0]
print(length)

# 结果是:(25,)

struct模块

原文:https://www.cnblogs.com/ddzc/p/12394975.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!