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