Для некоторых моих соединений Java NIO, когда у меня есть вызов SocketChannel.write(ByteBuffer)
, он выдает IOException
: "Сломанная труба".
Что вызывает "сломанную трубу", и, что еще более важно, можно ли оправиться от этого состояния? Если он не может быть восстановлен, похоже, это будет хорошим признаком того, что возникла необратимая проблема, и я должен просто закрыть это соединение сокета. Это разумное предположение? Есть ли когда-нибудь время, когда этот IOException
будет возникать, когда соединение сокета все еще правильно подключено (а не рабочее соединение, которое не сработало в какой-то момент)?
На стороне примечания, разумно ли всегда вызывать SocketChannel.isConnected()
перед попыткой SocketChannel.write()
, и если да, могу ли я также предположить, что соединение "сломан" и должно быть закрыто, если оба SocketChannel.isConnected()
и SocketChannel.isConnectionPending()
являются false
?
Спасибо!