您的位置:首页 > 理论基础 > 计算机网络

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

2012-10-15 14:47 369 查看
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;

};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息