У меня есть ситуация, когда у меня есть несколько соединений с несколькими серверами, и я хочу использовать NIO для этого.Как обнаружить ошибку соединения на канале NIO
Селектор скажет мне, когда есть данные для чтения. Есть ли способ узнать, когда соединение больше не подключено? Может быть, когда запись терпит неудачу или поймает исключение, которое бросается на какую-то операцию? Мне нужно, чтобы это было неблокирующимся, и я хочу сделать это таким образом, чтобы Канал мог быть восстановлен (т. Е. Установлен новый канал на тот же сервер), если соединение терпит неудачу.
Спасибо! Похоже, что он работает и для сбоев соединения, поэтому имеет смысл и для чтения/записи. – jbx
* Когда канал сломан, select() вернется, а клавиша выбора канала будет отображаться читаемым/записываемым *, это неверно, пока я читаю из SocketChannel, кабель отключен, 'select() 'продолжает возвращать ** 0 **, и канал больше не будет выбран. Если я читаю или записываю на канал, игнорируя его читаемое/записываемое состояние, 'read()' не возвращает ** - 1 **, он продолжает возвращать ** 0 **, а 'write()' не генерирует исключение , В настоящее время я не нашел способа обнаружить разъединение разъемов, кто-то подсказывает мне? – neevek
@neevek Вы когда-нибудь решали это? –