对于我的一些 JavaNIO 连接,当我有一个 SocketChannel.write(ByteBuffer)
调用时,它抛出一个 IOException
: “故障管道”。
是什么导致了“管道破裂”,更重要的是,是否有可能从这种状态中恢复过来?如果无法恢复,这似乎是一个好的迹象,表明发生了不可逆的问题,我应该简单地关闭这个套接字连接。这个假设合理吗?当套接字连接仍然处于正确连接状态(而不是在某个时刻失败的工作连接)时,是否曾经发生过这种 IOException
?
另外,在尝试 SocketChannel.write()
之前总是调用 SocketChannel.isConnected()
是明智的吗? 如果是这样,我是否也可以假设连接是“断开的”,如果 SocketChannel.isConnected()
和 SocketChannel.isConnectionPending()
都是 false
,那么连接应该关闭?
谢谢!