Если мой хост подключен к нескольким подсетям (через разные маршруты), как я могу найти соответствующий интерфейс для данного ip?Как определить, какой интерфейс принадлежит каждому сетевому назначению - Java?
Другими словами, при попытке получить доступ к другому хосту (или сетевому назначению, если вы используете печать маршрута в Windows, cmd), как я могу прочитать фактический интерфейс для этого сетевого назначения?
Сейчас я рассматриваю возможность открытия окна cmd с использованием печати маршрута, затем разбора вывода и написания собственного метода, чтобы определить, принадлежит ли адрес ip xxx.xx.xx.xxx для назначения сети xxx.xx.0.0, mask [...], а затем прочитав соответствующее значение интерфейса, но, безусловно, должен быть более простой способ.
Вы хотите получить IP-адрес и маску подсети для всех интерфейсов? Или получить сетевой интерфейс по IP-адресу? – UDPLover
Извините за задержку. Позвольте мне перефразировать, поэтому я уверен, что я прав. Я хочу знать для данного IP-адреса в моей сети. Интерфейс WHICH с моего ПК общается с ним. НАПРИМЕР. если у меня есть 2 интерфейса 11.135.20.30, которые находятся в одной подсети и 11.135.20.35, которые находятся в другой подсети, как я могу узнать из IP-адреса, с которым я общаюсь, какой интерфейс используется. – Eugen
Это зависит от набора маршрутов в ОС. Но если вы хотите угадать IP-адрес назначения, вы должны знать IP каждого интерфейса и маску подсети. И вы можете получить IP-адрес каждого интерфейса и маски подсети с помощью Java. Вы не можете узнать набор маршрутов с прямой помощью от Java, потому что метод, который вы используете (с командой CMD и разбор его), прекрасен. – UDPLover