IP-Multicast-Chat mit Java

Werbung
Programmieren I / Schmiedecke
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
VL-Material
Seite 1 von 1
IP-Multicast-Chat mit Java
(Quelle Marko Boger, Java in verteilten Systemen, dpunkt 1999)
import java.net.*;
import java.io.*;
public class
MulticastChatClient {
ChatFrame gui;
String name;
InetAddress group;
MulticastSocket socket;
int port = 6789;
public MulticastChatClient(String name) {
this.name = name;
// GUI erzeugen und Events behandeln:
// Nach Texteingaben wird sendTextToChat(),
// bei Schließen des Fensters wird disconnect()gerufen.
gui = new ChatFrame("Chat mit mit IP-Multicast");
gui.input.addKeyListener (new EnterListener(this,gui));
gui.addWindowListener(new ExitListener(this));
try {
socket = new MulticastSocket(port);
// Anmelden bei einer Multicast-Gruppe
group = InetAddress.getByName("226.1.3.5");
socket.joinGroup(group);
gui.output.append("Connected...\n");
// Auf Nachrichten warten und empfangen
while (true) {
byte[] buffer = new byte[1000];
DatagramPacket datagram = new DatagramPacket
(buffer,buffer.length);
socket.receive(datagram);
String message = new String(datagram.getData());
gui.output.append(message);
}
} catch (IOException e) {
e.printStackTrace();
}
}
public void sendTextToChat(String message) {
message = name+": "+message+"\n";
Programmieren I / Schmiedecke
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
VL-Material
Seite 2 von 2
byte[] buf = (message).getBytes();
DatagramPacket dg = new DatagramPacket
(buf, buf.length,group,port);
try { socket.send(dg); }
catch (IOException ex) { ex.printStackTrace(); }
}
public void disconnect() {}
public static void main(String args[]) {
if (args.length!=1)
throw new RuntimeException
("Syntax: java ChatClient <name>");
ChatClient client = new ChatClient(args[0]);
}
}
/* Die Klassen ChatFrame, EnterListener und ExitListener werden unverändert aus dem
* (Unicast) Chat übernommen.
*/
Herunterladen