我正在尝试使用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启动后运行脚本。是否可以获得以下详细信息。
机器接受魔术包后的响应。
PC启动需要多长时间以及需要等待多长时间。
我可以将其发送到特定的计算机并从中获取响应,而不是通过网络将其发送到所有计算机。
答案 0 :(得分:0)
网络唤醒使用UDP实现,并且它是不可能得到由设计从中的响应。
你能做的唯一的事情就是创建一个循环,主机等待重回(启动或恢复)。
不能保证主机将永远唤醒,因为它可能从未收到过该消息,或者它可能无法启动以及其他许多可能的原因。