我不确定如何最好地解决我的问题。我有一个运行在远程机器上的服务,可以接收和处理UDP数据包。我希望服务能够重新发送这些数据包给任何想要它们的人(可能没有人,通常是一个机器,但也可能是多个)。
我认为UDP组播是理想的选择-服务可以发送到组播组,注册了多少接收者并不重要,甚至没有注册接收者也可以。
然而,我希望能够通过互联网访问它,根据我所了解的情况,使用UDP组播几乎是不可能的。是否有其他方法可以实现这一点?
如果相关的话,我的客户端和服务都是用C#编写的。
通常情况下不可能实现,因为多播数据包无法被路由。
有一些技术可以解决这个问题(如DVMRP、MOSPF等),但它们都要求你能够配置服务器和客户端之间的所有路由器(或创建隧道)。有一些带有多播支持的骨干网(如Abilene、Mbone),但这些对于大学等机构最为重要。普通消费者的互联网没有多播功能。
很遗憾,您需要使用点对点通信。但是请放心,互联网、电台和电视都采用点对点传输相同的数据,造成了相当大的带宽浪费。
首选方法是使用叠加式组播,即在对等方之间使用TCP链接,并在其上实现组播语义。
许多IPv4路由器不支持组播或已禁用,IPv6规定必须支持组播,并已删除广播语义。