假设我有 2 个列表,它们是点的 x 和 y 坐标。现在我想通过套接字将 2 个列表发送到网络上的其他计算机。因为我想发送列表,所以我将列表附加到列表中以形成列表列表,然后发送数据。
1.As 它们是列表,我需要腌制它们吗?
2.At 接收方,如何取消选择列表并将值存储在 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]]
将列表发送给接收者
在接收器处:
a=socket.recv(1024)
现在如何解腌和区分列表?
更好的选择是像 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.As 它们是列表,我需要腌制它们吗?
是的,通过网络发送的任何对象都需要序列化。泡菜或JSON化它,你的电话。
2.At 接收方,如何解开列表并将值存储在 2 个不同的列表中?
使用上述json.loads(..)
,或腌制特定功能。在上面的代码中,list_received[0]
将是第一个列表,list_received[1]
将是第二个列表,依此类推。