2010-05-07 54 views
3

我們有一個java服務器,它使用Android客戶端保持套接字通道打開,以便爲我們的客戶端應用程序提供推送功能。寫入應該關閉的java套接字通道不會生成異常

但是,在將Android設置爲飛行模式後,我期望切斷連接,服務器仍然可以寫入與該Android客戶端關聯的SocketChannel對象,並且不會引發錯誤。在寫入之前調用SocketChannel.isConnected()返回true。

我們缺少什麼?處理套接字與移動設備不同嗎?

在此先感謝您的幫助。

回答

1

SocketChannel.socket().isConnected() and SocketChannel.isConnected() 在套接字連接之前返回false。 套接字連接後,它們將返回true, 由於任何原因,它們不會恢復爲false。

SocketChannel.isOpen()返回true 直到您撥打SocketChannel.socket().close()SocketChannel.close()。 一旦已在socket上調用close(),SocketChannel.isOpen()將 返回false, 沒有其他事件會導致它返回false。

SocketChannel.socket().isClosed()返回false 直到您撥打SocketChannel.socket().close()SocketChannel.close()。 一旦已經調用close()在一個插座上 - SocketChannel.socket().isClosed()將返回true, 沒有其他事件會導致它返回true。