Originariamente inviato da LeleFT
Potresti postare un po' più di codice o mettere a disposizione per il download il codice completo? In questo modo sarebbe più semplice provare l'applicazione o quantomeno tentare di capire qual è il passaggio che fallisce.

In applicazioni di tipo client/server ci sono una infinità di motivi per cui la connessione viene perduta.
A me verrebbe in mente una situazione del genere (potrebbe non essere il problema):

1) Fai una accept e ricevi una Socket sulla variabile client
2) Elabori la richiesta (creando il PrintWriter e tutto quel che ci va dietro)
3) Torni in attesa di una seconda connessione.
4) A questo punto l'istruzione accept sostituisce la soket precedente e la connessione viene perduta.


Ciao.
E' quel che pensavo anch'io ma la variabile socket e' una variabile locale e percio' penso ne venga creata una nuova ad ogni passata del ciclo while(true) (scope). Infatti se faccio qualcosa di questo tipo:

codice:
while (true)
{
   try
   { 
   //Non setto nessun timeout perche' il mio compito e' soltanto quello di attendere connessioni in entrata
    incoming = ss.accept();//Chiamata bloccante
    }
    catch(IOException e)
    {
     System.out.println("Taxi Reservation Handler " + tm.getTaxiName() + "> errore durante la ricezione di prenotazioni sul server socket.");
     continue;//Passo alla prenotazione successiva
    }
    ResThread rt = new ResThread(incoming);
    rt.start();
}
tutto va secondo le previsioni ovvero ogni ResThread riesce ad utilizzare correttamente il socket di competenza. Il problema si crea quando sia il server (Quello che fa l'accept) che i singoli thread utilizzano degli stream di I/O dallo stesso socket.
Ad esempio se il server, prima di passare il socket al ResThread, avesse inviato una risposta al client tramite un OutputStream, nel momento in cui il thread avesse tentato di utilizzare a sua volta un output stream dello stesso socket si sarebbe verificato un errore.
Il problema potrebbe essere che avrei dovuto prima chiudere il PrintWriter creato dal server e quindi passare il socket al thread ??