| Code for Magic packet: |
| import android.util.Log; |
| import java.io.IOException; |
| import java.net.InetAddress; |
| import java.net.UnknownHostException; |
| import java.net.DatagramSocket; |
| import java.net.DatagramPacket; |
| import java.net.SocketException; |
| import java.lang.IllegalArgumentException; |
| import java.lang.StringBuffer; |
| import java.util.regex.Pattern; |
| import java.util.regex.Matcher; |
| /** |
| * @desc Static WOL magic packet class |
| */ |
| public class MagicPacket |
| { |
| private static final String TAG = "MagicPacket"; |
| public static final String BROADCAST = "192.168.1.255"; |
| public static final int PORT = 9; |
| public static final char SEPARATOR = ':'; |
| public static String send(String mac, String ip) throws UnknownHostException, SocketException, IOException, IllegalArgumentException |
| { |
| return send(mac, ip, PORT); |
| } |
| public static String send(String mac, String ip, int port) throws UnknownHostException, SocketException, IOException, IllegalArgumentException |
| { |
| // validate MAC and chop into array |
| final String[] hex = validateMac(mac); |
| // convert to base16 bytes |
| final byte[] macBytes = new byte[6]; |
| for(int i=0; i<6; i++) { |
| macBytes[i] = (byte) Integer.parseInt(hex[i], 16); |
| } |
| final byte[] bytes = new byte[102]; |
| // fill first 6 bytes |
| for(int i=0; i<6; i++) { |
| bytes[i] = (byte) 0xff; |
| } |
| // fill remaining bytes with target MAC |
| for(int i=6; i<bytes.length; i+=macBytes.length) { |
| System.arraycopy(macBytes, 0, bytes, i, macBytes.length); |
| } |
| // create socket to IP |
| final InetAddress address = InetAddress.getByName(ip); |
| final DatagramPacket packet = new DatagramPacket(bytes, bytes.length, address, port); |
| final DatagramSocket socket = new DatagramSocket(); |
| socket.send(packet); |
| socket.close(); |
| return hex[0]+SEPARATOR+hex[1]+SEPARATOR+hex[2]+SEPARATOR+hex[3]+SEPARATOR+hex[4]+SEPARATOR+hex[5]; |
| } |
| public static String cleanMac(String mac) throws IllegalArgumentException |
| { |
| final String[] hex = validateMac(mac); |
| StringBuffer sb = new StringBuffer(); |
| boolean isMixedCase = false; |
| // check for mixed case |
| for(int i=0; i<6; i++) { |
| sb.append(hex[i]); |
| } |
| String testMac = sb.toString(); |
| if((testMac.toLowerCase().equals(testMac) == false) && (testMac.toUpperCase().equals(testMac) == false)) { |
| isMixedCase = true; |
| } |
| sb = new StringBuffer(); |
| for(int i=0; i<6; i++) { |
| // convert mixed case to lower |
| if(isMixedCase == true) { |
| sb.append(hex[i].toLowerCase()); |
| }else{ |
| sb.append(hex[i]); |
| } |
| if(i < 5) { |
| sb.append(SEPARATOR); |
| } |
| } |
| return sb.toString(); |
| } |
| private static String[] validateMac(String mac) throws IllegalArgumentException |
| { |
| // error handle semi colons |
| mac = mac.replace(";", ":"); |
| // attempt to assist the user a little |
| String newMac = ""; |
| if(mac.matches("([a-zA-Z0-9]){12}")) { |
| // expand 12 chars into a valid mac address |
| for(int i=0; i<mac.length(); i++){ |
| if((i > 1) && (i % 2 == 0)) { |
| newMac += ":"; |
| } |
| newMac += mac.charAt(i); |
| } |
| }else{ |
| newMac = mac; |
| } |
| // regexp pattern match a valid MAC address |
| final Pattern pat = Pattern.compile("((([0-9a-fA-F]){2}[-:]){5}([0-9a-fA-F]){2})"); |
| final Matcher m = pat.matcher(newMac); |
| if(m.find()) { |
| String result = m.group(); |
| return result.split("(\\:|\\-)"); |
| }else{ |
| throw new IllegalArgumentException("Invalid MAC address"); |
| } |
| } |
| public static void main(String[] args) { |
| if(args.length != 2) { |
| System.out.println("Usage: java MagicPacket <broadcast-ip> <mac-address>"); |
| System.out.println("Example: java MagicPacket 192.168.0.255 00:0D:61:08:22:4A"); |
| System.out.println("Example: java MagicPacket 192.168.0.255 00-0D-61-08-22-4A"); |
| System.exit(1); |
| } |
| String ipStr = args[0]; |
| String macStr = args[1]; |
| try { |
| macStr = MagicPacket.cleanMac(macStr); |
| System.out.println("Sending to: "+macStr); |
| MagicPacket.send(macStr, ipStr); |
| } |
| catch(IllegalArgumentException e) { |
| System.out.println(e.getMessage()); |
| }catch(Exception e) { |
| System.out.println("Failed to send Wake-on-LAN packet:" + e.getMessage()); |
| } |
| } |
| } |
Particle Js Example it is state foreword example we just need to changes in .html , .css And Very Importantly .Json File 1.html file(Index.html file) : <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="X-UA-Compatible" content="ie=edge"> <title>Particles Login</title> <link rel="stylesheet" href="style.css"> </head> <body> <div id="particles-js"> </div> <script src="https://cdn.jsdelivr.net/particles.js/2.0.0/particles.min.js"></script> <script> particlesJS.load('particles-js', 'particles.json', function(){ console.log('particles.json loaded...'); }); </script> </body> </html> 2...
Comments
Post a Comment