Java Найти IP-шлюз по умолчанию (v4 / v6), Windows / Linux / MAC для PCP - PullRequest
0 голосов
/ 21 сентября 2018

Я пытаюсь внедрить полностью автоматический PCP (в соответствии с https://tools.ietf.org/html/rfc6887) для децентрализованной системы чата P2P. Это требует настройки PCP, и пока я не нашел никого, кто бы имел библиотеку илирамки для этого. Теперь я пытаюсь создать свой собственный, и вот первое препятствие:

Как найти IP-адрес шлюза по умолчанию для текущей системы в нескольких типах ОС и, если возможно, как IPv4, так и IPv6.

Я сделал простой способ получения и интерпретации команд для интерфейса командной строки ОС хоста, используя

Runtime.getRuntime().exec("[COMMAND LINE]");

, поскольку сама Java, похоже, не предоставляет такой информации, если я не знаю, гдеТекущий план будет включать в себя получение ipconfig и ifconfig в Windows и Linux (для MAC я уверен, что есть подобная команда), а затем поиск по ключевому слову "gateway"и найдите следующие адреса IPv4 и IPv6, а затем посмотрите, не ответит ли кто-нибудь на этот порт через UDP-порт 5351 после нескольких попыток. Я вполне уверен, что это может сработать, но перед использованием try-и методы ошибок Я хочу найти более профессиональное решение.

Кроме того, было бы хорошо иметь способ выяснить, находится ли система внутри NAT.Хотя это обычно не является проблемой для частных сетей A, B и C, всегда существует возможность пользовательских настроек на маршрутизаторе, таких как более настроенные частные сети, требующие NAT.

...