2016-03-30 22 views
0

Reicht der folgende Code aus, um die Loopback-Schnittstelle daran zu hindern, meinen eigenen ausgehenden Multicast-Datenverkehr zu empfangen? Mein udp-Code scheint immer noch Pakete zu empfangen, selbst wenn ich das RJ-45-Ethernet-Kabel vom NIC ziehe.Deaktivierung der Fähigkeit, meine eigenen ausgehenden Multicast-Datagramme zu empfangen

char loopch = 0; 

if(setsockopt(sd, IPPROTO_IP, IP_MULTICAST_LOOP, (char *)&loopch, sizeof(loopch)) < 0){ 
    perror("Setting IP_MULTICAST_LOOP error"); 
    close(sd); 
    return -1;} 
+0

Ihre bearbeitete Frage macht keinen Sinn. Warum sollte das Ziehen des Kabels den Multicast-Loopback der eigenen Sends verhindern? Multicast Loopback muss nicht durch das Kabel gehen. – EJP

+0

Wenn ich deaktiviere, dass Multicast zu meiner lo-Schnittstelle mit dem obigen Code zurückgeschleift wird, sollte meine Anwendung keinen Verkehr mit dem unplugged Kabel empfangen. Logische Aussage? Im Wesentlichen sage ich, dass der obige Code den Multicast-Verkehr nicht davon abhält, zu meiner lo-Schnittstelle zurückgeschleift zu werden. –

Antwort

0

Nein. Es ist eine andere Sache. Es aktiviert oder verhindert, dass Sie Ihre eigenen ausgehenden Multicasts erhalten. Siehe man page.

Ihr Code ist jedoch falsch. Das Argument sollte eine Ganzzahl sein.

Mir ist nichts bekannt, das steuert, ob Sie Multicasts auf der Loopback-Schnittstelle empfangen.

+0

Entschuldigung für die nicht beschreibende Frage, es wurde bearbeitet. –

+0

Wo kann ich finden, dass das übergebene Argument eine ganze Zahl sein sollte? Die man-Seite sagt int, aber Code überall im Internet verwendet char. –

+0

Sie können es in, err, die * man * Seite finden. Ich kann Ihnen nicht für den Zustand des Internets Rechenschaft ablegen. – EJP