• Pixeltje
  • Registratie: November 2005
  • Laatst online: 18-11 09:49

Pixeltje

Woo-woohoo!

Topicstarter
Ik heb gisteren even zitten spelen met Java, de reden is dat ik een simpel programma heb gevonden wat een Wake-up packet naar een pc in je netwerk stuurt.

Waarom dan Java? Omdat een executable niet werkt op mijn telefoon, en ik me bedacht dat 't ding wel Java snapt. Ik heb het programma (zie onder) eerst op mijn mac geprobeerd, en dat werkt. De bedoeling is dat je opdracht geeft tot het uitvoeren van 'WakeOnLan.java', en dan een IPadres en macadres ingeeft.

Gister dus geprobeerd om dat java programma'tje op mijn telefoon, in twee verschillende smaken: WakeOnLan.java en WakeOnLan.class. Het .java bestand wordt weergegeven als een notitie ( :? ) en het .class bestand snapt 'ie niet.

Mijn vraag is dus: is het mogelijk om zo'n soort programma te gebruiken op een symbian-toestel, en als dat kan, waarom snapt de telefoon dan .class niet, en wordt .java weergegeven als een tekstbestand?

Het script:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
import java.io.*;
import java.net.*;

public 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;
    }
    
   
}


In de terminal gebruik je het programma als volgt:

code:
1
javac WakeOnLan.java 10.0.0.255 macadres


Graag jullie idee hierover, _/-\o_

And I begged Angel of the Lord what are these tortured screams? And the angel said unto me; These are the cries of the carrots, the cries of the carrots! You see, Reverend Maynard, Tomorrow is harvest day and to them it is the holocaust


  • Sponge
  • Registratie: Januari 2002
  • Laatst online: 17-11 18:19

Sponge

Serious Game Developer

Ik heb geen flauw idee eigenlijk, maar ik neem aan dat je alleen een *.jar kan gebruiken om uit te voeren. Dus wellicht kan je die maken van je class?

en verder, javascript != java ;).

  • Pixeltje
  • Registratie: November 2005
  • Laatst online: 18-11 09:49

Pixeltje

Woo-woohoo!

Topicstarter
Sponge schreef op dinsdag 26 januari 2010 @ 20:50:
Ik heb geen flauw idee eigenlijk, maar ik neem aan dat je alleen een *.jar kan gebruiken om uit te voeren. Dus wellicht kan je die maken van je class?

en verder, javascript != java ;).
Dat zal ik eens proberen, en ik heb mijn post aangepast ;)

Ben niet zo thuis in Java, maar het leek me gewoon tof als het zou werken:)

And I begged Angel of the Lord what are these tortured screams? And the angel said unto me; These are the cries of the carrots, the cries of the carrots! You see, Reverend Maynard, Tomorrow is harvest day and to them it is the holocaust


  • Pixeltje
  • Registratie: November 2005
  • Laatst online: 18-11 09:49

Pixeltje

Woo-woohoo!

Topicstarter
Hmm, heb een .Jar gemaakt van het class-bestand, maar mijn telefoon zegt dat het een ongeldig .jar bestand is? :?

Nah, laat maar zitten. Ik heb de hoop opgegeven;)

Het Java programma heeft input nodig op een manier die mijn telefoon niet snapt. Misschien toch maar een Nokia N900 dan;)

[ Voor 43% gewijzigd door Pixeltje op 28-01-2010 21:45 ]

And I begged Angel of the Lord what are these tortured screams? And the angel said unto me; These are the cries of the carrots, the cries of the carrots! You see, Reverend Maynard, Tomorrow is harvest day and to them it is the holocaust