現在、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;
}
}
ただし、「ファイルの終わり」というエラーが表示されます。だから今、私は2つの質問があります
この問題を解決するにはどうすればよいですか。ここで何が間違っていますか?
my
buf_server
が 158 文字ではなく 5 文字だったとします。受信者がこのバッファをデータ全体とstd::cout
それを読み取るためだけに使用するようにするにはどうすればよいでしょうか?