2014-11-04 2 views
3

Если мой хост подключен к нескольким подсетям (через разные маршруты), как я могу найти соответствующий интерфейс для данного ip?Как определить, какой интерфейс принадлежит каждому сетевому назначению - Java?

Другими словами, при попытке получить доступ к другому хосту (или сетевому назначению, если вы используете печать маршрута в Windows, cmd), как я могу прочитать фактический интерфейс для этого сетевого назначения?

Сейчас я рассматриваю возможность открытия окна cmd с использованием печати маршрута, затем разбора вывода и написания собственного метода, чтобы определить, принадлежит ли адрес ip xxx.xx.xx.xxx для назначения сети xxx.xx.0.0, mask [...], а затем прочитав соответствующее значение интерфейса, но, безусловно, должен быть более простой способ.

+0

Вы хотите получить IP-адрес и маску подсети для всех интерфейсов? Или получить сетевой интерфейс по IP-адресу? – UDPLover

+0

Извините за задержку. Позвольте мне перефразировать, поэтому я уверен, что я прав. Я хочу знать для данного IP-адреса в моей сети. Интерфейс WHICH с моего ПК общается с ним. НАПРИМЕР. если у меня есть 2 интерфейса 11.135.20.30, которые находятся в одной подсети и 11.135.20.35, которые находятся в другой подсети, как я могу узнать из IP-адреса, с которым я общаюсь, какой интерфейс используется. – Eugen

+0

Это зависит от набора маршрутов в ОС. Но если вы хотите угадать IP-адрес назначения, вы должны знать IP каждого интерфейса и маску подсети. И вы можете получить IP-адрес каждого интерфейса и маски подсети с помощью Java. Вы не можете узнать набор маршрутов с прямой помощью от Java, потому что метод, который вы используете (с командой CMD и разбор его), прекрасен. – UDPLover

ответ

0

Короткий ответ: реального ответа на этот вопрос не было.

Я хотел посмотреть, какой из моих интерфейсов обменивается с устройством 11.135.20.30 (например).

То, что я сделал, это ping устройство, которое я хотел достичь, а затем снимать и читать пакеты ответов. Там я нашел IP-адрес назначения и, следовательно, адрес интерфейса, который я искал.