Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / C++ [игнор отключен] [закрыт для гостей] / Работа с boost::asio::streambuf / 4 сообщений из 4, страница 1 из 1
11.02.2015, 17:08
    #38877260
boltnik
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Работа с boost::asio::streambuf
Пишу ассинхронный сервер на boost::asio. Для каждого соединения есть отдельный буффер для приема и отправки.
Как мне после окончания приема через async_read_until очистить receive_buffer для того, чтобы использовать его для следующего вызова async_read_until?
А вообще я правильно использую streambuf ? У меня изначально не известно сколько придет данных из сокета и я читаю данные пока не получу полседовательность "\r\n".
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
class tcp_connection
{
  ...

  boost::asio::streambuf send_buffer, receive_buffer;
	
}

void tcp_connection::receive()
{
	boost::asio::async_read_until(m_socket, receive_buffer, "\r\n",
		boost::bind(&tcp_connection::handle_receive, shared_from_this()/*this*/,
		boost::asio::placeholders::error));
}


void tcp_connection::handle_receive(const boost::system::error_code& error)
{

	if (!error)
	{
	   // обрабатываем данные

          std::istream buff(&receive_buffer);

	 // обрабатываем данные из buff

         // после обработки нужно очистить receive_buffer, но как?

   	  receive(); // в конце начинаем заново для того, чтобы io_service.run() никогда не заканчивался
	
	}
   ...
}
...
Рейтинг: 0 / 0
11.02.2015, 17:46
    #38877291
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Работа с boost::asio::streambuf
boltnik,

Например, буфер можно очищать не после окончания приёма, а до начала следующего приёма.
Может так будет проще.
...
Рейтинг: 0 / 0
11.02.2015, 19:36
    #38877357
boltnik
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Работа с boost::asio::streambuf
Это да. Но меня интересует как?
Потому что у boost::asio::streambuf нет таких методов.
...
Рейтинг: 0 / 0
11.02.2015, 20:40
    #38877389
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Работа с boost::asio::streambuf
boltnik,

Я вообще нифига не знаю про это библиотеку, но на худой конец можно просто создать новый объект boost::asio::streambuf, а старый уничтожить.
...
Рейтинг: 0 / 0
Форумы / C++ [игнор отключен] [закрыт для гостей] / Работа с boost::asio::streambuf / 4 сообщений из 4, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]