我在具有多个网络接口的主机之间使用多播 UDP。 我使用的是 ost: : asio,我对接收方必须进行的两个操作感到困惑: make: bind,then join-group。
为什么需要在绑定期间指定接口的本地地址,而对所加入的每个多播组都需要这样做?
姐妹问题涉及到多播端口: 因为在发送过程中,你发送到一个多播地址 & 端口,为什么在订阅一个多播组时,你只指定地址,而不是端口——在混乱的绑定调用中指定的端口。
Note: the "join-group" is a wrapper over setsockopt(IP_ADD_MEMBERSHIP)
, which as documented, may be called multiple times on the same socket to subscribe to different groups (over different networks?). It would therefore make perfect sense to ditch the bind call and specify the port every time I subscribe to a group.
在我看来,总是绑定到“0.0.0.0”并在加入组时指定接口地址,工作得非常好。很困惑。