Sto provando a creare un'applicazione di chat java per la mia classe di rete. A partire da ora sono bloccato cercando di connettersi a qualcuno dietro un router diverso. Il mio modo di avere il mio progetto adesso è che ho un programma client e un programma server. I programmi client prima si registrano nel programma server che registra il loro IP e la loro porta in un database e quindi il server restituisce loro l'elenco dei loro amici con i loro IP e le loro porte. Quindi il client chiude la connessione al server e tenta di connettersi a un altro client utilizzando le informazioni restituite dal server. Finora il mio programma funziona solo collegandosi al server e ottenendo l'IP e la porta degli amici ma quando uso questi valori per connettermi all'altro client non posso connettermi.Java nat traversal per l'applicazione chat
socket = new Socket();
socket.setReuseAddress(true);
socket.setKeepAlive(true);
socket.setSoLinger(true, 10);
socket.bind(new InetSocketAddress(Port));
socket.connect(new InetSocketAddress(host, SERVER_PORT));
reusePort = socket.getLocalPort();
è al di sopra un frammento di codice Java utilizzato per connettersi al server allora sotto è quello che faccio sul lato client.
ss = new ServerSocket(reusePort);
Così ora tecnicamente sto ascoltando sulla stessa porta che ho usato per la connessione al server con cui è collegato e è recuperabile a un altro client ed è nella tabella NAT con il mio IP e la porta. Non sono sicuro di cosa mi manchi o se c'è qualche protocollo o qualcosa che devo fare. Ho dato un'occhiata alle perforazioni TCP e UDP ma non sono sicuro di come sia effettivamente realizzato o come implementarlo.
Qualsiasi suggerimento sarebbe apprezzato.
Vedo che hai accettato una risposta, ma sembra che si vuole prendere in considerazione "Hole Puching". La risposta accettata in realtà non risponde alla tua domanda, ma ti dice invece di lasciare che tutte le informazioni della tua applicazione passino attraverso il tuo Server, e sembra che tu voglia connettere direttamente i tuoi clienti. –
hey hai trovato la tua risposta. mi aiuti per favore. Sto avendo lo stesso problema. –
Possibile duplicato di [libreria STUN, TURN, ICE per Java] (http://stackoverflow.com/questions/2039147/stun-turn-ice-library-for-java) –