Examples |
Go to the source code of this file.
Typedefs | |
typedef asio::basic_stream_socket< asio::ip::tcp, services::stream_socket_service< asio::ip::tcp > > | debug_stream_socket |
Functions | |
void | read_handler (const asio::error &e, std::size_t bytes_transferred, debug_stream_socket *s) |
void | connect_handler (const asio::error &e, debug_stream_socket *s, asio::ip::tcp::resolver::iterator endpoint_iterator) |
int | main (int argc, char *argv[]) |
Variables | |
char | read_buffer [1024] |
typedef asio::basic_stream_socket<asio::ip::tcp, services::stream_socket_service<asio::ip::tcp> > debug_stream_socket |
Definition at line 8 of file daytime_client.cpp.
void read_handler | ( | const asio::error & | e, | |
std::size_t | bytes_transferred, | |||
debug_stream_socket * | s | |||
) |
Definition at line 12 of file daytime_client.cpp.
Referenced by connect_handler().
00014 { 00015 if (!e) 00016 { 00017 std::cout.write(read_buffer, bytes_transferred); 00018 00019 s->async_read_some(asio::buffer(read_buffer), 00020 boost::bind(read_handler, asio::placeholders::error, 00021 asio::placeholders::bytes_transferred, s)); 00022 } 00023 }
void connect_handler | ( | const asio::error & | e, | |
debug_stream_socket * | s, | |||
asio::ip::tcp::resolver::iterator | endpoint_iterator | |||
) |
Definition at line 25 of file daytime_client.cpp.
Referenced by main().
00027 { 00028 if (!e) 00029 { 00030 s->async_read_some(asio::buffer(read_buffer), 00031 boost::bind(read_handler, asio::placeholders::error, 00032 asio::placeholders::bytes_transferred, s)); 00033 } 00034 else if (endpoint_iterator != asio::ip::tcp::resolver::iterator()) 00035 { 00036 s->close(); 00037 asio::ip::tcp::endpoint endpoint = *endpoint_iterator; 00038 s->async_connect(endpoint, 00039 boost::bind(connect_handler, 00040 asio::placeholders::error, s, ++endpoint_iterator)); 00041 } 00042 else 00043 { 00044 std::cerr << e << std::endl; 00045 } 00046 }
int main | ( | int | argc, | |
char * | argv[] | |||
) |
Definition at line 48 of file daytime_client.cpp.
00049 { 00050 try 00051 { 00052 if (argc != 2) 00053 { 00054 std::cerr << "Usage: daytime_client <host>" << std::endl; 00055 return 1; 00056 } 00057 00058 asio::io_service io_service; 00059 00060 // Set the name of the file that all logger instances will use. 00061 services::logger logger(io_service, ""); 00062 logger.use_file("log.txt"); 00063 00064 // Resolve the address corresponding to the given host. 00065 asio::ip::tcp::resolver resolver(io_service); 00066 asio::ip::tcp::resolver::query query(argv[1], "daytime"); 00067 asio::ip::tcp::resolver::iterator iterator = resolver.resolve(query); 00068 asio::ip::tcp::endpoint endpoint = *iterator; 00069 00070 // Start an asynchronous connect. 00071 debug_stream_socket socket(io_service); 00072 socket.async_connect(endpoint, 00073 boost::bind(connect_handler, 00074 asio::placeholders::error, &socket, ++iterator)); 00075 00076 // Run the io_service until all operations have finished. 00077 io_service.run(); 00078 } 00079 catch (std::exception& e) 00080 { 00081 std::cerr << e.what() << std::endl; 00082 } 00083 00084 return 0; 00085 }
char read_buffer[1024] |
Definition at line 10 of file daytime_client.cpp.
Referenced by connect_handler(), and read_handler().