0

我试图让我的 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
}
4

2 回答 2

0

不幸的是,如果没有管理权限,这似乎是不可能的。如果有人有任何其他想法,我很想听听他们的意见。

于 2009-12-21T17:30:43.473 回答
0
client.ExclusiveAddressUse = false;
于 2013-05-26T00:14:56.727 回答