我正在尝试使用Boost ASIO库在C ++中创建异步服务器,它通过其网页,ioservice和worker(session)提供的标准模型 我正在使用这样的东西:
asio::async_read(socket,buffer(data,datalen),[=]( error , len ){
if(error || len==0) disconnect(); else processRequest(data,len);
})
首先,当用户打开和关闭连接时,它可以正常工作 - 操作系统完成工作。
但是当用户通过强制断开互联网连接时,问题就出现了,套接字仍处于“已建立”状态,虽然用户已经离开,是的,当互联网不再可用时,操作系统如何处理发送TCP关闭数据包?
电话互联网,用户旅行,从HSDPA到无互联网的交换机区域以及最终GPRS,旧的HSDPA套接字仍然是“已建立”,但用户已经不使用它。
如何检测这样的死连接?
答案 0 :(得分:1)
async_write
会导致你的写处理程序被调用并出错。