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:
In de terminal gebruik je het programma als volgt:
Graag jullie idee hierover,
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 (
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,
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