2012-09-27 75 views
0

使用TCP服務器/客戶端安裝有插座,我將如何去送點東西如哈希表的內容從服務器到客戶端?發送哈希表中的內容通過套接字

我正在尋找的格式是這樣IP address: content

+0

*您一般*想通過讀取*數據*總分源,將其發送到處理這樣的事情目的地,並讓目的地將其插入到其末尾的哈希表中。這是*可能*使其他計劃的工作,但充滿了問題。 –

+0

是否有可能分解哈希表中的鍵和值對,將它們添加到字符串中,然後遍歷它以便我可以將它發送到客戶端? –

+0

這取決於它們代表什麼樣的數據開始。把它們放入一個沒有歧義的單個字符串可能是不平凡的。 –

回答

0

你需要在另一端表以相同的順序進行重建?如果是這樣,你需要發送陣列位置。如果沒有,您可以按照您喜歡的順序和客戶端可以插入的順序發送所有字符串。

最簡單的方法是在文本模式下發送,儘管這往往使得在客戶端多一點的工作。就個人而言,我會送表的大小以及字符串預期的數量,並在每行一個條目:

117 5 
puppy 
kitten 
cub 
joey 
duckling 

如果我需要的陣列位置也沒有什麼錯與文本送他們以及(但你可能更喜歡二進制):

117 5 
8 puppy 
42 kitten 
57 cub 
101 joey 
105 duckling 
0

我建議你用msgpack二進制序列化格式收拾你的哈希表,發送至您的插座,解壓縮後的另一邊。

例如在Ruby中(這只是一個例子 - msgpack可以用many other languages!)這將給:

require "msgpack" 
> msg = {"192.0.2.1"=>"foo", "192.0.2.2"=>"bar"}.to_msgpack 
=> "\x82\xA9192.0.2.1\xA3foo\xA9192.0.2.2\xA3bar" 
> msg.bytesize 
=> 29