ASIO-检测死连接
ASIO - Detect dead connection
我正在尝试使用boost asio库在C 中创建一个异步服务器,它按照其网页,ioservice和worker(session)提供的标准模型进行。我正在使用这样的东西:
asio::async_read(socket,buffer(data,datalen),[=]( error , len ){
if(error || len==0) disconnect(); else processRequest(data,len);
})
首先,当用户打开并关闭连接时,它可以正常工作 - OS完成工作。
但是,当用户通过Force与Internet断开连接时,问题出现了,插座仍处于"已建立"状态,尽管用户已经消失了,是的,当OS处理发送TCP关闭数据包时,Internet不再可用?
也出现了电话网络网络,用户旅行,从HSDPA到没有互联网的交换区域以及GPRS的交换区域所带来的问题。
如何检测到这样的死连接?
- 当客户端应用程序关闭插座时,您的阅读处理程序将立即称为
- 客户端应用程序崩溃但客户端OS仍在网上
- 当客户端计算机电缆被插入时,根本没有通知。您可以在应用程序层实现保留机制,也可以使用TCP内置的保持距离。我建议自己做更多的控制权(例如,重新连接会话)。在校长中,您要执行
async_write
,这会导致您的写处理程序被错误调用。
相关文章:
- 当套接字连接断开时检测C/C++Unix
- 检测grpc服务器中关闭的客户端连接
- 提升 ASIO 服务器 - 检测空闲连接
- 如何在 Grpc 中使用双向流时检测(物理)断开连接
- 如何在 boost asio 中检测套接字上的关闭连接,而无需阻塞调用
- 在写入过程中立即使用boost::asio检测关闭的TCP连接
- Poco::Net HTTPServer:如何检测断开连接的客户端?
- 如何在非网关接口 Linux 上检测互联网连接
- 如果另一侧失去了他的净连接,我该如何从客户端/服务器端检测
- 如何在我的程序中检测GPS设备连接到的端口(C / C)
- 使用QNetworkAccessManager检测网络摄像机连接
- 如何检测用户何时与网络断开连接
- ASIO-检测死连接
- 如何在 Thrift 中检测服务器断开连接
- 如何检测程序运行时 Kinect 何时断开连接/拔出
- 如何检测ssh连接(通过QProcess)何时完成
- Arduino 以太网扩展板无法检测到断开连接
- 正在检测网络连接
- 如何在C++中检测我的局域网连接是否断开
- QtNetwork:为什么我检测不到传入的连接?(incomingConnection() 永远不会被触发)