Próbuję wysłać UDP z datagramem w języku JAVA, a moja maszyna ma kilka kart sieciowych z różnymi adresami IP.JAVA ustaw/wybierz określoną kartę sieciową z wielu (UDP)
Jak ustawić, której karty sieciowej chcę, aby mój pakiet był wysyłany? (Zakładając, że mam więcej niż jeden na maszynie ??)
EDIT I
nie używam Socket używam DatagramSocket i starał się nie wiążącym tak:
/*binding */
DatagramSocket ds = new DatagramSocket(1111);
NetworkInterface nif = NetworkInterface.getByIndex(nicIndex);
Enumeration<InetAddress> nifAddresses = nif.getInetAddresses();
ds.bind(new InetSocketAddress(nifAddresses.nextElement(), 0));
ale kiedy Robię tak, nie mogę się już połączyć (lub nie mogę pobrać pakietu ...). Problem polega na tym, że mam 2 NIC, ale jedno jest dla sieci wewnętrznej, a drugi jest na Internecie .. muszę wszystkie moje dane serwera iść tylko na wewnętrznym jednego ..
EDIT II
Do wyjaśnienia. Ta aplikacja jest serwerem - a SERWER ma 2 NICS. jedna sieć LAN i jedna sieć WAN.
Alternatywnym sposobem dla mnie byłoby określić trasowanie jakoś - czyli każdy pakiet powiedzieć dokładnie, które używać NIC ..
Jak zrobić taki routing w JAVA ??
Używam klasy DatagramSocket, przeczytaj edytuj I – user1722362
Verdammt - przepraszam za brakujące. Jestem trochę ciekaw, dlaczego chcesz rozwiązać ten problem w kodzie zamiast polegać na routingu IP? Jeśli wyślesz pakiet UDP do danego adresu IP, a ten serwer znajduje się w sieci wewnętrznej, stos IP powinien automatycznie trasować ten pakiet za pośrednictwem odpowiedniego interfejsu NIC. Czy jeszcze brakuje mi czegoś więcej? –
Czy jesteś pewien, że pierwszym elementem w wyliczeniu jest zawsze preferowana karta sieciowa - a jeśli jest to interfejs pętli zwrotnej lub jakiś egzotyczny interfejs tunelu 6to4? –