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_code &e, std::size_t bytes_transferred, debug_stream_socket *s) |
void | connect_handler (const asio::error_code &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 18 of file daytime_client.cpp.
void read_handler | ( | const asio::error_code & | e, | |
std::size_t | bytes_transferred, | |||
debug_stream_socket * | s | |||
) |
Definition at line 22 of file daytime_client.cpp.
Referenced by connect_handler().
00024 { 00025 if (!e) 00026 { 00027 std::cout.write(read_buffer, bytes_transferred); 00028 00029 s->async_read_some(asio::buffer(read_buffer), 00030 boost::bind(read_handler, asio::placeholders::error, 00031 asio::placeholders::bytes_transferred, s)); 00032 } 00033 }
void connect_handler | ( | const asio::error_code & | e, | |
debug_stream_socket * | s, | |||
asio::ip::tcp::resolver::iterator | endpoint_iterator | |||
) |
Definition at line 35 of file daytime_client.cpp.
Referenced by main().
00037 { 00038 if (!e) 00039 { 00040 s->async_read_some(asio::buffer(read_buffer), 00041 boost::bind(read_handler, asio::placeholders::error, 00042 asio::placeholders::bytes_transferred, s)); 00043 } 00044 else if (endpoint_iterator != asio::ip::tcp::resolver::iterator()) 00045 { 00046 s->close(); 00047 asio::ip::tcp::endpoint endpoint = *endpoint_iterator; 00048 s->async_connect(endpoint, 00049 boost::bind(connect_handler, 00050 asio::placeholders::error, s, ++endpoint_iterator)); 00051 } 00052 else 00053 { 00054 std::cerr << e.message() << std::endl; 00055 } 00056 }
int main | ( | int | argc, | |
char * | argv[] | |||
) |
Definition at line 58 of file daytime_client.cpp.
00059 { 00060 try 00061 { 00062 if (argc != 2) 00063 { 00064 std::cerr << "Usage: daytime_client <host>" << std::endl; 00065 return 1; 00066 } 00067 00068 asio::io_service io_service; 00069 00070 // Set the name of the file that all logger instances will use. 00071 services::logger logger(io_service, ""); 00072 logger.use_file("log.txt"); 00073 00074 // Resolve the address corresponding to the given host. 00075 asio::ip::tcp::resolver resolver(io_service); 00076 asio::ip::tcp::resolver::query query(argv[1], "daytime"); 00077 asio::ip::tcp::resolver::iterator iterator = resolver.resolve(query); 00078 asio::ip::tcp::endpoint endpoint = *iterator; 00079 00080 // Start an asynchronous connect. 00081 debug_stream_socket socket(io_service); 00082 socket.async_connect(endpoint, 00083 boost::bind(connect_handler, 00084 asio::placeholders::error, &socket, ++iterator)); 00085 00086 // Run the io_service until all operations have finished. 00087 io_service.run(); 00088 } 00089 catch (std::exception& e) 00090 { 00091 std::cerr << e.what() << std::endl; 00092 } 00093 00094 return 0; 00095 }
char read_buffer[1024] |
Definition at line 20 of file daytime_client.cpp.
Referenced by connect_handler(), and read_handler().