boost :: asio :: ip :: multicast :: join_group funktioniert nicht

8

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%     
poordeveloper 30.12.2011, 02:40
quelle

2 Antworten

5

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>

beigetreten sind

Dies ist der falsche Boost-Beispielcode:

%Vor%     
stefanB 11.01.2013 06:42
quelle
4

Richtige Antwort:

%Vor%     
poordeveloper 30.12.2011 22:53
quelle

Tags und Links