Java tutorial
//package com.java2s; import android.util.Log; import java.net.DatagramPacket; import java.net.DatagramSocket; import java.net.InetAddress; public class Main { public static void sendWoLMagicPacket(final String broadcastIp, final String macAddress) { new Thread(new Runnable() { @Override public void run() { 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(broadcastIp); DatagramPacket packet = new DatagramPacket(bytes, bytes.length, address, 9); DatagramSocket socket = new DatagramSocket(); socket.send(packet); socket.close(); packet = new DatagramPacket(bytes, bytes.length, address, 7); socket = new DatagramSocket(); socket.send(packet); socket.close(); Log.e("WAKE_UP", "Wake-on-LAN packet sent."); final String output = getStringFromBytes(bytes); Log.i("WAKE_UP", output); } catch (Exception e) { Log.e("WAKE_UP", "Failed to send Wake-on-LAN packet: " + e); } } }).start(); } public static byte[] getMacBytes(String macStr) throws IllegalArgumentException { byte[] bytes = new byte[6]; String[] hex = macStr.split("(\\:|\\-)"); if (hex.length != 6) { throw new IllegalArgumentException("Invalid MAC address."); } try { for (int i = 0; i < 6; i++) { bytes[i] = (byte) Integer.parseInt(hex[i], 16); } } catch (NumberFormatException e) { throw new IllegalArgumentException("Invalid hex digit in MAC address."); } return bytes; } public static String getStringFromBytes(byte[] bytes) { StringBuilder sb = new StringBuilder(bytes.length * 3); for (byte b : bytes) { String hex = Integer.toHexString(0xFF & b); if (hex.length() == 1) hex = '0' + hex; sb.append(hex + ' '); } return sb.toString(); } }