Skip to content

Instantly share code, notes, and snippets.

@binary132
Created May 2, 2013 05:09
Show Gist options
  • Select an option

  • Save binary132/5500255 to your computer and use it in GitHub Desktop.

Select an option

Save binary132/5500255 to your computer and use it in GitHub Desktop.

Revisions

  1. binary132 created this gist May 2, 2013.
    59 changes: 59 additions & 0 deletions echo_client.cpp
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,59 @@
    // Bodie Solomon 2013
    // TCP Echo client

    #include <iostream>
    #include <boost/array.hpp>
    #include <boost/asio.hpp>

    #define MAX_LENGTH 1024

    using boost::asio::ip::tcp;

    int main( int argc, char** argv )
    {
    char message[ MAX_LENGTH ];
    char reply[ MAX_LENGTH ];

    memset( message, 0, MAX_LENGTH );
    memset( reply, 0, MAX_LENGTH );

    try
    {
    if( argc != 2 )
    {
    std::cerr << "Usage: tcli <host>" << std::endl;
    return 1;
    }

    boost::asio::io_service ios;
    tcp::resolver resolver( ios );
    tcp::resolver::query query( tcp::v4( ), argv[1], "7" );
    tcp::resolver::iterator endpoints = resolver.resolve( query );
    tcp::socket socket( ios );
    boost::asio::connect( socket, endpoints );

    while( true )
    {
    std::cout << "Message: ";
    std::cin.getline( message, MAX_LENGTH );
    size_t message_len = strlen( message );
    boost::asio::write( socket, boost::asio::buffer( message, message_len ) );

    size_t reply_len = boost::asio::read( socket, boost::asio::buffer( reply, message_len ) );

    std::cout << "Server replied: ";
    std::cout.write( reply, reply_len );
    std::cout << std::endl;

    memset( reply, 0, MAX_LENGTH );
    memset( message, 0, MAX_LENGTH );
    }
    }

    catch( std::exception& e )
    {
    std::cerr << e.what( ) << std::endl;
    }

    return 0;
    }