によって実装された非常に単純なsocket
サーバーがありますboost::asio
。
tcp::acceptor a(io_service, tcp::endpoint(tcp::v4(), port));
tcp::socket(io_service) sock;
a.accept(sock);
char data[1024];
boost::system::error_code error;
size_t length = sock->read_some(boost::asio::buffer(data), error);
std::cout << "Got: " << data << std::endl;
そして、そのクライアントは次のようになります。
size_t request_length = strlen(request);
boost::asio::write(s, boost::asio::buffer(request, request_length));
(どちらも公式の例から得たものです)
hello, world!
ソケットに送るとGot: hello, world!
すぐに届きました。ただし、そのバッファには1024バイトがあります。いつ読み終えるかをどうやって知ることができますか?
編集:
説明が悪いのでごめんなさい。私の質問は、read_some()
いつ戻るべきかをどうやって知るかです。