c ++ Boost async_read_some + старые данные в буфере - PullRequest
0 голосов
/ 31 декабря 2018

Есть небольшой прокси-сервер, который передает запрос - получает ответ - выдает браузер.+/- все работает, но в нем есть одни баги.Я получаю данные от клиента следующим образом:

   void handle_handshake(const boost::system::error_code& error, int num)
    {
    if (!error)
    {

        socket_.async_read_some(boost::asio::buffer(data_, 1024),
            boost::bind(&Session::handle_read, this,
                boost::asio::placeholders::error,
                boost::asio::placeholders::bytes_transferred, num));
    }
    else
    {
        delete this;
    }
}

void handle_read(const boost::system::error_code& error,
    size_t bytes_transferred, int num)
{
    if (!error)
    {

std::cout << "data_: " << data_ << std::endl;

}

}

В data_ (char data_ [1024]) записываются данные, и иногда он получает данные из старого запроса, например:

HTTP/1.0 200 OK
Content-Type: application/json
UserIP: 127.0.0.1
Host: test.com
Connection: keep-alive
Origin: https://test.com
User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML,like Gecko) Chrome/70.0.3538.110 Safari/537.36
Content-Type: application/json
Accept: */*
Referer: https://test.com/
Accept-Language: ru,en-US;q=0.9,en;q=0.8,uk;q=0.7
Cookie: _ga=GA1.2.508780938.1527764085
Accept-Encoding: gzip, deflate
Content-Length: 39

{"code":"-1","msg":"","result":"err"}

Accept-Language: ru,en-US;q=0.9,en;q=0.8,uk;q=0.7
Cookie: _ga=GA1.2.508780938.1527764085
Accept-Encoding: gzip, deflate
Content-Length: 104

Соответственно, пакет должен заканчиваться {"code": "- 1", "msg": "", "result": "err"} ...

Пожалуйста, помогите.как очистить буфер, после чтения или как организовать чтение данных из сокета?Заранее спасибо!

...