2010-05-07 25 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。