2

Java でマルチキャスト ソケットを使用しているときに、受信メソッドに問題があります。マルチキャスト ソケットを使用してグループ チャットを行いたいホストがいくつかあります。各ホストで 2 つのスレッド (読み取りと書き込み) が開始され、両方ともグループ IP に参加するマルチキャスト ソケットを使用します。問題は、受信メソッドの実行時に、書き込みスレッドで他のホストから以前に送信されたデータグラム パケットが返されないことです。何が問題なのですか? 読み取りスレッドの run メソッドのコードを次に示します。

byte buff[]=new byte[576];
DatagramPacket DataPkt=new DatagramPacket(buff, 576);
MultiReadSocket.receive(DataPkt);
System.out.println("Datagram Packet: " + DataPkt);
ByteArrayInputStream bais = new ByteArrayInputStream(buff);
ObjectInputStream ois = new ObjectInputStream(bais);
MyPkt = (MyPacket)ois.readObject();

書き込みスレッドの run メソッドのコード:

ByteArrayOutputStream baos = new ByteArrayOutputStream();
ObjectOutputStream oos = new ObjectOutputStream(baos);
oos.writeObject(MyPkt);
DatagramPacket DataPkt = new DatagramPacket(baos.toByteArray(),    baos.toByteArray().length,InetAddress.getByName("235.0.0.2"), 2020);
MultiWriteSocket.send(DataPkt);

さらに情報が必要な場合は、教えてください。

4

1 に答える 1

1

コメントで述べたように、すべてのコードを見ないと何が起こっているのかを確認するのは困難ですが、少なくとも「読み取り」シナリオでは、マルチキャスト ソケットをマルチキャスト グループに参加させていないようです。

詳細については、MulticastSocket のドキュメントを参照してください。JavaDoc の上部に、書き込みと読み取りの両方の良い、簡単な例があります。

于 2012-11-28T22:35:46.500 に答える