2011-09-26 22 views
0

我們試圖使用winapi的寬字符串函數來檢索註冊表信息。然後我們需要通過網絡傳輸這些信息。通過boost提供混合Unicode和單字節字符的最佳方法:: asio

LPWSTR PerfData = (LPWSTR) malloc(8192); 
RegQueryValueEx(hSubKey, TEXT("DisplayName"), NULL, NULL, (LPBYTE) PerfData, &cbData); 

既然我們有寬字符字符,我們將用xml填充單字節字符。儘可能節省帶寬是非常重要的,因爲當我們使用單個字節時,它在數千臺計算機上迭代時已經堵塞了我們的網絡。

另外,我怎麼去分開這些在另一邊?

+1

它們是如何填充的 - 如果堵塞網絡,我懷疑你需要看看這些消息,而不是僅僅減少一半的尺寸 – Mark

+0

最小的xml填充。我主要關心的是不要因爲xml的雙字節字符而無法進一步阻塞它。雙字節字符適用於數值數據。我希望能夠在我認爲合適的情況下轉移兩者,並讓服務器和客戶端都知道我要發送的內容。 – Bluebaron

+1

你可以使用UTF8嗎? USASCII爲1字節,多奇異卡爲多字節。你需要知道你發送的角色的粗略分佈,才能知道這是一場勝利。 –

回答

0

迄今爲止我使用的最便宜的(按照帶寬)協議是Google的protobuf。 我強烈推薦它。至於boost-asio,它不會造成任何開銷 - asio是一個不錯的選擇。你也可以考慮壓縮它(與asio一起使用boost iostreams gzip filter)。

+0

好的。仍然主要的問題是如何發送這些混合數據並讓服務器知道哪個是哪個? – Bluebaron

+0

爲什麼不使用utf8?編碼解碼將是自動的 - 這正是utf8發明的原因。這是一個選擇嗎? – long404

+1

另外,如果你使用壓縮,我不確定它會很重要。 Gzip可以將字符流的總大小減小到20-40x。 XML是強制性的嗎?它肯定會膨脹你的數據。 – long404

相關問題