2011-09-26 19 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

相关问题