powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / Работа с boost::asio::streambuf
4 сообщений из 4, страница 1 из 1
Работа с boost::asio::streambuf
    #38877260
boltnik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Пишу ассинхронный сервер на 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
Работа с boost::asio::streambuf
    #38877291
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
boltnik,

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

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


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