写入应关闭的java套接字通道不会生成异常

写入应关闭的java套接字通道不会生成异常,java,android,exception,sockets,Java,Android,Exception,Sockets,我们有一个java服务器,它与Android客户端保持套接字通道打开,以便为我们的客户端应用程序提供推送功能 但是,在将Android置于飞行模式(我希望这会切断连接)之后,服务器仍然可以写入与该Android客户端关联的SocketCannel对象,并且不会抛出任何错误。在写入之前调用SocketChannel.isConnected()返回true 我们错过了什么?插座的处理方式是否与移动设备不同 提前感谢您的帮助。SocketChannel.socket().isConnected()和S

我们有一个java服务器,它与Android客户端保持套接字通道打开,以便为我们的客户端应用程序提供推送功能

但是,在将Android置于飞行模式(我希望这会切断连接)之后,服务器仍然可以写入与该Android客户端关联的SocketCannel对象,并且不会抛出任何错误。在写入之前调用SocketChannel.isConnected()返回true

我们错过了什么?插座的处理方式是否与移动设备不同

提前感谢您的帮助。

SocketChannel.socket().isConnected()
SocketChannel.isConnected()
在连接套接字之前返回false。 一旦连接了套接字,它们将返回true, 它们不会因任何原因恢复为false

SocketChannel.isOpen()
返回true 直到调用
SocketChannel.socket().close()
SocketChannel.close()
。 在套接字上调用close()后,
SocketChannel.isOpen()
返回false,
没有其他事件会导致它返回false

SocketChannel.socket().isClosed()
返回false 直到调用
SocketChannel.socket().close()
SocketChannel.close()
。 在套接字上调用
close()
后-
SocketChannel.socket().isClosed()
将返回true, 没有其他事件会导致它返回true