0
我目前正在使用Boost ASIO在客戶端服務器TCP/IP應用程序上工作。 客戶端使用下面的語句從客戶端接收數據時出現異常 - 「文件結尾」錯誤
boost::system::error_code ignored_error;
boost::asio::write(socket, boost::asio::buffer("Hello World\0"), ignored_error);
服務器讀取此數據作爲這樣的將數據發送到服務器(從非同步。讀取)
boost::asio::async_read(*sock, boost::asio::buffer(buf_server),boost::bind(&ServerRead,boost::asio::placeholders::error));
這裏就是讀數完成
boost::array<char, 158> buf_server;
void ServerRead(const boost::system::error_code& error)
{
if(!error)
{
std::cout << "Message: " << buf_server.data() << std::endl;
}
else
{
std::cout << "Error occurred." << error.message() << std::endl;
}
}
但是,我收到錯誤「文件結束」。 所以現在我有兩個問題
我該如何解決這個問題。我在這裏做錯了什麼?
假設我的
buf_server
只有5個字符而不是158.我怎樣才能讓我的接收器使用這個緩衝區只讀取整個數據而std::cout
呢?