无法接收UDP数据报,已发送到IPv6“所有节点”多播组

时间:2018-10-22 14:14:11

标签: c# .net ipv6 multicast udpclient

我尝试在Windows 10中将UDP数据报发送到启用IPv6的接口(IPv6地址FF02::1IPv6 Multicast Address Space Registry)的多播组“所有节点”,但是无法在本地接收。

示例C#代码:

var a1 = new IPEndPoint(IPAddress.Parse("FF02::1%25"), 3366);
var a2 = new IPEndPoint(IPAddress.Parse("::1"), 3366);
var a3 = new IPEndPoint(IPAddress.Parse("fe80::xxxx:xxxx:xxxx:xxxx%25"), 3366);

var u1 = new UdpClient(new IPEndPoint(IPAddress.IPv6Any, 3366));
var u2 = new UdpClient(new IPEndPoint(IPAddress.IPv6Any, 4466));

void rcv(IAsyncResult ar)
{
   IPEndPoint iipe = null;
   var b = u1.EndReceive(ar, ref iipe);

   u1.BeginReceive(rcv, null);

   Console.WriteLine($"{Encoding.UTF8.GetString(b)} from {iipe}");
}

u1.BeginReceive(rcv, null);

u2.Send(Encoding.UTF8.GetBytes("Test1"), 5, a1);
u2.Send(Encoding.UTF8.GetBytes("Test2"), 5, a2);
u2.Send(Encoding.UTF8.GetBytes("Test3"), 5, a3);

其中fe80::xxxx:xxxx:xxxx:xxxx%25是接口链接本地作用域地址,%25接口索引。

我希望发送到地址a1,a2,a3的所有3个数据包都将被接收。

a1-发送到也包括本地主机的多播组

a2-完全发送到本地主机

a3-发送到接口地址

但是,此代码显示如下:

Test2 from [::1]:4466
Test3 from [fe80::xxxx:xxxx:xxxx:xxxx%25]:4466

已成功接收到发送到地址a2和a3(本地主机和接口地址)的数据报。 数据报,发送给所有丢失的节点。

我在做什么错了?

0 个答案:

没有答案
相关问题