Я пытаюсь, чтобы мое приложение ASP.NET прослушивало многоадресные UDP-трансляции. К сожалению, я, похоже, застрял в привязке из-за проблем с разрешениями / API.
Проблема в том, что мне нужно разрешить нескольким экземплярам приложения прослушивать один и тот же IP / порт, поскольку произойдет многократное ускорение приложения ASP.NET. Для этого SocketOptionName.ReuseAddress должно быть установлено в true. Проблема в том, что для этого требуются права администратора, которых не должно быть в моем приложении ASP.NET.
Вот код:
public static void Listen(int port)
{
var groupAddress = IPAddress.Parse("224.10.10.10");
var endPoint = new IPEndPoint(groupAddress, port);
var client = new UdpClient();
client.Client.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.ReuseAddress, true);
client.Client.Bind(new IPEndpoint(IPAddress.Any, port)); // Error thrown here
client.JoinMulticastGroup(groupAddress);
var udpState = new UdpState() { Client = client, EndPoint = endPoint };
client.BeginReceive(OnMessageReceived, udpState); // OnMessageReceived code omitted
}