Как получить адрес сетевой с помощью Java?

голоса
24

Я хотел бы, чтобы получить сетевой адрес сетевого интерфейса, который используется для доступа к определенному веб-сайт.

Как это может быть сделано в Java?

Решение Обратите внимание , что принятое решение getHardwareAddressдоступно только в Java 6. Там , кажется, не быть решением для Java 5 в сторону от выполнения I (F | р) confing.

Задан 29/08/2008 в 05:31
источник пользователем
На других языках...                            


4 ответов

голоса
17

java.net.NetworkInterface.getHardwareAddress (метод , добавленный в Java 6)

Он должен быть вызван на машине вы заинтересованы - МАС не передается через сетевые границы (т.е. LAN и WAN). Если вы хотите использовать его на сервере сайта, чтобы опрашивать клиентов, вы должны запустить апплет, который будет сообщать результат обратно к вам.

Для Java 5 и старше я нашел код разбора вывода средств командной строки на различных системах .

Ответил 29/08/2008 d 05:48
источник пользователем

голоса
3

Вы можете получить адрес , который подключается к ServerSocket с помощью http://java.sun.com/javase/6/docs/api/java/net/NetworkInterface.html#getInetAddresses ()

Однако, если ваш клиент подключается через NAT, то вы получите адрес маршрутизатора, а не адрес Ethernet. Если в вашей локальной сети (через концентратор / коммутатор, не маршрутизатор с NAT) тем он Виль работать как не предполагалось.

Ответил 29/08/2008 d 05:48
источник пользователем

голоса
2

На самом деле, помимо других правильных ответов (JDK 6; Exec 'Ifconfig'), есть библиотеки JNI основе. Java UUID Generator (JUG) 2,0 имеет код для некоторых платформ. Это работает на JDK 1.2 и выше , по меньшей мере , (возможно , даже 1,1)

Ответил 16/04/2010 d 22:01
источник пользователем

голоса
0

Вы можете использовать Jxnet: https://github.com/ardikars/Jxnet (Требовать Libpcap / WinPcap)

Ответил 10/07/2016 d 16:48
источник пользователем

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more