У кого-нибудь есть проблемы с NIO / IPV6 И отключением от сети?

#java #nio

#java #nio

Вопрос:

У меня есть тестовый пример, который работает в таких ситуациях

  1. ipv4, онлайн, nio (-Djava.net.preferIPv4Stack=true)
  2. ipv4, отключен (отключить Wi-Fi), nio (-Djava.net.preferIPv4Stack= true)
  3. ipv6, онлайн, nio

ЗАТЕМ окончательный ipv6, автономный (без подключения Wi-Fi), буквально никогда не подключается и просто зависает до истечения времени ожидания. первый вызов SocketChannel.connect возвращает false, что нормально, поэтому он инициирует асинхронное соединение с SelectableChannel.register. К сожалению, он зависает где-то в коде jdk ….. хммм, я думаю, я могу сделать дамп стека следующим и добавить больше информации.

Кто-нибудь видел эту проблему раньше? jdk 9.0.4

(Я думаю, мне также нужно отключить вилку и перейти на jdk10, что, надеюсь, будет легко — пальцы скрещены).

ОБНОВЛЕНИЕ 1: Ok Profiler не помог, поскольку это nio, он асинхронный, что означает, что он находится в ожидании селектора (ожидаемый и ожидаемый запуск — это все), а другой поток находится в будущем, ожидая его разрешения, пока селектор не сработает и не завершит соединение, которое никогда не происходит (только в автономном режиме). Думаю, я обновлю jdk и протестирую это тоже.

ОБНОВЛЕНИЕ 2: обновлено до jdk12 и те же результаты.

У кого-нибудь еще есть тесты через localhost, где сервер привязывается к порту 0, а клиент подключается к порту, который в конечном итоге привязывается к тому месту, где клиент находится в nio И использует ipv6? Очень раздражает, когда набор тестов не работает в автономном режиме и работает только в Сети, поэтому я пытаюсь это исправить.

спасибо, Дин

Комментарии:

1. Является ли ваш тест привязкой / подключением к локальному адресу IPv6, когда wiki отключен? Какая это операционная система. Вы пытались указать идентификатор области для идентификации интерфейса обратной связи?