现在的位置: 首页 > 综合 > 正文

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

2013年10月13日 ⁄ 综合 ⁄ 共 1039字 ⁄ 字号 评论关闭

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;
};

抱歉!评论已关闭.