2

を使用してUdpClient、マルチキャスト グループからデータを読み取ります。

次のように構成されています。

m_udpClientReceiver = new UdpClient();
m_receivingEndPoint = new IPEndPoint(IPAddress.Any, m_port);
m_udpClientReceiver.ExclusiveAddressUse = false;
m_udpClientReceiver.Client.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.ReuseAddress, true);
m_udpClientReceiver.ExclusiveAddressUse = false;
m_udpClientReceiver.Client.Bind(m_receivingEndPoint);
m_udpClientReceiver.JoinMulticastGroup(m_multicastAddress, 255);

そして私はそれを読んだ:

Byte[] data = m_udpClientReceiver.Receive(ref m_receivingEndPoint);

異なるサブネットにバインドされている複数のネットワーク カード (2 つの LAN、1 つの wifi) があります。どのネットワーク カード (実際にはどの IP) でリクエストが受信されたかを知る必要があります。

どうすればこれを達成できますか?

ありがとうございました!

4

2 に答える 2

0

私は最終的にBeginReceiveメソッド(非同期)を使用しており、それがバインドされているIPをコンテキストとして提供しています

于 2013-03-08T14:21:34.567 に答える
0

別の方法として、マルチキャスト グループに参加しないことを検討しましたか? 標準の UDPClient クラスを使用して、マルチキャスト パケットを簡単に送受信できます。すなわち

UdpClient.Send(byte[] dgram, int bytes, IPEndPoint endPoint)

どこでendPoint = new IPEndPoint(IPAddress.Broadcast, <port number>)。そして、まだ使用している受信時:

Byte[] data = m_udpClientReceiver.Receive(ref m_receivingEndPoint);

m_recomingEndPoint が正しく設定されている場所 これをテストしたところ、正常に動作します。

于 2013-03-04T15:53:13.173 に答える