Многоадресная рассылка C# UDP [закрыто]C#

Место общения программистов C#
Ответить
Anonymous
 Многоадресная рассылка C# UDP [закрыто]

Сообщение Anonymous »

Вопрос:
Я не могу использовать «UdpClient», который привязывает какой-либо локальный IPEndPoint для получения сообщения.
Как будто у меня есть четыре IP-адреса, но только один можно использовать для привязки для получения сообщения.
Почему другие не могут получать сообщения?
Описание:
Я получаю много IP-адресов, которые могут быть использованы

Код: Выделить всё

                var validIps = NetworkInterface
.GetAllNetworkInterfaces()
.Where(nic => nic.OperationalStatus == OperationalStatus.Up)
.SelectMany(nic => nic.GetIPProperties().UnicastAddresses)
.Select(ua => ua.Address)
.Where(addr => addr.AddressFamily == AddressFamily.InterNetwork);

foreach (var item in validIps)
{
Console.WriteLine(item);
}
//192.168.3.244 WLAN
//192.168.153.1 VMware Network Adapter VMnet1
//192.168.25.1 VMware Network Adapter VMnet8
//127.0.0.1
но его можно было использовать только для получения.
Код

Код: Выделить всё

  namespace UDP
{
internal class Program
{
static void Main(string[] args)
{
//绑定本地IP端点
//IPAddress ip_b = IPAddress.Parse("192.168.3.244");
//IPAddress ip_b = IPAddress.Parse("192.168.153.1");
IPAddress ip_b = IPAddress.Parse("192.168.25.1");
//IPAddress ip_b = IPAddress.Parse("127.0.0.1");
IPEndPoint iPEndPoint_B = new IPEndPoint(ip_b, 321);
UdpClient udpClientB = new UdpClient(iPEndPoint_B);

Byte[] sendBytes_multi = Encoding.ASCII.GetBytes("Gruop 224.0.1.0 say Hi");

IPAddress multiCastIP = IPAddress.Parse("224.0.2.0");

IPEndPoint multiCastIPEndPoint = new IPEndPoint(multiCastIP, 321);

udpClientB.JoinMulticastGroup(multiCastIP, ip_b);

Task.Run(() =>
{
var bytes = udpClientB.Receive(ref multiCastIPEndPoint);
string msg = Encoding.UTF8.GetString(bytes);
Console.WriteLine("B:" + msg);
Console.WriteLine(udpClientB.Client.LocalEndPoint);
});

UdpClient sendMultiUdp = new UdpClient();

sendMultiUdp.Connect(multiCastIPEndPoint);

sendMultiUdp.MulticastLoopback = true;

sendMultiUdp.Ttl = 5;

sendMultiUdp.Send(sendBytes_multi);

Console.ReadKey();
//result:
//B:Gruop 224.0.1.0 say Hi
//192.168.25.1:321
}
}
}

Я привязываю определенный IP-адрес к получателю UdpClient, чтобы узнать, может ли многоадресная рассылка UDP отправлять сообщение на любой IP-адрес, который входит в группу многоадресной рассылки.
Если я не привязываю IP к получателю UdpClinet. Он будет использовать 0.0.0.0:321(LocalEndPoint).

Подробнее здесь: https://stackoverflow.com/questions/798 ... -multicast
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»