Получение информации о сети в Java на платформах Windows и Linux - PullRequest
6 голосов
/ 16 ноября 2011

Мне нужна информация о конфигурации сети в моем приложении, которая больше, чем предоставляют java.net.NetworkInterface и java.net.InetAddress. Я хотел бы включить такую ​​информацию, как подсеть, шлюз и DNS-серверы, но код должен быть переносимым на платформы Windows и Linux.

Я попытался сделать это, выполнив Runtime.getRuntime().exec("ipconfig") для Windows и Runtime.getRuntime().exec("ifconfig") для Linux и проанализировав результаты. Может быть, есть лучший способ сделать это или проект с открытым исходным кодом, который я мог бы использовать.

Заранее спасибо за любые идеи, которые могут направить меня в правильном направлении

Ответы [ 2 ]

1 голос
/ 08 декабря 2011

Если вы думаете о лучшем и более надежном решении, вы, вероятно, можете использовать идею SNMP (Simple Network Management Protocol). Существует несколько API для использования, SNMP4J является самым известным и открытым исходным кодом. Поскольку SNMP является Поддерживается несколькими операционными системами и даже коммутаторами и маршрутизаторами. Вероятно, это хорошая идея, если вы хотите получить более подробную статистику на уровне сети. Но если вы хотите более простое решение, используйте API Sigar, который поддерживает множество ОС, включая Windows и linux. Одна проблема с Sigar заключается в том, что он лицензирован по лицензии GPL, которая запрещает вам развертывать его в коммерческом проекте.

0 голосов
/ 18 ноября 2011

Вы можете сделать в нативном коде и использовать JNI. Затем отправьте .dll для Windows и .so (или исходный код) для Linux, хотя это, вероятно, не намного лучше, чем решение 'exec'.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...