gpt4 book ai didi

c# - 获取我们收到 UDP 多播请求的 IP 地址

转载 作者:太空宇宙 更新时间:2023-11-03 16:17:48 25 4
gpt4 key购买 nike

我正在使用 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);

我有几个网卡(两个 LAN,一个 wifi),绑定(bind)在不同的子网上。我需要知道在哪个网卡(实际上是哪个 ip)上收到了请求。

我怎样才能做到这一点?

谢谢!

最佳答案

作为替代方案,您是否考虑过不加入多播组?您可以使用标准 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_receivingEndPoint 现在在哪里正确设置?我刚刚对此进行了测试,它运行良好。

关于c# - 获取我们收到 UDP 多播请求的 IP 地址,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15202761/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com