Was bedeutet es, einen Multicast-Socket (UDP) zu binden?

Ich verwende Multicast-UDP zwischen Hosts mit mehreren Netzwerkschnittstellen. Ich benutze boost :: asio und bin verwirrt über die 2 Operationen, die Empfänger ausführen müssen: Binden und dann der Gruppe beitreten.

Warum müssen Sie beim Binden die lokale Adresse einer Schnittstelle angeben, wenn Sie dies bei jeder Multicast-Gruppe tun, der Sie beitreten?

Die Schwesterfrage betrifft den Multicast-Port: Da Sie beim Senden an eine Multicast-Adresse und einen Multicast-Port senden, geben Sie beim Abonnieren einer Multicast-Gruppe nur die Adresse und nicht den Port an - den Port, der im verwirrenden Aufruf an angegeben wird binden.

Hinweis: Die "Join-Gruppe" ist ein Wrapper übersetsockopt(IP_ADD_MEMBERSHIP), die, wie dokumentiert, mehrere Male am selben Socket aufgerufen werden können, um verschiedene Gruppen (über verschiedene Netzwerke?) zu abonnieren. Es ist daher sinnvoll, den Bind-Aufruf zu beenden und den Port jedes Mal anzugeben, wenn ich eine Gruppe abonniere.

Soweit ich weiß, funktioniert es sehr gut, immer an "0.0.0.0" zu binden und die Schnittstellenadresse anzugeben, wenn Sie der Gruppe beitreten. Verwirrt.

Antworten auf die Frage(4)

Ihre Antwort auf die Frage