C# UDP 服务器多个实例 ipv6 同一个端口

C# UDP server multiple instances ipv6 same port

我需要多个 UDP 服务器,使用 .net 中的 UDPClient class。 对于 IPv4,我可以通过执行以下操作来实现:

var udpServer1 = new UdpClient(new IPEndPoint(IPAddress.Parse("127.0.0.1"), 53));
var udpServer2 = new UdpClient(new IPEndPoint(IPAddress.Parse("127.0.0.2"), 53));
var udpServer3 = new UdpClient(new IPEndPoint(IPAddress.Parse("127.0.0.3"), 53));

它有效,我可以监听端口 53 上的所有 3 个地址。 我需要为 IPv6 做同样的事情。但似乎我只能监听 1 个环回地址“::1”。

如果我尝试使用“::2”,我会收到 "The requested address is not valid in its context" 错误。任何帮助将不胜感激。

谢谢!

所以,经过更多的调查,我发现 IPv6 确实只有 1 个环回地址:“::1”。

但是!有一个叫做 "link-local" 地址的小东西,它以 "fe80:..." 开头,每个网络适配器都有一个唯一地址,代表该特定网络适配器的环回地址。

因此,我可以在 ::1 端口 53 上打开一个服务器,或者我可以打开多个服务器,一个用于我拥有的每个网络适配器。