通过boost::asio传输混合unicode和单字节字符的最佳方式



我们正在尝试使用winapi widestring函数来检索注册表信息。然后我们需要通过网络传输这些信息。

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

现在我们有了宽字符串字符,我们将用单字节字符填充它们。尽可能多地节省带宽是很重要的,因为当我们使用单个字节时,它在数千台计算机上迭代,已经阻塞了我们的网络。

另外,我要如何在另一边分开这些呢?

迄今为止我使用过的最便宜的协议(就带宽而言)是Google的protobuf。我强烈推荐它。至于boost-asio,它不会造成任何开销——asio是一个不错的选择。你也可以考虑压缩它(使用boost iostreams gzip filter和asio)。