python协议_对python⾃定义协议的⽅法详解
前⾯说到最近在写python的⼀些东西,然后和另外⼀位⼩伙伴定义了协议,然后昨天我有⼀部分东西没理解对,昨天上午我⾃⼰重写了⼀遍接收和发送的全部逻辑,昨天下午补了压⼒测试的脚本,⾃测没问题之后告知联调的⼩伙伴。
结果上午还是出了⼀点问题,然后我们两对代码,他写了⼀个python的实现。还好最后我这边没问题。(我也害怕是我这边出问题啊,所以我⾃⼰的代码都⾃⼰检查了好⼏遍)
简单放⼀下他的实现:
import struct
车载充电器怎么用import ctypes
class E(Exception):
def __init__(lf, what):
lf.what = what
def __str__(lf):西藏的英文
return lf.what
def unmarshall_packet(pk):
if len(pk) < 12:
rai E("Invalid pk header")
size, uri, prop_count = struct.unpack("
print "size:%d uri:%d prop_count:%d" % (size, uri, prop_count)
if len(pk) - 12 != size - 8:
rai E("Invalid pk length")
ss = pk[12:]
offt = 0
瓦尔拉斯均衡
for x in range(0, prop_count):
# Pop key
key_size, = struct.unpack_from("
print "key_size:%d" % (key_size,)
email是什么意思
offt += 4
key, = struct.unpack_from("
offt += key_size
# Pop value
val_size, = struct.unpack_from("
offt += 4
print "val_size:%d" % (val_size,)
简历val, = struct.unpack_from("
offt += val_size
print "key:%s val:%s" % (key, val)
key1 = "key1"
val1 = "val1"
key2 = "key2"
val2 = "val2"
offt = 0
ss = ate_string_buffer(9085)
struct.pack_into("
offt += 12
struct.pack_into("
len(val1) + 1, val1, '\0',
宝宝脑瘫
len(key2) + 1, key2, '\0',
我的新年愿望300字作文len(val2) + 1, val2, '\0')
offt += len(key1) + len(val1) + len(key2) + len(val2) + 4 + 16
unmarshall_packet(ss[:offt])
"""
hex=""
ss = bytearray.fromhex(hex)
unmarshall_packet(ss)
校本教研计划
有很多可以学习的地⽅
⼀个是python 的 struct 对 bytearray 的操作真是舒服,直接放进去就可以了(之前我有不少东西都是徒⼿解的,回头再⽤这个优化下⾃⼰的代码吧。)
另外⼀个是vi写代码真是直接⽅便
要说缺点的话,应该是⽤私有协议,没有第三⽅⼯具可以作为公证,例如postman之类的。
以上这篇对python ⾃定义协议的⽅法详解就是⼩编分享给⼤家的全部内容了,希望能给⼤家⼀个参考,也希望⼤家多多⽀持我们。
本⽂标题: 对python ⾃定义协议的⽅法详解