2016-10-21 1 views
1

Ich bin hier um einen IRCBot mit Boost.Asio zu schreiben, und ich habe die Funktion getmsg:C++ keine Ausgabe, Boost.Asio

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; 
} 

In meiner Hauptfunktion, wenn std :: cout < < Text; Ich erhalte eine Ausgabe, aber wenn std :: cout < < „Hallo“ versucht, scheint nichts zu passieren:

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


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

Überprüfen Sie, ob dies funktioniert: std :: cout << "TEST:" << Text; – MayurK

Antwort

0

Der Fehler Sie wahrscheinlich fragen werden, da Sie nicht die stdout spülen Sie: std::cout << "TEST" << std::flush; Diese hat nichts mit boost :: asio zu tun.

Allerdings hat Ihr Asio-Code auch einen möglichen Fehler: Sie suchen PING : dort in einem einzigen Leseanruf, der nie in einem einzigen Leseanruf empfangen werden könnte, aufgrund der Tatsache, wie TCP funktioniert (es ist ein Stream, nicht Pakete). Wenn es UDP-Socket ist, würde es funktionieren.