Sto cercando di inviare UDP con datagramma in JAVA e la mia macchina ha diversi NIC con diversi IP.JAVA imposta/seleziona NIC specifica da più (UDP)
Come posso impostare quale NIC voglio che il mio pacchetto venga inviato da ?? (Supponendo che ho più di uno sulla macchina ??)
EDIT ho
non sto usando Socket, sto usando DatagramSocket e cercato di fare vincolante in questo modo:
/*binding */
DatagramSocket ds = new DatagramSocket(1111);
NetworkInterface nif = NetworkInterface.getByIndex(nicIndex);
Enumeration<InetAddress> nifAddresses = nif.getInetAddresses();
ds.bind(new InetSocketAddress(nifAddresses.nextElement(), 0));
Ma quando Lo faccio, non riesco più a connettermi (o non riesco a ottenere il pacchetto ..). Il problema è che ho 2 NIC, ma uno è per la rete interna e l'altra è per Internet .. ho bisogno di tutti i miei dati del server di andare solo su quello interno ..
EDIT II
Per chiarimenti. Questa App è un server e il SERVER ha 2 NICS. una LAN e una per WAN.
Un modo alternativo per me sarebbe di specificare un ROUTING in qualche modo - il che significa dire a ogni pacchetto esattamente quale NIC da usare ..
come fare un esempio di routing in JAVA ??
sto usando la classe DatagramSocket, leggi modifica I – user1722362
Verdammt - scuse per averlo mancato. Sono un po 'curioso di sapere perché vuoi risolvere questo in codice piuttosto che fare affidamento sul routing IP? Se si invia il pacchetto UDP a un determinato IP e tale server si trova sulla rete interna, lo stack IP deve instradare correttamente quel pacchetto tramite l'interfaccia NIC rilevante automaticamente. O mi manchi ancora di più? –
Inoltre, sei sicuro che il primo elemento dell'enumerazione sia sempre la tua NIC preferita? E se fosse l'interfaccia di loopback o qualche interfaccia di tunnel 6to4 esotica? –