我们有一个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。

10-08 13:58