WAKE ON LAN
É uma função que pode ser usada para ligar um computador através da rede, através de um
comando dentro do seu programa.
Para isso é necessário ter alguns dados do computador que vai ser ligado.
É necessário saber o IP e o Endereço MAC.
Para obter esses dados, vá até o pc e no prompt de comando digite ipconfig /all
Anote o endress ip e o mac adress.
Caso mesmo assim não funcionar, ative a opção WOL da sua placa mãe para True
Entre no boot e econtre a opção WOL e marque como ligado. (Wake onBoard Lan)
Pronto !
=]
Obs.: Algumas placas mães por serem antigas não terá a opção wol no boot e por isso nao irá funcionar.
Acredito que de 2005 em diante funciona.. (testei) ;]
---
- import java.io.*;import java.net.*;public class WakeOnLan {public void WOL() {final int PORT = 9;//Dados da maquina que vai ser ligada via redeString ipStr = "10.11.12.123"; //Aqui é o IP da maquinaString macStr = "00:07:E9:93:18:EB"; //Aqui é o Endereço MACtry {
byte[] macBytes = getMacBytes(macStr);
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(ipStr);
DatagramPacket packet = new DatagramPacket(bytes,bytes.length, address, PORT);DatagramSocket socket = new DatagramSocket();
socket.send(packet);
socket.close();
System.out.println("Comando WOL enviado");
}catch (Exception e) {
System.out.println("Falha ao enviar comando " + e);
System.exit(1); }
}
private static byte[] getMacBytes(String macStr) throwsIllegalArgumentException {byte[] bytes = new byte[6];
String[] hex = macStr.split("(\\:|\\-)");
if (hex.length != 6) {
throw new IllegalArgumentException("Endereço MAC inválido");
}
try (for (int i = 0; i < 6; i++) {
bytes[i] = (byte) Integer.parseInt(hex[i], 16);
}catch (NumberFormatException e) {
throw new IllegalArgumentException("Endereço Hexadecimal MAC inválido");
}
return bytes;
}
}
É isso ai.
;]