如何从Boost ASIO中恢复async_handshake错误

时间:2018-06-04 17:55:33

标签: c++ ssl boost asio

我已经按照示例创建了ASIO SSL客户端,只要没有遇到网络错误,我的应用程序就可以正常工作。我使用Clumsy来模拟我的客户端应用程序和服务器之间丢弃的数据包,这就是当我遇到无法恢复的错误时。具体来说,对async_connect的调用将调用我的连接处理程序,该处理程序调用async_handshake。对async_handshake的调用永远不会返回。如果我引入一个异步计时器来中断async_handshake,我在我的应用程序中得到控制权,然后我删除套接字并创建一个新套接字并尝试通过调用io_context-> post再次连接我的函数地址,该函数将调用async_connect 。 io_context-> post调用每次都会抛出一个异常。异常说明我试图访问超出边界的迭代器,但我的连接调用中没有任何迭代器。我的问题是,如何从async_handshake函数中丢弃的数据包中恢复?不使用计时器中断async_handshake会使我的应用程序处于挂起状态,等待SSL握手完成。使用计时器似乎会导致Boost io_context运行函数抛出异常。我该如何解决这个问题?

0 个答案:

没有答案