text: //
  // stream_client.cpp
  // ~~~~~~~~~~~~~~~~~
  //
  // Copyright (c) 2003-2016 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 <cstring>
  #include <iostream>
  #include "asio.hpp"
  
  #if defined(ASIO_HAS_LOCAL_SOCKETS)
  
  using asio::local::stream_protocol;
  
  enum { max_length = 1024 };
  
  int main(int argc, char* argv[])
  {
    try
    {
      if (argc != 2)
      {
        std::cerr << "Usage: iostream_client <file>\n";
        return 1;
      }
  
      stream_protocol::endpoint ep(argv[1]);
      stream_protocol::iostream s(ep);
      if (!s)
      {
        std::cerr << "Unable to connect: " << s.error().message() << std::endl;
        return 1;
      }
  
      using namespace std; // For strlen.
      std::cout << "Enter message: ";
      char request[max_length];
      std::cin.getline(request, max_length);
      size_t length = strlen(request);
      s << request;
  
      char reply[max_length];
      s.read(reply, length);
      std::cout << "Reply is: ";
      std::cout.write(reply, length);
      std::cout << "\n";
    }
    catch (std::exception& e)
    {
      std::cerr << "Exception: " << e.what() << "\n";
    }
  
    return 0;
  }
  
  #else // defined(ASIO_HAS_LOCAL_SOCKETS)
  # error Local sockets not available on this platform.
  #endif // defined(ASIO_HAS_LOCAL_SOCKETS)
  