Ich versuche, UDP mit Datagramm in JAVA zu senden und meine Maschine haben mehrere NIC mit verschiedenen IPs.JAVA set/wählen Sie eine bestimmte NIC von mehreren (UDP)
Wie kann ich einstellen, von welcher NIC ich mein Paket gesendet werden soll ?? (Vorausgesetzt, ich habe mehr als eine an der Maschine ??)
EDIT I
Ich bin nicht Sockel verwenden, ich bin mit Datagram und versuchte, wie dies zu tun Bindung:
/*binding */
DatagramSocket ds = new DatagramSocket(1111);
NetworkInterface nif = NetworkInterface.getByIndex(nicIndex);
Enumeration<InetAddress> nifAddresses = nif.getInetAddresses();
ds.bind(new InetSocketAddress(nifAddresses.nextElement(), 0));
Aber wenn Ich mache das, ich kann mich nicht mehr verbinden (oder bekomme das Paket nicht ..). Das Problem ist, dass ich 2 NIC haben, aber man ist für die interne Netzwerk und das andere ist für Internet .. Ich brauche alle meine Server-Daten nur auf die internen Audio zu gehen ..
EDIT II
Zur Klärung. Diese App ist ein Server - und der Server hat 2 NICS. ein LAN und eins für WAN.
Eine alternative Möglichkeit für mich, würde eine ROUTING irgendwie zu spezifizieren - was bedeutet, jedes Paket genau zu sagen, welche NIC zu verwenden, um ..
Wie ein solches Routing in JAVA tun ??
Ich benutze DatagramSocket Klasse, lesen Sie bearbeiten I – user1722362
Verdammt - Entschuldigung für die fehlende. Ich bin ein bisschen neugierig, warum Sie das im Code lösen wollen, anstatt sich auf IP-Routing zu verlassen? Wenn Sie Ihr UDP-Paket an eine bestimmte IP-Adresse senden und dieser Server sich im internen Netzwerk befindet, sollte der IP-Stapel das Paket automatisch über die entsprechende NIC-Schnittstelle automatisch weiterleiten. Oder vermisse ich noch mehr? –
Sind Sie auch sicher, dass das erste Element in der Aufzählung immer Ihre bevorzugte NIC ist - was, wenn es die Loopback-Schnittstelle oder eine exotische 6to4-Tunnelschnittstelle ist? –