]>
Commit | Line | Data |
---|---|---|
1 | // | |
2 | // client.cpp | |
3 | // ~~~~~~~~~~ | |
4 | // | |
5 | // Copyright (c) 2003-2017 Christopher M. Kohlhoff (chris at kohlhoff dot com) | |
6 | // | |
7 | // Distributed under the Boost Software License, Version 1.0. (See accompanying | |
8 | // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) | |
9 | // | |
10 | ||
11 | #include <iostream> | |
12 | #include <boost/array.hpp> | |
13 | #include <boost/asio.hpp> | |
14 | ||
15 | using boost::asio::ip::tcp; | |
16 | ||
17 | int main(int argc, char* argv[]) | |
18 | { | |
19 | try | |
20 | { | |
21 | if (argc != 2) | |
22 | { | |
23 | std::cerr << "Usage: client <host>" << std::endl; | |
24 | return 1; | |
25 | } | |
26 | ||
27 | boost::asio::io_context io_context; | |
28 | ||
29 | tcp::resolver resolver(io_context); | |
30 | tcp::resolver::results_type endpoints = | |
31 | resolver.resolve(argv[1], "daytime"); | |
32 | ||
33 | tcp::socket socket(io_context); | |
34 | boost::asio::connect(socket, endpoints); | |
35 | ||
36 | for (;;) | |
37 | { | |
38 | boost::array<char, 128> buf; | |
39 | boost::system::error_code error; | |
40 | ||
41 | size_t len = socket.read_some(boost::asio::buffer(buf), error); | |
42 | ||
43 | if (error == boost::asio::error::eof) | |
44 | break; // Connection closed cleanly by peer. | |
45 | else if (error) | |
46 | throw boost::system::system_error(error); // Some other error. | |
47 | ||
48 | std::cout.write(buf.data(), len); | |
49 | } | |
50 | } | |
51 | catch (std::exception& e) | |
52 | { | |
53 | std::cerr << e.what() << std::endl; | |
54 | } | |
55 | ||
56 | return 0; | |
57 | } |