我在将正在从wxWidgets中的套接字读取的内容转换为wxString时遇到问题。我这样做是这样的:

wxChar * readBuffer = new wxChar[256];
wxSocketClient * connection = new wxSocketClient();
connection->Connect(addr, true);
connection->Read(readBuffer, 256);
wxString wasRead(readBuffer);
std::cout << wasRead.mb_string() << std::endl;


它一直挂在打印字符串上,有没有更好的方法呢?

最佳答案

您的readBuffer可能不会被null终止。实际上,它可能仅包含部分消息。

最简单的“修复”是确保它以null结尾

您可以使用LastCount()确定实际读取的字节数。

但是,真正的解决方法是在服务器和客户端之间建立一个简单的协议,以便您可以确定何时接收到整个消息,然后再将其打印出来。

connection->Read(readBuffer, 255);       // leave room for null terminator
readBuffer[connection->LastCount()/2] = L'\0';      // ensure null terminated


我假设您正在使用unicode构建。如果您不这样做,请删除/ 2

关于c++ - wxWidgets从套接字读取,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7922650/

10-11 18:40