Ho un problema con un server multithread, in pratica la situazione è questa :
ho un server che accetta connessioni da altri nodi della rete
codice:
ServerSocket sock;
Socket s;
try {
sock = new ServerSocket(port);
// Accept incoming requests (main loop)
for(int i=0;i<this.nAdj;i++) {
// Accept a new connection
//System.out.println("ADJNODE porta :"+port+" in accept");
s = sock.accept();
new TCPServerNodeThread(s,this.detState).start();
}
sock.close();
il guaio è che questi nodi potrebbero richiedere contemporaneamente l'accesso al server, quindi se ho due thread che richiedono allo stesso tempo la connessione, uno verrà servito dalla sock.accept, mentre l'altro mi darà connection refused, dato che il server sta istanziando il thread per gestire la connessione con il primo nodo...
Al momento sto risolvendo la cosa inserendo delle sleep nei nodi client, creando una sorta di accesso a tempo differenziato, ma questo mi rallenta l'applicazione, mi servirebbe un meccanismo tipo la listen() delle socket c che metta in attesa le altre connessioni senza rifiutarle....
pensavo di risolvere usando il costruttore: sock = new ServerSocket(port,1024);
ma neanche funziona