У меня есть тестовый пример, который работает в этих ситуациях
- ipv4, онлайн, nio (-Djava.net.preferIPv4Stack = true)
- ipv4, автономный режим (отключить Wi-Fi), nio (-Djava.net.preferIPv4Stack = true)
- ipv6, онлайн, nio
ТОГДА, последний ipv6, офлайн (без wifi-подключения), буквально никогда не подключается и просто зависает до истечения времени ожидания. первый вызов, поэтому SocketChannel.connect возвращает false, что нормально, а затем он инициирует асинхронное соединение с SelectableChannel.register. К сожалению, он висит где-то в коде jdk ..... хммммм, я думаю, я могу сделать дамп стека дальше и добавить дополнительную информацию.
Кто-нибудь видел эту проблему раньше?
JDK 9,0,4
(Полагаю, мне также нужно потянуть за вилку и перейти на jdk10, что, надеюсь, будет легко - скрестив пальцы).
ОБНОВЛЕНИЕ 1: Ok Profiler не помог, так как он nio, он асинхронный, что означает, что он находится в ожидании селектора (ожидаемый и ожидаемый запуск - все), а другой поток ожидает в будущем, ожидая его разрешения, пока селектор не сработает и завершает соединение, которое никогда не происходит (только в автономном режиме). Я думаю, я обновлю JDK и протестирую это тоже.
ОБНОВЛЕНИЕ 2: Обновлен до jdk12 и те же результаты.
Есть ли у кого-нибудь еще тесты на локальном хосте, где сервер связывается с портом 0, а клиент подключается к порту, который в итоге связывается там, где клиент находится в nio И использует ipv6? Очень неприятно, когда набор тестов не работает в автономном режиме, а работает только онлайн, поэтому я пытаюсь это исправить.
спасибо,
Декан