有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

安卓写入应关闭的javasocket通道不会生成异常

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

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

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

提前感谢你的帮助


共 (1) 个答案

  1. # 1 楼答案

    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