public static void sendWOLMagicPacket(String addrMac, String addrBroadcast, int port)
throws UnknownHostException, SocketException,
IOException, IllegalArgumentException{
//packet[0~5] = 0xFF
//packet[6~90] = mac[0]mac[1]mac[2]mac[3]mac[4]mac[5]mac[0]mac[1]mac[2]...
byte[] mac = new byte[6];
String[] octet = addrMac.split("(\\:|\\-)");
if (octet.length != 6) {
throw new IllegalArgumentException("Invalid MAC address.");
}
for (int i = 0; i < 6; i++) {
mac[i] = (byte) Integer.parseInt(octet[i], 16);
}
byte[] packet = new byte[6 + 16 * mac.length];
for (int i = 0; i < 6; i++)
packet[i] = (byte) 0xff;
for (int i = 6; i < packet.length; i += mac.length)
System.arraycopy(mac, 0, packet, i, mac.length);
InetAddress group = InetAddress.getByName(addrBroadcast);
DatagramSocket s = null;
try
{
s = new DatagramSocket();
DatagramPacket dgram = new DatagramPacket(packet, packet.length, group, port);
s.send(dgram);
}finally{
if( s != null)
s.close();
}
}