Ich habe versucht das Beispiel , aber es funktioniert nicht. Anscheinend wird die IPPROTO_IP / IP_MULTICAST_IF-Option nicht festgelegt. Ich kann boost :: asio :: ip :: multicast :: outbound_interface nur für IPPROTO_IP / IP_MULTICAST_IF finden, habe es versucht, aber ist fehlgeschlagen. Gibt es eine Möglichkeit boost :: asio :: ip :: Multicast zu erstellen, ohne c-level setsockopt aufzurufen?
%Vor%Ich denke, es gibt einen Fehler in Boost-Beispielcode für udp Multicast .
Im Beispielcode binden sie Socket an lokale Schnittstelle, aber für udp Multicast müssen Sie an die IP-Adresse und den Port der udp Multicast-Gruppe binden.
%Vor%sollte sein:
%Vor%Siehe Multicast-Howto :
... Damit ein Prozess Multicast-Datagramme empfangen kann, muss er den Kernel fragen um der Gruppe beizutreten und den Port zu binden, an den diese Datagramme gesendet wurden zu. Die UDP-Schicht verwendet sowohl die Zieladresse als auch den Anschluss an Demultiplexen Sie die Pakete und entscheiden Sie, welche Socket (s) sie an ... ausliefern.
... es ist notwendig, dem Kernel mitzuteilen, welche Multicast-Gruppen wir sind Interesse an. Das heißt, wir müssen den Kernel bitten, sich ihnen anzuschließen Multicast-Gruppen ...
Überprüfen Sie, ob Sie der Gruppe mit der korrekten Schnittstelle mit netstat -g | grep <multicast_group_ip>
Dies ist der falsche Boost-Beispielcode:
%Vor%Tags und Links c++ boost-asio