0

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

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

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 角色。但是,情况并非如此,因为在我的客户端断开连接后,我再也看不到“处理输入流”,这表明没有可用的数据。

也许我目前理解它是如何工作的方式有问题。

请帮忙。

4

2 回答 2

3

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

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

于 2009-04-07T17:29:54.293 回答
1

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

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

于 2009-04-07T17:41:45.387 回答