假设我有两个列表,它们是点的x和y坐标。现在我想通过套接字将2个列表发送到网络上的其他计算机。因为我想发送列表,所以我将列表附加到列表中以形成列表列表,然后发送数据。
1.由于它们是列表,我是否需要腌制它们?
2.接收方如何取消列表并将值存储在2个不同的列表中?
说明情况的例子如下:
listx=[1,2,3]
listy=[4,5,6]
list_to_send.append(listx)
list_to_send.append(listy)
print list_to_send=>[[1,2,3],[4,5,6]]
将列表发送给收件人
在接收方:
α= socket.recv(1024)
现在如何取消分类和区分列表?
答案 0 :(得分:2)
更好的选择是像JSON这样的结构。腌制是一个很好的选择,但开箱即用,它不太安全。 (不久之后我会在这里提出一个关于此的链接)。另外我假设您的问题更多是关于序列化/反序列化而不是TCP套接字。
>>> import json
>>> list_to_send = []
>>> listx=[1,2,3]
>>> listy=[4,5,6]
>>> list_to_send.append(listx)
>>> list_to_send.append(listy)
>>> json.dumps(list_to_send)
'[[1, 2, 3], [4, 5, 6]]'
>>> msg = json.dumps(list_to_send)
>>> sendOverSocket(msg)
在接收方:
>>> msg = receiveFromSocket()
>>> list_received = json.loads(msg)
我遗漏了上面套接字特定函数的实现。
现在回答你的问题:
1.由于它们是列表,我是否需要腌制它们?
是的,您通过电线发送的任何对象都需要序列化。 Pickle或JSONify它,你的电话。
2.在接收方那边如何取消列表并将值存储在2个不同的列表中?
如上所述使用json.loads(..)
或腌制特定功能。在上面的代码中,list_received[0]
将是第一个列表,list_received[1]
将是第二个列表,依此类推..