服务器在Java中断开连接

时间:2009-04-07 17:27:22

标签: java client stream disconnect

相关帖子没有回答我的问题。

我有一台服务器可以执行以下操作:

EVERY TWO SECONDS DO: 
if the inputstream is not null {
     if inputStream.available() is 0 
     {
          return 
     }
     print "handling input stream"
     handleTheInputStream(); 
}

即使我的客户端断开连接,服务器也无法通过IOException识别它。另一篇文章说我会看到一个End-of-Stream角色。但是,情况并非如此,因为在我的客户端断开连接之后,我从未看到“处理输入流”,这表示没有数据可用。

我目前了解其运作方式可能出现问题。

请帮忙。

2 个答案:

答案 0 :(得分:3)

请勿使用available() - 表示当前数据是否可用,而不是 将来是否有数据可用。换句话说,这是用于检测断开连接的错误工具。

基本上你应该调用read()(并处理数据),直到它返回-1,此时它意味着客户端已断开连接。

答案 1 :(得分:1)

如果使用套接字完成此操作,您可能需要检查Socket类的各种实例方法,例如isClosed()isInputShutdown()

当然,这假设在此流上运行的方法可以访问Socket对象而不仅仅是InputStream。