Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/328.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 互联网上的UDP多播?_C#_Udp_Multicast - Fatal编程技术网

C# 互联网上的UDP多播?

C# 互联网上的UDP多播?,c#,udp,multicast,C#,Udp,Multicast,我不知道如何最好地解决我的问题。我有一个在远程机器上运行的服务,可以接收和处理UDP数据包。我希望服务能够将这些数据包重新发送给碰巧需要它们的任何人(可能不是一个人,通常是一台机器,但可能更多) 我认为UDP多播是理想的——该服务可以发送到多播组,而不管注册了多少个接收者,或者即使没有 然而,我希望能够通过互联网访问这一点,据我所知,UDP多播几乎是不可能的。有没有其他方法可以实现这一点 如果相关,我的客户端和服务都是用C#编写的。一般来说,这是不可能的,因为多播数据包没有路由 有一些技术可以解

我不知道如何最好地解决我的问题。我有一个在远程机器上运行的服务,可以接收和处理UDP数据包。我希望服务能够将这些数据包重新发送给碰巧需要它们的任何人(可能不是一个人,通常是一台机器,但可能更多)

我认为UDP多播是理想的——该服务可以发送到多播组,而不管注册了多少个接收者,或者即使没有

然而,我希望能够通过互联网访问这一点,据我所知,UDP多播几乎是不可能的。有没有其他方法可以实现这一点


如果相关,我的客户端和服务都是用C#编写的。

一般来说,这是不可能的,因为多播数据包没有路由

有一些技术可以解决这个问题(DVMRP、MOSPF和其他),但它们都要求您可以配置服务器和客户端之间的所有路由器(或创建隧道)。有支持多播的主干网(Abilene、Mbone),但这些都是大学等最感兴趣的。普通消费者的互联网没有多播


不幸的是,你需要点对点的交流。但是你在一个很好的公司,互联网,广播和电视都做点对点,多次传输相同的数据。相当浪费带宽。

首选方法是使用覆盖多播,即在对等点之间使用TCP链路,并在其上实现多播语义


许多IPv4路由器不支持多播或已禁用多播,IPv6被强制支持多播,广播语义已被删除。

Mbone在很久以前关闭,IPv6强制多播,一些ISP为DVB提供IPv4多播,如德国和英国。许多服务使用UDP或PGM进行本地多播。如果您需要连接其他站点,例如internet上的远程站点,则可以使用TCP隧道,该隧道侦听本地UDP并将流量路由到重新广播的另一端。这对于连接两个办公室等非常有用。。如果您需要有关UDP的帮助,请参阅以下教程: