9

我刚刚开始阅读有关使用 boost::asio 的多播传输的信息,我对以下内容感到有些困惑:

为什么我们在下面的 boost::asio 示例中需要一个“监听地址”?那有什么意义呢?为什么要选择与 localhost 不同的东西?

http://www.boost.org/doc/libs/1_37_0/doc/html/boost_asio/example/multicast/receiver.cpp

4

2 回答 2

13

如果您有多个网络接口卡(每个 NIC 绑定到不同的 IP 地址),则需要指定侦听 IP 地址。

于 2012-11-06T12:06:12.253 回答
12

在你的公寓...

当您在家中使用笔记本电脑工作时,您可能不在乎。主要目标通常是将任何东西连接到机器中它想要的所有东西,在这种情况下localhost就可以了。

...但是服务器确实在乎!

另一方面,高端服务器通常有多个网卡。更好的是,高性能网卡通常具有多个物理插头,并且它们都可能在不同的 DHCP 租约下处于活动状态。

服务器通常也是公共和专用网络的一部分,它们可能包括也可能不包括具有自己的子网和可访问性参数的VPN 。系统管理员经常考虑这些地址,他们非常关心每个服务可用的特定地址。是私人服务吗?是否存在不应发出这些请求的不受信任的子网?

这些问题涉及安全和系统组织问题。它并非特定于多播:由于上述所有原因,UNIXbind系统调用也采用特定地址。

于 2012-11-06T12:09:53.510 回答