C ++没有输出,boost.asio

时间:2016-10-21 19:23:52

标签: c++ string boost network-programming boost-asio

我准备使用Boost.Asio写一个IRCBot,我有函数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?
}

1 个答案:

答案 0 :(得分:0)

您询问的错误很可能是因为您没有刷新标准输出:std::cout << "TEST" << std::flush;这与boost :: asio无关。

但是你的asio代码也有一个可能的错误:你正在单个读取调用中寻找PING :,这可能永远不会在单个读取调用中接收,因为TCP的工作原理(它是一个流,而不是数据包)。如果它是UDP套接字,它将起作用。