是否可以使用Java获取Wake On Lan(WOL)请求的响应

时间:2017-07-24 10:28:45

标签: java wake-on-lan

我正在尝试使用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. PC启动需要多长时间以及需要等待多长时间。

  3. 我可以将其发送到特定的计算机并从中获取响应,而不是通过网络将其发送到所有计算机。

1 个答案:

答案 0 :(得分:0)

网络唤醒使用UDP实现,并且它是不可能得到由设计从中的响应。

你能做的唯一的事情就是创建一个循环,主机等待重回(启动或恢复)。

不能保证主机将永远唤醒,因为它可能从未收到过该消息,或者它可能无法启动以及其他许多可能的原因。