有没有办法允许多个程序在Windows上订阅同一个多播组?

时间:2012-05-16 15:13:49

标签: c# windows multicast

我有两个应用程序需要订阅相同的多播组/端口组合。目前,我能够处理这个问题的唯一方法是构建一个订阅多播组的代理应用程序,并通过单独的TCP连接将收到的流量转发给每个应用程序。我想摆脱代理应用程序并让每个应用程序订阅多播组本身,但我得到一个套接字异常“通常只允许使用每个套接字地址”。

这有什么办法吗?为什么每台计算机只允许一个给定组播组的订阅?

1 个答案:

答案 0 :(得分:4)

不完全确定是否允许,但请查看可能的解决方案:

Sending and receiving UDP packets between two programs on the same computer

最终,您不会使用指定的端点实例化UdpClient。您将实例化一个新的UdpClient,设置SocketOptions以重用端点,然后绑定:

IPEndPoint localpt = new IPEndPoint(IPAddress.Any, 6000);
UdpClient udpListener = new UdpClient();
udpListener.Client.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.ReuseAddress, true);
udpListener.Client.Bind(localpt);

以上答案适用于在同一端口上发送/接收,因此不确定它是否适用于在同一端口上的2个独立应用程序中接收。试一试,让我们知道。