有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

Java中的客户机-服务器断开连接

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

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

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

即使在我的客户端断开连接后,服务器也无法通过IOException识别它。另一篇帖子说我会看到一个流结束的角色。然而,事实并非如此,因为在我的客户端断开连接后,我从未看到“处理输入流”,这表明没有可用的数据

也许我目前理解这一点的方式有问题

请帮忙


共 (2) 个答案

  1. # 1 楼答案

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

    当然,这假设在此流上操作的方法可以访问套接字对象,而不仅仅是InputStream

  2. # 2 楼答案

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

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