1

データがUDPマルチキャストアドレスで利用可能かどうかを確認したいのですが、私が見つけた唯一のメカニズムはPollメソッドでした。

設定:

client = new UdpClient(localEp);
client.JoinMulticastGroup(multicastAddr, localIpAddress);
client.Connect(multicastAddr, receiveport);

ポーリング:

if (!client.Client.Poll(100, SelectMode.SelectRead))

クライアントは接続されていますが(チェックしました)、trueを返すことはありません。
Wiresharkでは、UDPデータグラムが正しく送信されていることがわかります。

修正の提案?

編集:

IPEndpoint localEp =ローカルipv4ユニキャストアドレス、マルチキャストudps用ポートreceiveport=マルチキャスト受信用ポートmulticastaddr= IPAddress

4

1 に答える 1

0

UDPソケットの接続とは、受信時にデータグラムの送信元アドレスとポートを指定されたペアに制限し、送信時にデフォルトの宛先アドレスとポートを設定することを意味します。

への呼び出しを削除しますConnect()

編集0:

ローカルIPではなく、マルチキャストアドレスにバインドする必要があります。コンストラクターから削除するかlocalEp、マルチキャストグループ/ポートのペアに置き換えます。MSDNの例を参照してください。

そして、あなたは間違っています、あなたはReceive()ただ1つのデータグラムをすることができます。

于 2012-12-11T13:16:26.053 に答える