#include #include class Packet { public: Packet() : a(2), b(3) { buf[0] = boost::asio::buffer( (void *)a, sizeof( a )); buf[1] = boost::asio::buffer( (void *)b, sizeof( b )); }; boost::asio::mutable_buffers_1 getBuffer() { return boost::asio::buffer( buf ); } int getA() { return a; } int getB() { return b; } protected: int a, b; boost::array< boost::asio::mutable_buffer, 2 > buf; }; int main() { Packet pack; try { boost::asio::io_service io_service; boost::asio::ip::tcp::acceptor acceptor(io_service, boost::asio::ip::tcp::endpoint(boost::asio::ip::tcp::v4(), 8888)); boost::asio::ip::tcp::socket socket(io_service); acceptor.accept(socket); boost::system::error_code ignored_error; int readbytes = boost::asio::read(socket, pack.getBuffer()); std::cout << "Read " << readbytes << " bytes (" << pack.getA() << " " << pack.getB() << std::endl; } catch (std::exception& e) { std::cerr << e.what() << std::endl; } return 0; }