在用C/C++写网络打包/解包时,都是自己用指针偏移来实现对象<->二进制之间的互转,现在既然用了python,也要用一下序列化的思想,所以就使用cPickle来完成这件事情。
不过事情并不顺利……
假设我们在server端和client端通过类MManRsp来进行通信,这个类定义在mmanpro.py中,代码如下:
class MManRsp:
ret = 0
pathverlist = []
现在server端对client端回包如下:(源代码并非如此,为了演示,所以简化了代码)
rsp = MManRsp()
data = [('1',1),('2',2)]
for t in data:
x = do_something(t)#还是返回('1',1)这种类型
rsp.pathverlist.append(x)
senddata = cPickle.dumps(rsp)
#send
client端解析为:
rsp = cPickle.loads(recvdata ...