Python 通过网络发送多个列表(列表列表)

Python 通过网络发送多个列表(列表列表),python,list,sockets,pickle,Python,List,Sockets,Pickle,假设我有两个列表,它们是点的x和y坐标。现在我想通过套接字将这两个列表发送到网络上的其他计算机。因为我想发送列表,所以我将列表附加到列表中以形成列表列表,然后发送数据 1.由于它们是列表,我需要对它们进行腌制吗? 2.在接收者一侧,如何取消勾选列表并将值存储在两个不同的列表中? 下面给出了说明这种情况的示例: listx=[1,2,3] listy=[4,5,6] list_to_send.append(listx) list_to_send.append(listy) print list_t

假设我有两个列表,它们是点的x和y坐标。现在我想通过套接字将这两个列表发送到网络上的其他计算机。因为我想发送列表,所以我将列表附加到列表中以形成列表列表,然后发送数据

1.由于它们是列表,我需要对它们进行腌制吗?

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.由于它们是列表,我需要对它们进行腌制吗

是的,通过导线发送的任何对象都需要序列化。Pickle或JSONify,你的电话

2.在接收方,我如何取消勾选列表并将值存储在两个不同的列表中

如上所述使用
json.loads(..)
,或者使用pickle特定函数。在上面的代码中,
list\u received[0]
将是第一个列表,
list\u received[1]
将是第二个列表,依此类推