0

我正在尝试使用 java 实现 WOL,下面是我的代码。

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();
        }
    }

我的要求是在 PC 启动后运行一个脚本。是否可以获得以下详细信息。

  1. 机器接受魔术包后的响应。

  2. 电脑启动需要多长时间,我需要等待多长时间。

  3. 与其通过网络将其发送到所有机器,我可以将其发送到特定机器并从中获取响应。

4

1 回答 1

0

WakeOnLAN 是使用 UDP 实现的,设计上不可能从它那里得到响应。

您唯一能做的就是创建一个等待主机重新启动(启动或恢复)的循环。

无法保证主机会永远醒来,因为它可能从未收到消息,或者它可能无法启动以及其他大量可能的原因。

于 2019-02-03T10:41:21.640 回答