如何在同一网络上使用多播发送消息?
我正在使用C ++,库增强。我玩过发送者和接收者的例子。
但我也有几个问题,我是网络和C ++的新手。 组播端口设置为30001,有什么好的理由吗?
示例表明我使用了发件人:
IPv4 239.255.0.1
IPV6 ff31 :: 8000:1234
对于接收者:
IPv4 0.0.0.0 239.255.0.1
IPv6 0 :: 0 ff31 :: 8000:1234
为何选择这些特定地址?
同样在接收器示例中,有一个专用于加入多播地址的部分,有没有办法检查是否有新连接出现在这个地址上?要查看哪个新实例加入或离开连接,这可能吗?
但我的主要问题是,如果我要从运行该示例的计算机上发送Hello World这样的消息,它是否会显示在同一网络上的另一台计算机上?
答案 0 :(得分:1)
为何选择这些特定地址?
这些是IP协议(IPv4 / IPv6)指定的用于多播的地址。部分地址是组规范(我认为IPv4为255.0.1,IPv6为1234)。流量会转发到本地计算机上的特定端口,但我不知道/无法找到详细信息。
同样在接收器示例中,有一个专用于加入多播地址的部分,有没有办法检查是否有新连接出现在这个地址上?要查看哪个新实例加入或离开连接,这可能吗?
不,没有这样的内置功能。应该将多播发送到至少所有感兴趣的机器。加入是网络/本地操作系统的一个信号,您感兴趣的机器,它应该拾取和转发相关的数据包。在所有情况下都不需要转发这样的信号(即,如果路由器已经有分组)。
但是,您可以在加入后在频道上广播您的状态,但这是您要在多播上实施的协议的一部分。
但我的主要问题是,如果我要从运行该示例的计算机上发送Hello World这样的消息,是否会出现在同一网络上的另一台计算机上?
取决于。如果您连接到同一层1(直接以太网或直接WiFi)结构,那么可能是。如果您必须跳过路由器/接入点,他们可能会有阻止流量的防火墙规则。