UDP daytime example
ブーストasioチュートリアルから読んでいました。を使用し、recv_buffer_
を使用async_receive_from()
して受信ループを実行します。
socket_.async_receive_from(
boost::asio::buffer(recv_buffer_), remote_endpoint_,
boost::bind(&udp_server::handle_receive, this,
boost::asio::placeholders::error,
boost::asio::placeholders::bytes_transferred));
わからないのは
boost::array<char, 1> recv_buffer_;
なぜそのサイズは1ですか?メッセージが 1 バイト以上の長さで受信された場合はどうなりますか?
編集
@Guy Sirton が指摘したように、そのページに書かれている hsi の部分を見逃していました。
クライアントのリクエストを格納するために 1 バイトの recv_buffer_ のみを提供するため、クライアントがそれよりも大きなリクエストを送信すると、io_service オブジェクトはエラーを返します。このようなエラーが発生した場合は無視できます。
しかし、バッファサイズなしでメッセージ全体を読む方法はありますか? 文字ごとにループreceive_some
して文字列に格納するような?