#include #include #include #include #include #include "dccp.hpp" using boost::asio::ip::dccp; using namespace std; int main(int argc, char* argv[]) { using namespace boost::program_options; options_description desc; desc.add_options() ("help", "produce help message") ("host", value()->default_value("localhost"), "Host to connect to") ("port", value()->default_value("7777"), "Service/Port number to connect to") ("sc", value()->default_value(0x30304953), "Service code to use"); variables_map vm; try { store(parse_command_line(argc, argv, desc), vm); } catch (error &err) { cout << err.what() << endl; return 1; } notify(vm); if (vm.count("help")) { cout << desc; return 0; } cout << vm["host"].as() << endl; cout << vm["port"].as() << endl; cout << vm["sc"].as() << endl; try { boost::asio::io_service io_service; dccp::resolver resolver(io_service); dccp::resolver::query query(dccp::v4(), vm["host"].as(), vm["port"].as()); dccp::resolver::iterator iterator = resolver.resolve(query); cout << "socket construct" << endl; dccp::socket s(io_service); s.connect(dccp::endpoint(*iterator, vm["sc"].as())); boost::asio::dccp_option::cur_mps c_mps; s.get_option(c_mps); cout << "Enter message: "; char request[c_mps.value()]; cin.getline(request, c_mps.value()); size_t request_length = strlen(request); s.send(boost::asio::buffer(request, request_length)); char reply[c_mps.value()]; size_t reply_length = s.receive(boost::asio::buffer(reply, request_length)); cout << "Reply is: "; cout.write(reply, reply_length); cout << "\n"; } catch (exception& e) { cerr << "Exception: " << e.what() << "\n"; } return 0; }