我在将正在从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/