JAVA:处理插座断开连接

Jis*_*mud 0 java sockets inputstream outputstream stream

  1. 两台计算机通过套接字连接.如果服务器/客户端从它们的末端关闭连接(即关闭InputStream,OutputStreamSocket),那么如何通知另一端断开连接?有一种我知道的方法 - 尝试从中读取InputStream,这会抛出IOExceptionif连接关闭,但还有其他方法可以检测到这种情况吗?
  2. 另一个问题,我在互联网上看了问题,看到inputStream.available() 并没有解决这个问题.这是为什么?

附加信息:我要求采用另一种方式,因为如果我必须尝试读取InputStrem断开连接,我的项目将变得难以处理 .

use*_*421 6

尝试从InputStream读取,抛出IOException

这是不正确的.如果对等关闭套接字:

  • read() 返回-1
  • readLine() 返回null
  • readXXX()抛出EOFException,对于任何其他X.

由于InputStream只有read()方法,它只返回-1:它不会抛出IOExceptionEOS.

与此处的其他答案相反,没有TCP API或Socket方法可以告诉您对等方是否已关闭连接.你必须尝试读或写.

您应该使用读取超时.

InputStream.available()没有解决问题,因为它没有返回任何类型的EOS指示.几乎没有正确的用途,这不是其中之一.