c# - 有没有办法让多个程序在windows上订阅同一个多播组?

标签 c# windows multicast

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

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

最佳答案

不完全确定它是否被允许,但在这里寻找可能的解决方案:

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

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

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

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

关于c# - 有没有办法让多个程序在windows上订阅同一个多播组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10621506/

相关文章:

c# - 比较 2 个不同数据库中的 2 个表

c# - WebBrowser 控件忽略来自 POST 请求的 302 重定向?

c# - 隐藏继承类的构造函数

windows - 访问文件夹时运行的批处理文件

java - 端口转发多播 IP

c# - 参数化 DllImport 以在 C# 应用程序中使用

c++ - 在 Windows 上使用 cmake 编译 gstreamer 应用程序

Windows Server 2008 上的 PHP APC (PHP 5.4.3 - x64)

c++ - Linux 多播后续套接字窃取数据

erlang - 如何在 Erlang 中发送多播消息并重用端口?