2012-03-25 9 views
0

私はDatagramSockets経由で通信する2つのスレッドを持っています。私は今、コミュニケーションを聞くことができる第三のスレッドが好きです。 Broadcasting to Multiple Recipientsを読んだ後、3番目のスレッドの2つのマルチキャストソケットが私が探しているようです。これはソケットで可能ですか?

しかし、DatagramSocketsが最初の2つのスレッドで使用しているのと同じポートにMulticastSocketsをバインドしようとすると、「java.net.BindException:Address already in:Can not bind」エラーが発生します。

答えて

1

私が通信するためにマルチキャストソケットを使用する2元のスレッドを変更し、そして第三のスレッドが、今では通信を聞くことができるように、これらのポートに結合された2つのMulitcastソケットを有しています。おそらく最も美しい解決策ではありませんが、私のニーズには十分です。

0

さて、あなたは同じポートに複数のソケットをバインドすることはできませんので、あなたが例外を取得。ポイントツーポイントとマルチキャストの両方をサポートしたい場合は、それぞれに異なるポートを指定する必要があります。それ以外の場合は、常にマルチキャストブロードキャストを行っている場合は、単に通常のデータグラムソケットを削除することができます。

+0

はい、それらはすべてマルチキャストソケットです(Javaで)提供できます。 – EJP

+0

あなたの答えは100%間違っています。それは簡単です。あなたのコメントは、UDPではなくTCPに適用されます。 – EJP

+0

'MulticastSocket'のデフォルトである'または 'setReuseAddress(true)'が呼び出されているはずです。 – EJP

0

あなたは、ソケットを介して通信して同じプログラムで2件のスレッドがありますか?どのように彼らのためにqueueを作成して、それはちょうどプロセスの通信にありますか?私は、次の作業を実行して、それを解決してきた答えとここのコメントのいくつかの助けを借りて

+0

私はキューについては同意しますが、2番目の段落は可能です(Javaではすべてマルチキャストソケット)。 – EJP

+0

データグラムがすでにマルチキャストパケットを受信するために使用しているポートを使用しようとしているという質問を読んでいます。 – Bill

+0

問題の全てのソケットは '' MulticastSocket'、彼らは同じポートを共有することができるためのデフォルトである、それらに呼ばれる 'setReuseAddressの(真)があった場合。興味深いもの: – EJP

関連する問題