Я записал последовательность с помощью Wireshark на одном конкретном сетевом адаптере.
И там я увидел исходящую многоадресную рассылку с одного из моих сетевых адаптеров на 239.255.255.253. За этим следует ответ от «устройства» с определенным IP-адресом.
Что у меня уже есть:
public List<IPAddress> GetLocalNetworkInterfaces()
{
localNetworkInterfaces = new List<IPAddress>();
foreach (NetworkInterface nic in NetworkInterface.GetAllNetworkInterfaces())
{
foreach (var unicastIp in nic.GetIPProperties().UnicastAddresses)
{
if (nic.OperationalStatus == OperationalStatus.Up && unicastIp.Address.AddressFamily == AddressFamily.InterNetwork
&& !IPAddress.IsLoopback(unicastIp.Address))
{
localNetworkInterfaces.Add(unicastIp.Address);
}
}
}
return localNetworkInterfaces;
}
public void SendMultiCast(List<IPAddress> iPAddresses, int port)
{
responseOfAvailableVehicles = new List<string>();
string availableVehicle;
if (iPAddresses.Count != 0)
{
try
{
foreach (IPAddress iPAddress in iPAddresses)
{
IPAddress address = iPAddress;
byte[] response;
long longFromIP = 4026531837; //Is 239.255.255.253
port = 427;
UdpClient udpClient = new UdpClient(new IPEndPoint(address, 0));
udpClient.Client.ReceiveTimeout = 3000;
// Here start Multicast
// And receive response
var endpoint = new IPEndPoint(longFromIP, port);
udpClient.EnableBroadcast = true;
udpClient.Send(DiscoveryPayload, DiscoveryPayload.Length, endpoint);
response = udpClient.Receive(ref endpoint);
}
}
catch (Exception ex)
{
}
}
}
Честно говоря, я не уверен, правильный ли подход вообще или я полностью ошибаюсь.
Как я могу также отправить многоадресную рассылку с C# и получить ответ?
Предположим, что маршруты и серверы пересылают широковещательное сообщение. Как продолжить?
Теперь я расширил все с помощью udpClient.Send. Но именно здесь я получаю исключение «Операция сокета связана с недоступной сетью».
var endpoint = new IPEndPoint(IPAddress.Broadcast, port);@AlexF Но я хочу отправлять его не на широковещательный адрес, а только на 239.255.255.253. Могу ли я использовать широковещательный адрес?
Это не многоадресная рассылка, вы отправляете ее на один конкретный IP-адрес.





Маршруты и серверы обычно не пересылают сообщения BroadCast, если вы не измените настройку устройства. Multicast - это тип сообщения UDP BroadCast. Возможно, вам потребуется заменить устройство на простой концентратор, который не блокирует трафик.