【发布时间】:2010-10-23 13:13:19
【问题描述】:
检查远程连接的套接字是否关闭的最简单方法是什么? socket::is_open() 即使在远程端关闭也会返回 true(我使用的是 boost::asio::ip::tcp::socket)。
我可以尝试从流中读取并查看它是否成功,但我必须更改程序的逻辑以使其以这种方式工作(我不希望此时从流中提取数据支票)。
【问题讨论】:
-
为什么需要知道远程连接是否已经关闭?
-
另外,您使用的是自己设计的应用协议还是标准协议?
-
我正在编写一个基本的聊天程序,我需要通知用户其他人关闭了应用程序。我有自己的协议,并且已经添加了“退出”消息。唯一的缺点是如果应用程序被杀死/崩溃/等,它不会被发送。
-
您的问题格式不正确。您要求的是一种检测 connection 是否被对等方关闭的方法。
-
也许您可以使用 boost::asio::null_buffers 实例作为缓冲区参数执行异步或同步读取?
标签: c++ boost sockets boost-asio