summaryrefslogtreecommitdiff
path: root/libs/asio/example/cpp03/local/stream_client.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'libs/asio/example/cpp03/local/stream_client.cpp')
-rw-r--r--libs/asio/example/cpp03/local/stream_client.cpp61
1 files changed, 61 insertions, 0 deletions
diff --git a/libs/asio/example/cpp03/local/stream_client.cpp b/libs/asio/example/cpp03/local/stream_client.cpp
new file mode 100644
index 000000000..cef9eec84
--- /dev/null
+++ b/libs/asio/example/cpp03/local/stream_client.cpp
@@ -0,0 +1,61 @@
+//
+// stream_client.cpp
+// ~~~~~~~~~~~~~~~~~
+//
+// Copyright (c) 2003-2013 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>
+
+#if defined(BOOST_ASIO_HAS_LOCAL_SOCKETS)
+
+using boost::asio::local::stream_protocol;
+
+enum { max_length = 1024 };
+
+int main(int argc, char* argv[])
+{
+ try
+ {
+ if (argc != 2)
+ {
+ std::cerr << "Usage: stream_client <file>\n";
+ return 1;
+ }
+
+ boost::asio::io_service io_service;
+
+ stream_protocol::socket s(io_service);
+ s.connect(stream_protocol::endpoint(argv[1]));
+
+ 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;
+}
+
+#else // defined(BOOST_ASIO_HAS_LOCAL_SOCKETS)
+# error Local sockets not available on this platform.
+#endif // defined(BOOST_ASIO_HAS_LOCAL_SOCKETS)