4

同じマルチキャスト グループとポートの組み合わせにサブスクライブする必要がある 2 つのアプリケーションがあります。現在、これを処理できる唯一の方法は、マルチキャスト グループにサブスクライブし、受信したトラフィックを個別の TCP 接続を介して各アプリケーションに転送するプロキシ アプリケーションを構築することです。プロキシ アプリケーションを削除して、各アプリケーションがマルチキャスト グループ自体にサブスクライブできるようにしたいのですが、「通常、各ソケット アドレスの使用は 1 つだけ許可されています」というソケット例外が発生します。

これを回避する方法はありますか?コンピューターごとに特定のマルチキャスト グループへのサブスクリプションが 1 つしか許可されないのはなぜですか?

4

1 に答える 1

4

許可されているかどうかは完全にはわかりませんが、可能な解決策についてはこちらをご覧ください。

同じコンピューター上の 2 つのプログラム間で UDP パケットを送受信する

最終的にUdpClient、エンドポイントを指定して をインスタンス化することはありません。代わりに、新しい UdpClient をインスタンス化し、エンドポイントを再利用するように SocketOptions を設定してから、バインドします。

IPEndPoint localpt = new IPEndPoint(IPAddress.Any, 6000);
UdpClient udpListener = new UdpClient();
udpListener.Client.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.ReuseAddress, true);
udpListener.Client.Bind(localpt);

上記の回答は、同じポートで送受信するためのものであるため、同じポートで 2 つの別々のアプリケーションで受信する場合に機能するかどうかはわかりません。試してみて、お知らせください。

于 2012-05-16T15:27:47.100 に答える