【发布时间】:2015-01-23 23:52:40
【问题描述】:
谁能告诉我,如果远程套接字正在关闭并发送 FIN + ACK,为什么我不会得到异常? Wireshark 告诉我,收到 FIN + ACK 并由 OS 发送 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);
instream 属于 Socket.getInputStream(),outstream 属于 Socket.getOutputStream()。
我的 15 秒心跳将关闭连接。
【问题讨论】:
-
套接字从另一侧关闭,您从这一侧从套接字读取的下一个操作只会告诉您没有什么可以从文件末尾读取。但是如果你从你身边关闭套接字并执行这个操作,它会给你一个异常,比如从一个关闭的文件中读取。您正在使用 InputStream,因此它隐藏了下面的内容(文件或套接字)并且对两者的行为方式相同
标签: java sockets ioexception