B4J Question [SOLVED] WakeOnLan (JAVA) to B4X code... something I am missing (as always)...

Magma

Expert
Licensed User
Longtime User
Hi there,

trying to convert(use) wakeonlan code (java) to b4j... but something I am missing!

B4X:
    Dim wk As JavaObject=Me
    wk.InitializeStatic("magma.ipk.main").RunMethod("WakeOnLan",Array("192.168.168.4","14-DA-E9-29-76-59"))

....
#if JAVA

import java.io.*;
import java.net.*;

public static class WakeOnLan {
   
    public static final int PORT = 9;   
   
    public static void main(String[] args) {
       
        if (args.length != 2) {
            System.out.println("Usage: java WakeOnLan <broadcast-ip> <mac-address>");
            System.out.println("Example: java WakeOnLan 192.168.0.255 00:0D:61:08:22:4A");
            System.out.println("Example: java WakeOnLan 192.168.0.255 00-0D-61-08-22-4A");
            System.exit(1);
        }
       
        String ipStr = args[0];
        String macStr = args[1];
       
        try {
            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("Wake-on-LAN packet sent.");
        }
        catch (Exception e) {
            System.out.println("Failed to send Wake-on-LAN packet: + e");
            System.exit(1);
        }
       
    }
   
    private 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;
    }
   
  
}

#End If

Getting this error:


Thanks in advance for the help!
 

Magma

Expert
Licensed User
Longtime User
...If understand well..

you mean that:

B4X:
    Dim wk As JavaObject=Me
    wk.InitializeNewInstance("b4j.example.wakeonlan",Array(""))
    wk.RunMethod("main",Array("192.168.168.4","14-DA-E9-29-76-59"))

ps: change to b4j.example... to be easier to test.. anyone...

but i am getting the same error:
 
Upvote 0

Quandalle

Member
Licensed User
your java code can't work as it is.
In the zip, a simple port as a B4j class
 

Attachments

  • WakeuponLan.zip
    1.8 KB · Views: 99
Upvote 0
Solution
Cookies are required to use this site. You must accept them to continue using the site. Learn more…