相关帖子没有回答我的问题。
我有一台服务器可以执行以下操作:
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角色。但是,情况并非如此,因为在我的客户端断开连接之后,我从未看到“处理输入流”,这表示没有数据可用。
我目前了解其运作方式可能出现问题。
请帮忙。
答案 0 :(得分:3)
请勿使用available()
- 表示当前数据是否可用,而不是 将来是否有数据可用。换句话说,这是用于检测断开连接的错误工具。
基本上你应该调用read()
(并处理数据),直到它返回-1,此时它意味着客户端已断开连接。
答案 1 :(得分:1)
如果使用套接字完成此操作,您可能需要检查Socket类的各种实例方法,例如isClosed()或isInputShutdown()。
当然,这假设在此流上运行的方法可以访问Socket对象而不仅仅是InputStream。