标签:rom 文件类型 缓存 cmd struct shell 字节 解决 code
自定义报头
head_dic = {"filename":"文件名",
"md5":11111111111,
"size":total_size}
json形式的报头
head_dic_json = json.dumps(head_dic)
bytes形式报头
head_dic_json_bytes = head_dic_json.encoude('utf-8')
bytes长度
len_head = len(head_dic_json_bytes)
将不固定的int总字节数转换成固定长度的4个字节
head_size = struct.pack('i',len_head)
发送固定字节
conn.send(head_size)
发送字典的bytes数据
conn.send(head_dic_json_size)
发送总数据(result)
接收4个固定字节的报头
from_server_data = client.recv(4)
将接收到的4个字节的固定报头翻转会字典的bytes长度
len_dic_size = struct.unpack('i',from_server_data)
通过翻转的长度接收字典的bytes数据
dic_bytes = client.recv(len_dic_size)
将bytes类型装换成json类型的字典
dic_json = dic_bytes.decode('utf-8')
json反序列化成原字典
dic = json.loads(dic_json)
得到原字典就得到了源数据的总字节数
total_size = dic["size"]
服务端
import socket
server = socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
# 基于网络的UDP协议的socket
server.bind(('192.168.14.198',9000))
while 1:
from_client_data = server.recvfrom(1024) # 阻塞,等待客户来消息
print(f'\033[1;35;0m来自客户端{from_client_data[1]}: {from_client_data[0].decode("utf-8")} \033[0m')
# to_client_data = input('>>>').strip()
# server.sendto(to_client_data.encode('utf-8'),from_client_data[1])
2,client端
? udp
import socket
client = socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
# 基于网络的UDP协议的socket
while 1:
to_server_data = input('>>>:').strip()
client.sendto(to_server_data.encode('utf-8'),('127.0.0.1',9000))
# data,addr = client.recvfrom(1024)
# print(f'来自服务端{addr}消息:{data.decode("utf-8")}')
标签:rom 文件类型 缓存 cmd struct shell 字节 解决 code
原文地址:https://www.cnblogs.com/daviddd/p/12034313.html