提升 Asio 未正确阅读
Boost Asio not properly reading
在我的代码中,我设置了一个客户端和服务器套接字,以使用 asio 模拟两者之间的交互。不幸的是,我的 read(( 中有些东西失败了,我不完全确定我没有正确传递什么以及为什么。当我运行它时,它会无限期地等待。可能是我错过了什么吗?
boost::asio::io_service ioservice;
tcp::acceptor acceptor(ioservice);
tcp::socket client(ioservice);
tcp::socket server(ioservice);
boost::asio::ip::tcp::endpoint endpoint(boost::asio::ip::address::from_string("127.0.0.1"), 2222);
acceptor.open(endpoint.protocol());
acceptor.bind(endpoint);
acceptor.listen();
acceptor.async_accept(server, &acc_handle);
client.async_connect(endpoint, &conn_handle);
ioservice.run();
boost::asio::write(client, boost::asio::buffer("test"));
boost::asio::streambuf bfr;
boost::asio::read(client, bfr);
编辑:添加了处理程序,它们只是记录信息,所以我省略了它们的定义。
如果这是真正的代码流,那么ioservice.run();
之后的任何内容都不会被执行,直到您停止它,此时也不会执行任何ioservice
操作。代码需要驻留在这些异步处理程序中。
正在发生的事情,因为您没有包含处理程序的定义,但我会尝试进行预测:
acc_handle
应包含一个server.async_receive(read_buffer, [](const boost::system::error_code&, size_t){...});
。
conn_handle
应包含一个client.async_send(write_buffer, endpoint, [](const boost::system::error_code&, size_t){...});
,此时您应该能够看到服务器的接收处理程序触发。
话虽如此,我强烈建议您在 http://www.boost.org/doc/libs/1_64_0/doc/html/boost_asio/examples/cpp11_examples.html 浏览相关示例,因为它们写得清晰干净。
相关文章:
- 提升 ASIO 无法识别计时器对象
- 缓慢提升ASIO
- 提升 Asio TCP 服务器 处理多个客户端
- 提升 ASIO - io_service 不要等待连接到线程
- 提升 asio 并发计时器取消问题与链
- 提升::Asio 异步聊天客户端停止与服务器通信
- 提升 asio io_content运行非阻塞
- 我有一个关于C++提升的问题:: asio 和 std :: 异步
- 提升 ASIO Async_receive崩溃程序
- 提升::ASIO 取消或关闭对async_handle不起作用
- 使用提升 asio 时出现"resolve: Host not found (authoritative)"异常
- 获取加速::p rocess::子的退出代码 在提升::asio::io_service?
- 异步提升从stdin读取的asio
- 提升 asio 串行端口"end of file"
- 提升 ASIO 打开多个插座
- 提升 ASIO TCP 套接字 1.70 不向后兼容
- 为异步发送缓冲区保留内存(提升 asio 套接字)
- 提升 ASIO async_tcp_echo_server的例子
- 调用socket.remote_endpoint(提升 asio 库)线程安全性
- 使用 boost::asio 提升线程池