繁体   English   中英

Java套接字:远程FIN + ACK本地ACK上没有异常

[英]Java Socket: no Exception on remote FIN + ACK an local ACK

谁能告诉我,如果远程套接字正在关闭并发送FIN + ACK,为什么我不会得到异常? Wireshark告诉我,操作系统已接收FIN + ACK,并发送了ACK。

这是我的代码。 我真的尝试了一切。

byte firstByte = (byte)instream.read();
if (firstByte == -1){
    return null;
}
byte[] bytes = new byte[instream.available() + 1];
bytes[0] = firstByte;
instream.read(bytes, 1, bytes.length - 1);

内流是Socket.getInputStream()的,外流是Socket.getOutputStream()的。

我的15秒心跳将关闭连接。

远程计算机关闭网络连接不是系统级错误。 尝试从与表示已关闭连接的本地端的Socket关联的InputStream读取将检测到文件结束条件,这对于任何Inputstream都是自然的可能性。

根据其文档InputStream.read()在到达文件末尾时返回-1 对于网络套接字的InputStream ,这是一个相当可靠的指示,表明连接已关闭。

您需要注意的是远程客户端在没有干净关闭的情况下断开了连接。 本地计算机无法检测到该错误,并且从该连接的本地套接字读取的尝试将无限期地阻塞。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM