mirror of
https://github.com/boostorg/fiber.git
synced 2026-02-15 13:02:29 +00:00
56 lines
1.8 KiB
C++
56 lines
1.8 KiB
C++
//
|
|
// echo_client.cpp
|
|
// ~~~~~~~~~~~~~~~
|
|
//
|
|
// Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
|
|
// This source is effectively identical to
|
|
// http://www.boost.org/doc/libs/release/doc/html/boost_asio/example/cpp03/echo/blocking_tcp_echo_client.cpp
|
|
// It does not use Boost.Fiber. It is copied here only for completeness. A
|
|
// server needs a client.
|
|
//
|
|
// 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 ( 3 != argc) {
|
|
std::cerr << "Usage: echo_client <host> <port>\n";
|
|
return EXIT_FAILURE;
|
|
}
|
|
boost::asio::io_service io_service;
|
|
tcp::resolver resolver( io_service);
|
|
tcp::resolver::query query( tcp::v4(), argv[1], argv[2]);
|
|
tcp::resolver::iterator iterator = resolver.resolve( query);
|
|
tcp::socket s( io_service);
|
|
boost::asio::connect( s, iterator);
|
|
std::cout << "Enter message: ";
|
|
char request[max_length];
|
|
std::cin.getline( request, max_length);
|
|
size_t request_length = std::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";
|
|
return EXIT_SUCCESS;
|
|
} catch ( std::exception const& e) {
|
|
std::cerr << "Exception: " << e.what() << "\n";
|
|
}
|
|
|
|
return EXIT_FAILURE;
|
|
}
|