C++ no output, boost.asio

C++ no output, boost.asio

本文关键字:boost asio output no C++      更新时间:2023-10-16

我要用Boost写一个IRCBot。Asio和我有函数getMsg:

std::string getMsg()
{
buffer.clear();         //make sure buffer is empty
buffer.resize(512);     //make sure it's big enough for 512char
socket.read_some(boost::asio::buffer(&buffer[0],buffer.size()));
std::size_t pos = buffer.find("PING :");
if(pos != std::string::npos)
{
sendMsg("PONG :" + buffer.substr(pos + 6));
}
return buffer;
}

在main函数中使用std::cout <<文本;我得到了一个输出,但是当尝试std::cout <<"你好",似乎什么也没发生:

while(true)
{
std::string Text = Test.getMsg();
std::cout << Text;        //OUTPUT
}

while(true)
{
std::string Text = Test.getMsg();
std::cout << "TEST";      //NO OUTPUT ---- WHY?
}

您正在询问的错误最有可能发生,因为您没有刷新stdout: std::cout << "TEST" << std::flush;。这与boost::asio无关。

然而,你的asio代码也有一个可能的错误:你正在寻找PING :在一个单一的读调用中,可能永远不会在一个单一的读调用中收到,由于TCP的工作原理(它是一个流,而不是数据包)。