summaryrefslogtreecommitdiffstats
path: root/src/boost/libs/asio/example/cpp03/echo/blocking_tcp_echo_client.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/boost/libs/asio/example/cpp03/echo/blocking_tcp_echo_client.cpp')
-rw-r--r--src/boost/libs/asio/example/cpp03/echo/blocking_tcp_echo_client.cpp59
1 files changed, 59 insertions, 0 deletions
diff --git a/src/boost/libs/asio/example/cpp03/echo/blocking_tcp_echo_client.cpp b/src/boost/libs/asio/example/cpp03/echo/blocking_tcp_echo_client.cpp
new file mode 100644
index 000000000..f97d8daaa
--- /dev/null
+++ b/src/boost/libs/asio/example/cpp03/echo/blocking_tcp_echo_client.cpp
@@ -0,0 +1,59 @@
+//
+// blocking_tcp_echo_client.cpp
+// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+//
+// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+//
+// Distributed under the Boost Software License, Version 1.0. (See accompanying
+// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+//
+
+#include <cstdlib>
+#include <cstring>
+#include <iostream>
+#include <boost/asio.hpp>
+
+using boost::asio::ip::tcp;
+
+enum { max_length = 1024 };
+
+int main(int argc, char* argv[])
+{
+ try
+ {
+ if (argc != 3)
+ {
+ std::cerr << "Usage: blocking_tcp_echo_client <host> <port>\n";
+ return 1;
+ }
+
+ boost::asio::io_context io_context;
+
+ tcp::resolver resolver(io_context);
+ tcp::resolver::results_type endpoints =
+ resolver.resolve(tcp::v4(), argv[1], argv[2]);
+
+ tcp::socket s(io_context);
+ boost::asio::connect(s, endpoints);
+
+ using namespace std; // For strlen.
+ std::cout << "Enter message: ";
+ char request[max_length];
+ std::cin.getline(request, max_length);
+ size_t request_length = strlen(request);
+ boost::asio::write(s, boost::asio::buffer(request, request_length));
+
+ char reply[max_length];
+ size_t reply_length = boost::asio::read(s,
+ boost::asio::buffer(reply, request_length));
+ std::cout << "Reply is: ";
+ std::cout.write(reply, reply_length);
+ std::cout << "\n";
+ }
+ catch (std::exception& e)
+ {
+ std::cerr << "Exception: " << e.what() << "\n";
+ }
+
+ return 0;
+}