Я пытаюсь отправить дейтаграмму 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 (локальный хост и адрес интерфейса), успешно завершеныполучено.Датаграмма, отправленная всем пропущенным узлам.
Что я делаю не так?