客戶是寫這樣
垃圾值的boost ::數組::短耳
std::string line;
std::cin>>line;
boost::asio::write(socket, boost::asio::buffer(line));
服務器是閱讀這樣
void reader(){
socket_.async_read_some(boost::asio::buffer(buf),
boost::bind(&tcp_connection::handle_read,shared_from_this()));
}
void handle_read()
{
std::cout.write(buf.data(),1024);
std::cout<<"\n";
}
tcp::socket socket_;
boost::array<char, 1024> buf;
現在,當我寫從客戶端一條線「你好你好」,它只是打印「你好」,然後垃圾值
這裏是服務器顯示輸出:
helloA0�B��B�����a�Pa�!0�B�b����uB�`�#K|BP�b��D4B���Bb�Pa���e��e�����pc�!0�Be���xB�`�#KcBe�:7B�����e��e���
怎麼能我從客戶端刪除此垃圾值,並獲得完整的消息/在線
而垃圾因爲2而顯示出來。您寫入1024個字節,遠遠超過您的消息。 –
@ tsv.dimitrov這就是爲什麼他應該關心''\ 0''。 – ikh
我認爲std :: cout.write()總是會寫入count(第二個參數)字節數,不管是否存在\ 0。 –