刚刚学asio,写点小东西。一个人捣鼓在buff使用上走了许多歪路。总算开始会弄了。
遇到个小问题,决定还是先问问各位大大,还请大大们不吝赐教。问题是:
怎样取消一个io_service上注册的所有异步调用?我的代码基本抄的例程。请参考这个。
http://www.boost.org/doc/libs/1_50_0/doc/html/boost_asio/tutorial/tutdaytime3/src.html
循环接收多个客户端连接,返回一些信息。区别只有我的会始终保持连接,用async_read_until先判断命令再回复。建立一个连接就创建一个tcp_connection对象。read出错时socket.shutdown(ip::tcp::socket::shutdown_both) socket.close(),然后tcp_connection对象自动销毁。比如我现在有10个客户端连接,都在async_read_until。我想暂停服务,io_service.stop(),但这么做只是停了事件循环,注册的async_read_until都没有取消。不进tcp_connection析构函数,也不给客户端发fin,连接不关闭,仅仅是服务器不响应而已。我想要的结果是立刻取消全部async_read_until进handle。
请问有便捷点的设置么?莫非我只能做个容器保存weak_ptr然后挨个调用shutdown close?……
遇到个小问题,决定还是先问问各位大大,还请大大们不吝赐教。问题是:
怎样取消一个io_service上注册的所有异步调用?我的代码基本抄的例程。请参考这个。
http://www.boost.org/doc/libs/1_50_0/doc/html/boost_asio/tutorial/tutdaytime3/src.html
循环接收多个客户端连接,返回一些信息。区别只有我的会始终保持连接,用async_read_until先判断命令再回复。建立一个连接就创建一个tcp_connection对象。read出错时socket.shutdown(ip::tcp::socket::shutdown_both) socket.close(),然后tcp_connection对象自动销毁。比如我现在有10个客户端连接,都在async_read_until。我想暂停服务,io_service.stop(),但这么做只是停了事件循环,注册的async_read_until都没有取消。不进tcp_connection析构函数,也不给客户端发fin,连接不关闭,仅仅是服务器不响应而已。我想要的结果是立刻取消全部async_read_until进handle。
请问有便捷点的设置么?莫非我只能做个容器保存weak_ptr然后挨个调用shutdown close?……
m_socket_.close();