- using asio::ip::tcp;
- int main(int argc, char* argv[])
- {
- try
- {
- if (argc != 3)
- {
- std::cerr << "Usage: client <host> <port>/n";
- return 1;
- }
- asio::io_service io_service;
- asio::error_code er;
- asio::detail::win_iocp_socket_service<tcp> iocp(io_service);
- asio::detail::win_iocp_socket_service<tcp>::implementation_type impl_type;
- tcp::resolver resolver(io_service);
- tcp::resolver::query query(argv[1], argv[2]);
- tcp::resolver::iterator iterator = resolver.resolve(query);
- tcp::endpoint endpoint = *iterator;
- iocp.open(impl_type, tcp::v4(), er);
- if (er)
- {
- std::cerr << "Exception: " << er.message().c_str() << "/n";
- return -1;
- }
- iocp.connect(impl_type, endpoint, er);
- if (er)
- {
- std::cerr << "Exception: " << er.message().c_str() << "/n";
- return -1;
- }
- boost::array<char, 1024 * 11> send_buf = { "hello, asio!" };
- boost::array<char, 1024 * 11> recv_buf = { "hello, asio!" };
- asio::socket_base::message_flags option(0);
- iocp.send(impl_type, asio::buffer(send_buf), option, er);
- if (er)
- {
- std::cerr << "Exception: " << er.message().c_str() << "/n";
- return -1;
- }
- iocp.receive(impl_type, asio::buffer(recv_buf), option, er);
- if (er)
- {
- std::cerr << "Exception: " << er.message().c_str() << "/n";
- return -1;
- }
- else
- {
- std::cout << "Receive: " << recv_buf.data() << "/n";
- }
- }
- catch (std::exception& e)
- {
- std::cerr << "Exception: " << e.what() << "/n";
- }
- return 0;
- }