Можно ли получить ответ на запрос Wake On Lan(WOL), используя Java

Я пытаюсь реализовать WOL с использованием Java, и ниже мой код.

public void wakeonlan(String ipaddress, String macaddress) {

        try {
            byte[] macBytes = getMacBytes(macaddress);
            byte[] bytes = new byte[6 + 16 * macBytes.length];
            for (int i = 0; i < 6; i++) {
                bytes[i] = (byte) 0xff;
            }
            for (int i = 6; i < bytes.length; i += macBytes.length) {
                System.arraycopy(macBytes, 0, bytes, i, macBytes.length);
            }

            InetAddress address = InetAddress.getByName(ipaddress);
            DatagramPacket packet = new DatagramPacket(bytes, bytes.length, address, PORT);
            DatagramSocket socket = new DatagramSocket();
            socket.send(packet);
            socket.close();
        }
        catch (Exception e) {
            e.printStackTrace();
        }
    }

Мое требование состоит в том, чтобы запустить скрипт после запуска ПК. Можно получить следующую информацию.

  1. Ответ от машины после того, как он принимает волшебный пакет.

  2. Сколько времени требуется компьютеру для запуска и сколько времени мне нужно ждать.

  3. Вместо того, чтобы отправлять его по сети на все машины, могу ли я отправить это на конкретную машину и получить от нее ответ.

0 ответов

WakeOnLAN реализован с использованием UDP, и получить ответ от него невозможно.

Единственное, что вы можете сделать, - это создать цикл, который ожидает возвращения хоста (загрузка или возобновление).

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

Другие вопросы по тегам