Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Сети > boost::asio проблема с передачей больших пакетов


Автор: semensemenov 22.2.2011, 12:20
День добрый!

Возникла проблема с передачей больших пакетов.
Не получается передать пакет больше 65535 байт

Код

void connection::write(unsigned char* data, unsigned long data_size, unsigned char packet_code)
{
    write_data = data;

    tHeader* header = (tHeader*)write_data;
    header->SystemCode = config.SystemCode;
    header->SubsystemCode = config.SubsystemCodeOwner;
    header->Key = config.Key;
    header->PacketSize = data_size + sizeof(tHeader);
    header->PacketCode = packet_code;

    boost::asio::async_write(socket_, boost::asio::buffer(write_data, header->PacketSize), boost::asio::transfer_all(),
        boost::bind(&connection::handle_write, this, boost::asio::placeholders::error,
            boost::asio::placeholders::bytes_transferred));

}

void connection::handle_write(const boost::system::error_code& error, std::size_t bytes_transferred)
{
    if(!error)
    {
    }
    else
    {

        handle_error(error);
    }
}


При передаче пакетов меньше 65535 код работает.
Если передаем больше в handle_write получаем ошибку:
10014: Система обнаружила недопустимый указатель адреса при попытке использовать в вызове аргумент указателя.

Если кто сталкивался - ткните плиз. Возможно код не корректный?

Автор: semensemenov 22.2.2011, 12:38
Проблема решилась. Не правильно освобождалась память под data.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)