Dies ist in Java, aber ich kann immer zu C über JNI zurückkehren, wenn nötig.
Ich habe ein System mit zwei NICs, die jeweils mit einem eigenen Subnetz verbunden sind. Ich möchte Multicast (insbesondere SDP) verwenden, um andere Hosts in beiden Netzwerken zu entdecken.
Ein Netzwerk ist einfach: Erstellen Sie einen MulticastSocket auf dem angegebenen Port, treten Sie der Gruppe bei und ich erhalte Pakete. Einfachheit.
Zwei Netzwerke: bisher unmöglich. Ich habe versucht:
1) zwei Sockets zu erstellen, die an denselben Port gebunden sind, und mit setInterface () oder setNetworkInterface () "verbinden", um mit dem richtigen Interface zu "verbinden". Kein Glück, auch nach verschiedenen Permutationen von setReuseAddress ().
2) Erstellen Sie einen einzelnen Socket und versuchen Sie dann, zweimal beizutreten, mit zwei Aufrufen von joinGroup (SocketAddress mcastaddr, NetworkInterface netIf). Der zweite Beitreten-Aufruf schlägt fehl.
Lösungen außerhalb von Java wären großartig. Insbesondere, wenn ich Multicast-Routen einrichten könnte, die die beiden Schnittstellen effektiv 'kombinieren' (dann könnte ich jedes Paket untersuchen, um zu bestimmen, welches Netzwerk) das wäre in Ordnung. Wie ich bereits erwähnte, ist jede Menge nativer Code in dieser Umgebung verwendbar (Linux, mit der Apache "luni" Java-Infrastruktur).
Danke!