java - 如何检测 FIN - java 应用程序中的 tcp 标志?

标签 java sockets tcp

我在两台计算机之间建立了持久的 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/

相关文章:

java - 等待对象在 CORBA 命名服务中绑定(bind)

c - 我必须在两个进程之间执行套接字通信,其中一个是守护进程

android - 如何在android中执行多个重复任务

linux - 如何在 linux 中基于 tcp 选项字段丢弃数据包

flash - 播放 Flash 视频时检测 TCP 连接是否关闭

java - 更新 SQLite 数据库中的行会创建重复行

java - 使用 FragmentTransaction 与 fragment 通信

java - 使用 RSA 从 C# 到 Java 的 Base64 编码字符串到公钥

C pcap 检测入站数据报

java - 从 TCP 流中读取多行