• Python网络编程—struct模块的使用


    struct模块的使用

    1.原理: 将一组简单数据进行打包,转换为bytes格式发送。或者将一组bytes格式数据,进行解析。

    2.接口使用

    Struct(fmt)

    • 功能: 生成结构化对象
    • 参数:fmt 定制的数据结构

    st.pack(v1,v2,v3....)

    • 功能: 将一组数据按照指定格式打包转换为bytes
    • 参数:要打包的数据
    • 返回值: bytes字节串

    st.unpack(bytes_data)

    • 功能: 将bytes字节串按照指定的格式解析
    • 参数: 要解析的字节串
    • 返回值: 解析后的内容

    struct.pack(fmt,v1,v2,v3...)

    struct.unpack(fmt,bytes_data)

    说明: 可以使用struct模块直接调用pack unpack。此时这两函数第一个参数传入fmt。其他用法功能相同

     1 """
     2 思路分析
     3 1. 创建udp套接字
     4 2. 循环接收内容
     5 3. 将接收内容写入文件
     6 """
     7 
     8 from socket import *
     9 import struct
    10 
    11 # udp
    12 s = socket(AF_INET,SOCK_DGRAM)
    13 s.bind(('127.0.0.1',8888))
    14 
    15 # 数据结构
    16 st = struct.Struct("i32sif")
    17 
    18 # 打开文件
    19 f = open('student.txt','a')
    20 
    21 while True:
    22   data,addr = s.recvfrom(1024)
    23   data = st.unpack(data) # 解析数据
    24 
    25   # 整理数据
    26   info = "%d   %-10s   %d   %.1f
    "%
    27          (data[0],data[1].decode(),data[2],data[3])
    28   f.write(info)
    29   f.flush()
    30 
    31 f.close()
    32 s.close()
    struct_recv
     1 from socket import *
     2 import struct
     3 
     4 # 服务器地址
     5 ADDR = ('127.0.0.1',8888)
     6 
     7 # 格式 与服务端一致
     8 st = struct.Struct("i32sif")
     9 
    10 s = socket(AF_INET,SOCK_DGRAM)
    11 
    12 while True:
    13   print("==========================")
    14   id = int(input("ID:"))
    15   name = input("Name:").encode()
    16   age = int(input("Age:"))
    17   score = float(input("Score:"))
    18   # 打包数据
    19   data = st.pack(id,name,age,score)
    20   s.sendto(data,ADDR)
    21 
    22 s.close()
    struct_send

  • 相关阅读:
    使用element-ui table expand展开行实现手风琴效果
    使用js生成二维码和条形码
    js时间戳转换时间、距当前时间
    使用js在浏览器中禁止右键、审查元素、复制功能
    VS Code编辑器插件整理及配置设定
    在vue项目中使用canvas-nest.js,报parameter 1 is not of type 'Element'
    JS中的函数
    Babel 7 初探
    package-lock.json 文件
    Js 中的数组
  • 原文地址:https://www.cnblogs.com/maplethefox/p/10989048.html
Copyright © 2020-2023  润新知