Поиск MAC-адреса с использованием IP-адреса в Java - PullRequest
1 голос
/ 14 декабря 2010
public static void main(String[] args) {
    try {
        InetAddress address = InetAddress.getLocalHost();
        // InetAddress address = InetAddress.getByName("192.168.46.53");

        /*
         * Get NetworkInterface for the current host and then read the
         * hardware address.
         */
        NetworkInterface ni = NetworkInterface.getByInetAddress(address);
        if (ni != null) {
            byte[] mac = ni.getHardwareAddress();
            if (mac != null) {
                /*
                 * Extract each array of mac address and convert it to hexa with the
                 * following format 08-00-27-DC-4A-9E.
                 */
                for (int i = 0; i < mac.length; i++) {
                    System.out.format("%02X%s", mac[i], (i < mac.length - 1) ? "-" : "");
                }
            } else {
                System.out.println("Address doesn't exist or is not accessible.");
            }
        } else {
            System.out.println("Network Interface for the specified address is not found.");
        }

У меня проблема с поиском MAC-адреса удаленного хоста, но я не могу найти MAC-адрес моего локального хоста. Если у меня есть IP-адрес другой системы, могу ли я получить MAC-адрес этой системы?

InetAddress address = InetAddress.getByName ("192.168.46.53");

если я указываю IP-адрес системы в моей рабочей группе ... значения ni становятся нулевыми .... и не могут его получить .... но если дать мой IP-адрес моей системы ... он выбирает ???

Спасибо
Sunny

1 Ответ

7 голосов
/ 14 декабря 2010

Вы сможете получить только MAC-адрес удаленных хостов в вашей локальной сети, то есть хостов, которые находятся в той же подсети, что и ваш компьютер. MAC-адреса хостов, находящихся на расстоянии более одного шага (IP-переход, а не Ethernet-переход), не могут быть определены.

И обратите внимание, что для извлечения соответствующего MAC-адреса для хостов в вашей локальной сети требуются разрешения, необходимые для выборки таблицы ARP, или те, которые необходимы для отправки и получения необработанных пакетов. Большинство ОС допускают чтение таблицы ARP без специальных разрешений, но механизм, который вы используете для этого, будет меняться в зависимости от ОС. Если вам нужна техника для конкретной ОС, вам нужно обновить свой вопрос, чтобы включить эту информацию.

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