- 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;
- }
asio的win_iocp_socket_service使用...
最新推荐文章于 2024-04-05 15:55:43 发布
本文介绍了一个使用ASIO库实现的简单TCP客户端程序。该程序通过命令行参数接收主机名和端口号,然后连接到指定的服务器并发送一条消息,再接收服务器响应的消息。
523

被折叠的 条评论
为什么被折叠?



