Boost::asio异步回调在类中的实现
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;
};