2014-02-18 52 views
0

假設我有2個列表,它們是點的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]] 

發送列表到reciever

在接收器:

一個= socket.recv(1024)

現在如何unickickle和區分列表?

回答

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.As他們名單,我需要醃呢?

是的,任何通過電線發送的對象都需要序列化。泡菜或JSON化它,你的電話。

2.在接收端我如何取消列表並將值存儲在2個不同的列表中?

使用json.loads(..)如上,或pickle特定功能。在上面的代碼中,list_received[0]將成爲第一個列表,list_received[1]將成爲第二個列表等。