当一台主机join组播组时,是否需要将其IP地址修改为组播组的IP地址?

我正在谈论IPv4。 如果没有,主机是否使用2个IP地址,一个用于多播通信,一个用于“常规”通信?

不可以。而且,IP多播地址有一个特殊的范围(例如239.xxx),作为主机地址是非法的。 你只需使用IP_ADD_MEMBERSHIP来完成setsockopt ,就完成了。 而且,如果你真的考虑这个问题,改变IP意味着所有正常的stream量都会停止。

你正在做的是说, 除了定期的接口地址 ,你还希望接口(通过套接字)监听和处理给定多播地址的数据包。 这比这稍微复杂一些,但是足够接近。

IIRC,如果一个系统[host0]有两个接口(例如NIC卡),比如说eth0和eth1,eth0与给定多播有半直接连接,并且有一个host1通过eth1连接到host0,host1 只能通过host0获得组播,host0将不得不订阅组播,而不是为自己,而是代表host1,并在eth1上转发数据包。