我正在使用 Asio 的非 Boost 版本,并根据 http://think-async.com/Asio/asio-1.11.0/doc/asio/tutorial/tutdaytime3.html 中的代码创建了一个 TCP 服务器。
我可以很好地建立与服务器的连接,但只是第一次。如果我断开我的客户端然后尝试再次连接,Asio 将“已经打开”错误传递给我的接受处理程序。从代码中可以看出,在接受连接之前,会创建一个 tcp_connection 类的新实例。我不确定为什么会收到此错误,即使它是一个完全独立的实例,其套接字不应已打开。任何帮助将不胜感激。
提前致谢。
编辑:
这是服务器类: http://pastebin.com/yvZmFQvA
和客户端类(相当于例子中的tcp_connection类): http://pastebin.com/LDhr2nZz
最佳答案
这可能是因为您在断开连接时没有正确关闭套接字。由于无法处理的异常(例如信号 9)可能会导致断开连接,因此即使进程没有正常终止,您也需要一个解决方案来工作...
我相信这可以解决它:
关于c++ - Asio 中新连接出现 "Already Open"错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29870776/