我们有一个Java服务器,可通过Android客户端保持套接字 channel 打开,以便为客户端应用程序提供推送功能。
但是,在将Android置于飞行模式后(我希望它将切断连接),服务器仍可以写入与该Android客户端关联的SocketChannel对象,并且不会引发任何错误。在写入之前调用SocketChannel.isConnected()会返回true。
我们缺少什么? socket 的处理方式与移动设备不同吗?
在此先感谢您的帮助。
最佳答案
SocketChannel.socket().isConnected()
和SocketChannel.isConnected()
连接套接字之前,返回false。
连接套接字后,它们将返回true,
他们不会由于任何原因而转为假。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。