0

创建套接字并建立连接后,我使用 BufferedReader 和 PrintWriter 从套接字写入/读取。

Socket s = new Socket(ip, port);
BufferedReader in = new BufferedReader(new InputStreamReader(s.getInputStream()));
PrintWriter out = new PrintWriter(s.getOutputStream());

当我使用完套接字时,我将其关闭。

s.close();

这将导致发送 TCP fin 并留下半开的 TCP 连接。有什么方法可以检测客户端/服务器是否关闭了连接结束?

4

1 回答 1

1

这将导致发送 TCP fin 并留下半开的 TCP 连接。

不完全的。它将留下一个半开放的 TCP 连接,如果它接收到更多数据,它将发出重置。

有什么方法可以检测客户端/服务器是否关闭了连接端?

如果您已经关闭了您的,则不会。如果你刚刚发出了写关闭,你可以一直读到 EOS,它会告诉你对等体关闭,然后关闭套接字。除非你真的必须同时关闭,否则没什么意义。

于 2013-04-13T12:14:23.177 回答