Привязка сервера IPv6 снабжает сокетом в Windows

Если Вы обеспокоены измерением прошедшего времени, необходимо использовать монотонные часы (python 3) . Эти часы не затронуты системными обновлениями часов как Вы, видел бы, скорректировал ли запрос NTP Ваше системное время, например.

>>> import time
>>> millis = round(time.monotonic() * 1000)

Это обеспечивает ссылочное время в секундах, которые могут использоваться для сравнения позже для измерения прошедшего времени.

5
задан Helen 13 September 2009 в 18:18
поделиться

2 ответа

Я нашел решение; это ошибка 6230761 . Единственный поддерживаемый способ создания канала сокета сервера IPv6 - сначала создать серверный сокет:

ServerSocket s = new ServerSocket();
s.bind(new InetSocketAddress(InetAddress.getByName("::"), 0));

Изменить : это означает, что NIO не может использоваться с IPv6.

7
ответ дан 14 December 2019 в 04:43
поделиться

Эта ошибка означает, что вы смешиваете адрес IPv6 с протоколом, отличным от IPv6. Вероятно, это означает, что ServerSocketChannel, с которым вы начинаете, не поддерживает IPv6. Я не думаю, что Java официально поддерживает Windows 7. Попробуйте использовать NetworkInterface.getNetworkInterfaces () и NetworkInterface.getInetAddresses (), чтобы убедиться, что адреса IPv6 действительно доступны вашему приложению Java. В документации Java даже говорится, что попытка передать адрес IPv6, когда IPv6 недоступен или когда IPv6 отключен, вызовет исключения.

1
ответ дан 14 December 2019 в 04:43
поделиться
Другие вопросы по тегам:

Похожие вопросы: