码迷,mamicode.com
首页 > 编程语言 > 详细

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

时间:2019-06-07 21:08:12      阅读:99      评论:0      收藏:0      [点我收藏+]

标签:png   ==   div   class   play   pen   sendto   创建   技术   

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\n"%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

技术图片

 

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

标签:png   ==   div   class   play   pen   sendto   创建   技术   

原文地址:https://www.cnblogs.com/maplethefox/p/10989048.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!