监听特定网络适配器上的所有UPD请求



我在C#中使用套接字来侦听UPD请求

var bindIp = IpAddress.Parse("0.0.0.");
var ipLocalEndPoint = new IPEndPoint(bindIp, PORT_TO_LISTEN_TO);
socket = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
socket.Bind(ipLocalEndPoint);

问题是,当我使用"0.0.0.0"的其他IP时,我不会得到广播消息。

但我想将Soket限制为一个特定的网络适配器,而不是Ip。这可能吗?

编辑:

或者至少,是否可以从适配器中检测到UPD请求的来源?

请注意,IP与网络适配器不同。一个网络适配器可以有多个IP。反之亦然,例如树干

当您bind()时,网络堆栈会根据接口的现有IP地址决定使用哪个网络接口。如果使用0.0.0.0,则对所有接口进行绑定(如果使用connect(),则根据网络堆栈路由表进行绑定)

无论如何:如果你想获得广播消息,你必须绑定到0.0.0.0,否则你只会获得与特定IP相关的流量。

相关内容

  • 没有找到相关文章

最新更新