我在两台计算机之间建立了持久的 TCP 连接(第二个不在我的控制之下)。第二台计算机每时每刻都会发送FIN标志,并且首先必须关闭相应的连接(将FIN标志发送回第二台计算机)。
我怎么知道第二台计算机发送了 FIN 标志以及我什么时候必须调用我的 Java 应用程序的 socket.close() 方法?
最佳答案
通常,您必须读取连接,当这为 EOF 或适当的 IOException 返回 -1 时,您可以关闭连接。注意:SocketTimeoutException 并不意味着连接已关闭。
一个例子。
boolean ok = false;
try {
int b = in.read();
ok = b >= 0;
if (!ok)
throw new EOFException();
} finally {
if (!ok)
in.close();
}
关于java - 如何检测 FIN - java 应用程序中的 tcp 标志?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9868356/