安卓写入应关闭的javasocket通道不会生成异常
我们有一个java服务器,它与Android客户端保持socket通道打开,以便为我们的客户端应用程序提供推送功能
但是,在将Android置于飞行模式(我希望这会切断连接)之后,服务器仍然可以写入与该Android客户端关联的SocketCannel对象,并且不会抛出任何错误。呼叫SocketChannel。写入前的isConnected()返回true
我们错过了什么?插座的处理方式是否与移动设备不同
提前感谢你的帮助
你可以在下面搜索框中键入要查询的问题!
我们有一个java服务器,它与Android客户端保持socket通道打开,以便为我们的客户端应用程序提供推送功能
但是,在将Android置于飞行模式(我希望这会切断连接)之后,服务器仍然可以写入与该Android客户端关联的SocketCannel对象,并且不会抛出任何错误。呼叫SocketChannel。写入前的isConnected()返回true
我们错过了什么?插座的处理方式是否与移动设备不同
提前感谢你的帮助
# 1 楼答案
SocketChannel.socket().isConnected()
和SocketChannel.isConnected()
在连接套接字之前返回false。 一旦连接了插座,它们将返回true, 它们不会以任何理由恢复为falseSocketChannel.isOpen()
返回true 直到你调用SocketChannel.socket().close()
或SocketChannel.close()
。 一旦调用了套接字上的close(),SocketChannel.isOpen()
返回false, 没有其他事件会导致它返回falseSocketChannel.socket().isClosed()
返回false 直到你调用SocketChannel.socket().close()
或SocketChannel.close()
。 一旦你在一个套接字上调用close()
SocketChannel.socket().isClosed()
将返回true, 没有其他事件会导致它返回true