#pragma
once
#include < boost / asio.hpp >
#include < boost / bind.hpp >
#include < boost / shared_ptr.hpp >
using boost::asio::ip::tcp;
class CAsioClient
{
public :
CAsioClient(boost::asio::io_service & io_service,tcp::endpoint & endpoint)
: socket(io_service)
{
socket.async_connect(endpoint,
boost::bind( & CAsioClient::handle_connect, this ,boost::asio::placeholders::error)
);
memset(getBuffer, 0 , sizeof (getBuffer));
}
virtual ~ CAsioClient( void )
{
if (sendBuffer != NULL)
{
delete sendBuffer;
}
}
private :
void handle_connect( const boost::system::error_code & error)
{
if ( ! error)
{
sendBuffer = new BYTE[ 2 ];
sendBuffer[ 0 ] = 0x68 ;
sendBuffer[ 1 ] = 0x16 ;
boost::asio::async_write(socket,boost::asio::buffer(sendBuffer, sizeof (sendBuffer)),
boost::bind( & CAsioClient::handle_write, this ,boost::asio::placeholders::error));
socket.async_read_some(boost::asio::buffer(getBuffer, sizeof (getBuffer)),
boost::bind( & CAsioClient::handle_read, this ,boost::asio::placeholders::error)
);
}
else
{
socket.close();
}
}
void handle_read( const boost::system::error_code & error)
{
if ( ! error)
{
socket.async_read_some(
boost::asio::buffer(getBuffer, sizeof (getBuffer)),
boost::bind( & CAsioClient::handle_read, this ,boost::asio::placeholders::error)
);
}
else
{
socket.close();
}
}
void handle_write( const boost::system::error_code & error)
{
if ( ! error)
{
Sleep( 1000 );
sendBuffer = new BYTE[ 2 ];
sendBuffer[ 0 ] = 0x68 ;
sendBuffer[ 1 ] = 0x16 ;
boost::asio::async_write(socket,boost::asio::buffer(sendBuffer, sizeof (sendBuffer)),
boost::bind( & CAsioClient::handle_write, this ,boost::asio::placeholders::error));
}
}
private :
tcp::socket socket;
BYTE * sendBuffer;
BYTE getBuffer[ 1024 ];
};
#include < boost / asio.hpp >
#include < boost / bind.hpp >
#include < boost / shared_ptr.hpp >
using boost::asio::ip::tcp;
class CAsioClient
{
public :
CAsioClient(boost::asio::io_service & io_service,tcp::endpoint & endpoint)
: socket(io_service)
{
socket.async_connect(endpoint,
boost::bind( & CAsioClient::handle_connect, this ,boost::asio::placeholders::error)
);
memset(getBuffer, 0 , sizeof (getBuffer));
}
virtual ~ CAsioClient( void )
{
if (sendBuffer != NULL)
{
delete sendBuffer;
}
}
private :
void handle_connect( const boost::system::error_code & error)
{
if ( ! error)
{
sendBuffer = new BYTE[ 2 ];
sendBuffer[ 0 ] = 0x68 ;
sendBuffer[ 1 ] = 0x16 ;
boost::asio::async_write(socket,boost::asio::buffer(sendBuffer, sizeof (sendBuffer)),
boost::bind( & CAsioClient::handle_write, this ,boost::asio::placeholders::error));
socket.async_read_some(boost::asio::buffer(getBuffer, sizeof (getBuffer)),
boost::bind( & CAsioClient::handle_read, this ,boost::asio::placeholders::error)
);
}
else
{
socket.close();
}
}
void handle_read( const boost::system::error_code & error)
{
if ( ! error)
{
socket.async_read_some(
boost::asio::buffer(getBuffer, sizeof (getBuffer)),
boost::bind( & CAsioClient::handle_read, this ,boost::asio::placeholders::error)
);
}
else
{
socket.close();
}
}
void handle_write( const boost::system::error_code & error)
{
if ( ! error)
{
Sleep( 1000 );
sendBuffer = new BYTE[ 2 ];
sendBuffer[ 0 ] = 0x68 ;
sendBuffer[ 1 ] = 0x16 ;
boost::asio::async_write(socket,boost::asio::buffer(sendBuffer, sizeof (sendBuffer)),
boost::bind( & CAsioClient::handle_write, this ,boost::asio::placeholders::error));
}
}
private :
tcp::socket socket;
BYTE * sendBuffer;
BYTE getBuffer[ 1024 ];
};