Boost::asio异步回调在类中的实现。

本文详细介绍了TCP客户端如何使用Boost.Asio库进行连接和异步读取操作,包括错误处理和数据接收流程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

class TCP_Client
{
public:
    TCP_Client(boost::asio::io_service& io_service,ip::tcp::endpoint endpoint)
    :iosev(io_service),
     socket(iosev),
     ep(endpoint)
    {
        socket.connect(ep,ec);
        if(ec)
        {
            std::cout << boost::system::system_error(ec).what() << std::endl;
        }
        cout<<" Connection Success! "<<endl;
        TCP_ASYNC_READ() ;
    }

    void ReadHandle( const boost::system::error_code& error, // Result of operation.
                  std::size_t bytes_transferred )
    {
        if(!error)
        {
            cout<<endl<<" ReadComplete!"<<" Data: "<<Message<<" Next Reading... "<<endl<<endl;
            TCP_ASYNC_READ();
        }
    }
    void TCP_ASYNC_READ()
    {

        socket.async_read_some(buffer(Message),boost::bind(&TCP_Client::ReadHandle,this,
                boost::asio::placeholders::error,
                          boost::asio::placeholders::bytes_transferred));
        if(ec)
        {
            std::cout << boost::system::system_error(ec).what() << std::endl;
        }
    }

    io_service &iosev;
    ip::tcp::socket socket ;
    ip::tcp::endpoint ep ;
    boost::system::error_code ec;
};
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值