BOOST ASIO - асинхронные розетки - PullRequest
1 голос
/ 12 октября 2011

Я пытаюсь использовать асинхронные сокеты библиотеки BOOST ASIO. Моя платформа Linux. Мой клиент отправляет данные, которые я могу прочитать на стороне сервера. Для отправки данных во второй раз, клиент должен подключиться снова. Есть ли способ, которым я могу использовать асинхронные сокеты и поддерживать соединение живым до явного отключения.

Детали моего кода: -

На стороне сервера я использовал async_accept (), который выглядит следующим образом

_acceptor.async_accept(_connection->socket(),
    boost::bind(&Server::handleAccept,
                     this,
                     boost::asio::placeholders::error));

handleAccept() looks like this
{
    _connection->start();
    _connection.reset(new Connection(_ioService));
    _acceptor.async_accept(_connection->socket(),
                           boost::bind(&Server::handleAccept,
                           this,
                           boost::asio::placeholders::error));
}

start() function looks like this:-
  _socket.async_read_some(boost::asio::buffer(_buffer),
                          _strand.wrap(
                            boost::bind(
                              &Handler::handleRead,
                              shared_from_this(),
                              boost::asio::placeholders::error,
                              boost::asio::placeholders::bytes_transferred
                              )
                          )

В моей функции handleRead() я сбрасываю данные на экран.

1 Ответ

5 голосов
/ 12 октября 2011

хорошо в Handler::handleRead() Вы должны запланировать async_read_some() снова

...