Python:如何通过网络连接传输变长数组
我需要传输一个长度不一的数组,每个元素都是两个整数的元组。举个例子:
path = [(1,1),(1,2)]
path = [(1,1),(1,2),(2,2)]
我试着用打包和解包的方法来处理这个问题,但因为数组的长度不固定,我不知道怎么创建一个格式,让发送和接收的双方都能理解。我试着把它变成一个带分隔符的字符串,比如:
msg = 1&1~1&2~
sendMsg = pack("s",msg) or sendMsg = pack("s",str(msg))
在接收端:
path = unpack("s",msg)
但这样做在这个情况下只打印出1。我还试着发送4个整数,只要不包括表示路径的额外字符串,这样发送和接收都没问题。
sendMsg = pack("hhhh",p.direction[0],p.direction[1],p.id,p.health)
在接收端:
x,y,id,health = unpack("hhhh",msg)
第一个例子是为了说明,我试着发送格式为"hhhhs",但无论如何,路径都没有正确传过来。
谢谢你的帮助。我还想看看怎么发送一个二维整数数组,但我似乎搞不清楚怎么把这些更“复杂”的结构通过网络发送出去。
谢谢你的帮助。
5 个回答
1
你需要一种序列化协议。twisted.spread
就提供了这样一种协议(可以查看 香蕉规范 或者 Perspective Broker 文档)。JSON 或者 协议缓冲区 是更详细的例子。
你还可以看看 数据序列化格式的比较。