2 つのプロセス間で MulticastSocket を使用しようとしています。サーバーはパケットを送信し、クライアントはそれを読み取る必要があります。サーバーコードは次のとおりです。
MulticastSocket multicastSocket = new MulticastSocket();
multicastSocket.setTimeToLive((Integer) config.getValue("MULTICAST_TTL"));
multicastSocket.setLoopbackMode(false);
multicastSocket.setReuseAddress(true);
String msg = "KA";
InetAddress multicastGroup = "225.3.0.1";
int port = 4000;
DatagramPacket pkt = new DatagramPacket(msg.getBytes(), msg.getBytes().length, multicastGroup, port);
while(true) {
try{
multicastSocket.send(pkt);
System.out.println("SPEDITO PACCHETTO: "+pkt.getSocketAddress());
}catch ( IOException e){
System.out.println("Errore di comunicazione con la rete multicast. "+e.getMessage());
}
}
クライアントコードは次のとおりです。
this.multicastSocket = new MulticastSocket(4000);
InetAddress multicastGroup = InetAddress.getByName("225.3.0.1");
this.multicastSocket.joinGroup(multicastGroup);
DatagramPacket pkt = new DatagramPacket(new byte[512], 512);
while(true){
System.out.println("GOING TO READ");
multicastSocket.receive(pkt);
System.out.println("READ");
byte[] b = pkt.getData();
String msg = new String(b, 0, pkt.getLength());
}
問題は、サーバーがパケットを送信する (send(pkt) が返される) 代わりに、クライアントがパケットを受信しない (receive(pkt) が返されない) ことです。問題はどこだ?
ps: サーバーとクライアントは同じコンピューター上にあり、MULTICAST_TTL は 1 です。