Итак, я делаю распределенную систему для своего класса, и мне нужно реализовать MulticastServer для этого.Дело в том, что я пытаюсь получать сообщения на моем сервере, но я получаю дубликаты пакетов и, следовательно, два идентичных сообщения ... Я в настоящее время на Mac, и я пытался с терминалом и Intel Ij, но когда я пыталсяв компьютере друга не было абсолютно никаких проблем.
import java.net.MulticastSocket;
import java.net.DatagramPacket;
import java.net.InetAddress;
import java.io.IOException;
import java.io.ByteArrayInputStream;
import java.io.ObjectInputStream;
import java.io.BufferedInputStream;
import java.util.HashMap;
public class MulticastServer extends Thread {
private String MULTICAST_ADDRESS = "224.0.224.0";
private int PORT_ENV = 4321; // Porto para enviar
private int PORT_REC = 4322; // Porto para receber
public static void main(String[] args) {
MulticastServer server = new MulticastServer();
server.start();
}
public MulticastServer() {
super("Server running " + (long) (Math.random() * 1000));
}
public void run() {
MulticastSocket socket = null;
System.out.println(this.getName());
try {
socket = new MulticastSocket(PORT_ENV);
InetAddress group = InetAddress.getByName(MULTICAST_ADDRESS);
socket.joinGroup(group);
while(true) {
byte[] buffer = new byte[256];
DatagramPacket packet = new DatagramPacket(buffer, buffer.length);
socket.receive(packet);
System.out.println("Received packet from " + packet.getAddress().getHostAddress() + ":" + packet.getPort() + " with message:");
String message = new String(packet.getData(), 0, packet.getLength());
System.out.println(message);
}
} catch (IOException e) {
e.printStackTrace();
} finally {
socket.close();
}
}
Пожалуйста, помогите мне:)