Я использовал пример кода, предоставленного boost, echo server, чтобы попробовать что-то с одним из моих клиентов.Однако, когда я попытался заменить boost::asio::async_read_some
на boost::asio::async_read
, я заметил, что последний будет вызываться только тогда, когда соединение будет разорвано, и read_some будет вызываться каждый раз, когда сообщение будет отправлено с одного из моих клиентов.Что я делаю не так?
Вот оригинальный код https://www.boost.org/doc/libs/1_55_0/doc/html/boost_asio/example/cpp11/echo/async_tcp_echo_server.cpp
Я заменил содержимое do_read () на следующее:
void do_read()
{
auto self = shared_from_this();
boost::asio::async_read(socket_, data_, [this, self](boost::system::error_code ec, size_t l) {
if (!ec)
do_write(l);
});
}