可能重复:
How to get an acknowledgement for the client socket from server?
我使用netty实现了一个彗星消息服务器,可以长时间保持连接打开状态。它工作正常,但我没有检测到以下内容:
有时客户端连接“意外”关闭,就像有人切断电缆一样。发生这种情况后,我仍然可以写入该通道(服务器端)而不会出现错误或能够检测到任何错误。
那么:如何检测我从netty服务器发送到客户端的数据是否实际收到?
在“old”java.io中,这是(afaik)在套接字级别完成的。我无法察觉连接是否丢失(没有keepalive),但是当我尝试将数据写入OutputStream时,如果连接同时丢失,它将失败。然而,有了netty这种情况不再发生了,我想知道我是否还能以某种方式获取该信息(信息=底层连接同时丢失,无法提供数据)
基本上:底层TCP已经进入超时状态,因为没有收到任何ACK。这是如何在java.nio / Netty中浮出水面的?目前我可以继续写下一个死的连接。