42 using boost::asio::ip::tcp;
48 Comm(message_handler),
55 TCPClient::~TCPClient()
60 bool TCPClient::is_open()
62 return socket_.is_open();
65 bool TCPClient::do_init()
69 tcp::resolver resolver(io_service_);
71 endpoint_ = *resolver.resolve({tcp::v4(), host_,
"", boost::asio::ip::resolver_query_base::numeric_service});
72 endpoint_.port(port_);
73 socket_.open(tcp::v4());
75 socket_.connect(endpoint_);
77 socket_.set_option(tcp::socket::reuse_address(
true));
78 socket_.set_option(tcp::socket::send_buffer_size(WRITE_BUFFER_SIZE*1024));
79 socket_.set_option(tcp::socket::receive_buffer_size(READ_BUFFER_SIZE*1024));
81 catch (boost::system::system_error e)
83 message_handler_.error(e.what());
90 void TCPClient::do_close()
95 void TCPClient::do_async_read(
const boost::asio::mutable_buffers_1 &buffer,
96 boost::function<
void(
const boost::system::error_code&,
size_t)> handler)
98 socket_.async_receive(buffer, handler);
101 void TCPClient::do_async_write(
const boost::asio::const_buffers_1 &buffer,
102 boost::function<
void(
const boost::system::error_code&,
size_t)> handler)
104 socket_.async_send(buffer, handler);
Abstract base class for an asynchronous communication port.
TCPClient(std::string host=DEFAULT_HOST, uint16_t port=DEFAULT_PORT, MessageHandler &message_handler=default_message_handler_)
Connect to a TCP socket as a client.
Abstract base class for message handler.