Можно ли получить ответ на запрос 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();
}
}
Мое требование состоит в том, чтобы запустить скрипт после запуска ПК. Можно получить следующую информацию.
Ответ от машины после того, как он принимает волшебный пакет.
Сколько времени требуется компьютеру для запуска и сколько времени мне нужно ждать.
Вместо того, чтобы отправлять его по сети на все машины, могу ли я отправить это на конкретную машину и получить от нее ответ.
0 ответов
WakeOnLAN реализован с использованием UDP, и получить ответ от него невозможно.
Единственное, что вы можете сделать, - это создать цикл, который ожидает возвращения хоста (загрузка или возобновление).
Нет никакой гарантии, что хост когда-либо проснется, потому что он, возможно, никогда не получал сообщение, или он мог не загрузиться и множество других возможных причин.