-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathMulticastServer.java
More file actions
54 lines (48 loc) · 1.91 KB
/
MulticastServer.java
File metadata and controls
54 lines (48 loc) · 1.91 KB
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
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.DatagramPacket;
import java.net.InetAddress;
import java.net.MulticastSocket;
public class MulticastServer {
public static final int PORT = 6789;
public MulticastServer(String name) {
System.out.println("Bienvenido " + name);
System.out.println("Escribe 'salir' para terminar la conversación");
try {
MulticastSocket socket = new MulticastSocket(PORT);
InetAddress group = InetAddress.getByName("224.0.0.1");
socket.joinGroup(group);
new Thread(() -> recibirMensajes(socket)).start();
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
boolean exit = false;
String message = "";
while (!exit) {
String input = br.readLine();
if (input.equals("exit")) {
message = "El usuario: (" + name + ") ha salido de la conversación ";
exit = true;
} else {
message = name + ": " + input;
}
DatagramPacket data = new DatagramPacket(message.getBytes(), 0, message.length(), group, PORT);
socket.send(data);
}
socket.leaveGroup(group);
socket.close();
} catch (Exception e) {
System.out.println("Error: " + e.getMessage());
}
}
private void recibirMensajes(MulticastSocket socket) {
try {
while (true) {
byte[] buffer = new byte[255];
DatagramPacket data = new DatagramPacket(buffer, buffer.length);
socket.receive(data);
System.out.println(new String(data.getData(), 0, data.getLength()));
}
} catch (Exception e) {
System.out.println("Error: " + e.getMessage());
}
}
}