Java套接字TCP拆解

时间:2013-04-13 12:07:55

标签: java sockets tcp

创建套接字并建立连接后,我使用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连接。有没有办法检测客户端/服务器是否关闭它的连接结束?

1 个答案:

答案 0 :(得分:1)

  

这将导致发送TCP fin并保持半开TCP连接。

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

  

有没有办法检测客户端/服务器是否关闭了它的连接结束?

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