#include #include using boost::asio::buffer; using boost::asio::io_service; using boost::asio::ip::tcp; using boost::asio::read; using boost::system::error_code; using boost::system::system_error; using std::cerr; using std::exception; using std::string; int main(int argc, char *argv[]) { try { string port("1492"); if (argc > 1) port.assign(argv[1]); string host("localhost"); if (argc > 2) host.assign(argv[2]); tcp::resolver::query q(host, port); io_service io_svc; tcp::resolver r(io_svc); tcp::resolver::iterator eit = r.resolve(q); tcp::resolver::iterator end; // Try each endpoint until we successfully establish a connection. tcp::socket s(io_svc); error_code ec = boost::asio::error::host_not_found; while (ec && eit != end) { cerr << "connecting to " << eit->endpoint() << " ... \n"; s.close(); s.connect(*eit++, ec); } if (ec) throw system_error(ec); cerr << "connected.\n"; boost::asio::socket_base::keep_alive o(true); s.set_option(o); const string buf("foo"); do { cerr << "calling write ...\n"; std::size_t b = write(s, buffer(buf)); cerr << "wrote " << b << " bytes.\n"; } while (std::getchar()); } catch (system_error const & e) { cerr << e.what() << "\n"; } catch (exception const & e) { cerr << e.what() << "\n"; } catch(...) { cerr << "caught unknown\n"; } }