Проблемы ASP.NET Multicast UdpClient - PullRequest
0 голосов
/ 21 декабря 2009

Я пытаюсь, чтобы мое приложение 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
}

Ответы [ 2 ]

0 голосов
/ 26 мая 2013
client.ExclusiveAddressUse = false;
0 голосов
/ 21 декабря 2009

К сожалению, кажется, что это невозможно без прав администратора. Если у кого-то есть другие идеи, я бы хотел их услышать.

...