我不确定如何最好地解决我的问题。我有一个在远程机器上运行的服务,它接收和处理 UDP 数据包。我希望该服务能够将这些数据包重新发送给碰巧需要它们的任何人(可能没有人,通常是一台机器,但可能更多)
我认为 UDP 多播将是理想的 - 服务可以发送到多播组,无论有多少接收者已注册,或者即使没有。
但是,我希望能够通过互联网访问它,并且据我所知,使用 UDP 多播几乎不可能。我可以使用另一种方法来实现这一目标吗?
如果相关,我的客户端和服务都是用 C# 编写的。
通常这是不可能的,因为多播数据包没有被路由。
有一些技术可以解决这个问题(DVMRP、MOSPF 等),但它们都要求您可以配置服务器和客户端之间的所有路由器(或创建隧道)。有支持多播的骨干网络(Abilene、Mbone),但这些是大学等最感兴趣的。普通消费者的互联网没有多播。
不幸的是,您需要点对点通信。但是你的公司很好,互联网、广播和电视都是点对点的,多次传输相同的数据。相当浪费带宽。
首选方法是使用覆盖多播,即在对等点之间使用 TCP 链接并在此之上实现多播语义。
许多 IPv4 路由器不支持或禁用多播,IPv6 被强制支持多播,广播语义已被删除。