Не удается получить дейтаграмму UDP, отправленную в группу многоадресной рассылки IPv6 «Все узлы». - PullRequest
0 голосов
/ 22 октября 2018

Я пытаюсь отправить дейтаграмму UDP в группу многоадресной рассылки "Все узлы" интерфейса с поддержкой IPv6 (адрес IPv6 FF02::1, Реестр адресного пространства многоадресной рассылки IPv6 ) в Windows 10, но не могу получить его обратно локально.

Пример 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 индекс интерфейса.

Я ожидаю все 3будут получены пакеты, отправленные на адреса a1, a2, a3.

a1 - отправить в многоадресную группу, которая также включает localhost

a2 - отправить на localhost точно

a3 - отправить на интерфейсный адрес

Но этот код печатает следующее:

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

дейтаграммы, отправленные на адреса a2 и a3 (локальный хост и адрес интерфейса), успешно завершеныполучено.Датаграмма, отправленная всем пропущенным узлам.

Что я делаю не так?

...