【发布时间】:2012-08-27 22:46:49
【问题描述】:
- 两台电脑通过socket连接。如果服务器/客户端关闭连接
从他们的最后(即关闭
InputStream、OutputStream和Socket)那我该如何通知 关于断开的另一端?我知道一种方法 - 尝试从InputStream读取, 如果连接关闭,它会抛出IOException,但是还有其他方法可以检测到吗? - 还有一个问题,我在网上查了这个问题,看到
inputStream.available()不能解决这个问题。这是为什么呢?
附加信息:我要求另一种方式,因为如果我必须尝试从
InputStrem 检测断开连接。
【问题讨论】:
-
嗯,不知道您希望如何解决这个问题。您仍然需要某种类型的套接字读取或写入来确定它已关闭。
-
想想你怎么能做到这一点,以便在对方关闭(正确关闭,而不仅仅是断开连接)其套接字时即时通知:1)专用于读取套接字并放置数据的线程放入容器中以供将来处理,例如。数组阻塞队列。当它发现 -1 或 IOException 时,它可以停止并通过设置标志、调用某些方法或将 EOS 标记放入队列中来通知其他线程通信已经结束(或被中断)。 2)其他线程可以在需要的时候读取队列,也可以在需要的时候检查标志。
-
@SaintHill Allthat 对自己的阅读没有任何帮助。
-
@EJP 是的。这只是做不可避免的另一种方法:)
标签: java sockets stream inputstream outputstream