Увеличить asio multi-сокет async_читать неверные данные

Клиент: многосетевая конструкция из одного io_service в потоке.

Сервер: многосетевая конструкция из другого io_service в другой теме.

Сообщение об ошибке:

Read wrong data

в то время как сервер async_read размер буфера больше клиентского async_write размер буфера

даже установить async_read CompletionCondition

size_t ServerUploadJob::remainBufSize(const boost::system::error_code& error, size_t transferred)
{
    if (error)
        return 0;
    auto header = (MessageHeader*)buf.data();
    if (header->magic == MESSAGE_HEADER_TAG) {
        if (transferred < sizeof(MessageHeader))
            return int(sizeof(MessageHeader) - transferred);
        else if (transferred < header->messageSize)
            return int(header->messageSize - transferred);
        else
            return 0;
    }
    return boost::asio::detail::default_max_transfer_size;
}

0 ответов

Другие вопросы по тегам