我正在开发一个实时Android应用程序,并且在连接到TCP
网络Socket
的ObjectOutputStream
上检测错误时存在问题。我在流上正常调用writeObject
,然后调用flush
,但是当接收节点意外死亡时,我需要立即(在几秒钟内)知道它。不幸的是,当节点关闭时,服务器对writeObject
和flush
的调用不会抛出IOException
s,而是成功。
我假设在这些调用中发生了内部缓冲,这就是它成功的原因?在成功创建Socket
后,是否有任何方法可以通过writeObject
或其他方式知道节点何时关闭?
值得注意的是,由于性能原因,TCP Socket
是开放的,因此为每个writeObject
设置connect
上的超时是不可能的。
时接收节点意外我需要知道这件事离开(几秒钟内)
你不能。TCP并没有告诉你。它不知道。它忙于缓冲和重试。它最终会超时,如果在此之后执行写操作,就会得到异常。这需要多长时间是无法控制的。