0

boost::asio::async_read 不调用处理程序并继续接收,正在尝试接收一些我不知道它的长度的缓冲区,但最大值为 1024

#include "AsyncConnection.h"


AsyncConnection::AsyncConnection(boost::asio::io_service& io_service)
    : socket(io_service)
{
}


AsyncConnection::~AsyncConnection()
{
}

AsyncConnection::Pointer AsyncConnection::Create(boost::asio::io_service& io_service){
    return Pointer(new AsyncConnection(io_service));
}

boost::asio::ip::tcp::socket& AsyncConnection::GetSocket(){
    return socket;
}

void AsyncConnection::BeginReceive(){

    boost::asio::async_read(socket, boost::asio::buffer(buffer, 1024),
        boost::bind(&AsyncConnection::EndReceive, shared_from_this(),
        boost::asio::placeholders::error,
        boost::asio::placeholders::bytes_transferred));
}

void AsyncConnection::EndReceive(const boost::system::error_code& error, std::size_t bytes_transferred){
    if (!error){

    }
    else{
        std::cout << error.message() << std::endl;
    }
}

它从不调用EndReceive,我猜它一直在接收直到缓冲区满?!如何解决这个问题!

4

0 回答 0