使用UDP链接传输结构化数据
"""
struct_send.py
使用struct将数据进行打包成一定格式,通过udp将字节串传送至服务端
"""
from socket import *
import struct
#创建udp连接
s = socket(AF_INET,SOCK_DGRAM)
#服务端地址
ADDR = ('127.0.0.1',8888)
#创建struct对象并定义数据格式
st = struct.Struct('i32sif')
while True:
#循环接收数据
id = int(input("ID:"))
title = input("Name:").encode()
size = int(input("Age:"))
score = int(input("Score:"))
#将数据进行打包
data = st.pack(id,title,size,score)
#传输数据
s.sendto(data,ADDR)
====================================
"""
struct_receive.py
接收到struct压缩的数据进行解压后写入本地文件
"""
from socket import *
import struct
#创建struct对象,数据格式为“i32sif”,整型,32位字符串,整型,浮点型
st = struct.Struct('i32sif')
#创建udp连接
s = socket(AF_INET,SOCK_DGRAM)
#绑定地址
s.bind(('127.0.0.1',8888))
#打开“student.txt”文件
with open("info.txt","a",encoding='utf-8') as f:
#循环接收
while True:
data,addr = s.recvfrom(1024)
#将数据解析
r = st.unpack(data)
print(r[1].decode())
info = "%d %-5s %d %f\n"%(r[0],r[1].decode(),r[2],r[3])
print(info)
#写入文件
f.write(info)
f.flush()