2
0
mirror of https://github.com/boostorg/asio.git synced 2026-01-28 06:42:08 +00:00
Files
asio/example/local/stream_client.cpp
Christopher Kohlhoff f56c151625 Merged bug fixes, doc changes and examples from trunk.
........
  r47217 | chris_kohlhoff | 2008-07-08 22:30:49 +1000 (Tue, 08 Jul 2008) | 3 lines
  
  POSIX platforms are not required to define IOV_MAX, so if it's not
  available default to the stipulated minimum of 16.
........
  r47218 | chris_kohlhoff | 2008-07-08 22:31:48 +1000 (Tue, 08 Jul 2008) | 2 lines
  
  Fix SSL thread ID function to work correctly on 64-bit Windows.
........
  r47248 | chris_kohlhoff | 2008-07-09 07:56:50 +1000 (Wed, 09 Jul 2008) | 2 lines
  
  Add new type requirements.
........
  r47249 | chris_kohlhoff | 2008-07-09 08:54:38 +1000 (Wed, 09 Jul 2008) | 2 lines
  
  Add example showing how to use UNIX domain sockets with connect_pair().
........
  r47261 | chris_kohlhoff | 2008-07-09 22:00:56 +1000 (Wed, 09 Jul 2008) | 2 lines
  
  Add more UNIX domain socket examples.
........


[SVN r47263]
2008-07-09 12:35:37 +00:00

62 lines
1.5 KiB
C++

//
// stream_client.cpp
// ~~~~~~~~~~~~~~~~~
//
// Copyright (c) 2003-2008 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)