2011-06-14 24 views
9

我是一個Python初學者,我很好奇我怎麼可以通過TCPPython的發送字典throught TCP

送字典
+1

TCP是相當低級的,這意味着您必須更多地瞭解您正在做的事情以使其正確。像[simplexmlrpcserver](http://docs.python.org/library/simplexmlrpcserver.html)和[xmlrpclib](http://docs.python.org/library/xmlrpclib.html)這樣的高級應用可能會更容易和更多強大的。 – 2011-06-14 10:05:48

回答

13

你應該pickle序列化:

import pickle 
dict = {...} 
tcp_send(pickle.dumps(dict)) 

而在另一端:

import pickle 
dict = pickle.loads(tcp_recieve()) 

如果另一端是不是用Python編寫的,你可以使用數據序列化格式,如xmljsonyaml

10

您可以使用pickle任何Python對象(包括字典)轉換爲字節流,然後可以通過TCP發送,並在接收端進行清理。

或者,您可以使用json,它不依賴於接收端是Python客戶端。

+1

如果服務器相對自由,誰可以發送數據以取消選中,Pickle可能是個不錯的主意 - 正如文檔所述:「pickle模塊並不是爲了防止錯誤或惡意構建的數據。不可信或未經認證的來源。「 – delnan 2011-06-14 10:00:51

+0

和插座介紹是在這裏:http://docs.python.org/howto/sockets.html – 9000 2011-06-14 10:00:55

3

因爲對象永遠不會被信任地重建,Pickle被認爲是不安全的,因爲它在連接之間發送數據結構。這就是爲什麼yaml,json或任何其他格式被認爲更可取的原因。

+1

好點。這是一個評論,但不是一個答案。 – Christian 2013-01-17 11:21:42

0

是的。其可能不安全。但你可以使用https並通過post方法發送。爲了獲得方便,請嘗試在發送之前考慮加密醃菜