Как я мог получить весь буфер? - PullRequest
0 голосов
/ 29 сентября 2019

Я хотел бы иметь возможность читать или получать весь буфер, который был отправлен в сокет.

В настоящее время это мой способ получения данных с сервера.

std::string Client::Receive()
{
    std::string data;
    data.resize(1024);
    m_sock.receive(boost::asio::buffer(data));
    return data;
}

Хотя, если сервер отправляет что-то больше чем 1024 байта, это не будет работать. Я бы хотел преодолеть это препятствие.

Как я мог это сделать?
Большое спасибо!

Ответы [ 2 ]

0 голосов
/ 30 сентября 2019

Вы можете использовать std :: stringstream.

https://ru.cppreference.com/w/cpp/io/basic_stringstream

После чтения из сокета вы можете использовать функцию stringstream :: str () для получения строки из него.

0 голосов
/ 30 сентября 2019

Используйте std :: ostream_iterator https://en.cppreference.com/w/cpp/iterator/ostream_iterator

По сути, это указатель, в который вы можете просто продолжать писать, имейте в виду, что вам нужен реальный поток для его сохранения в

...