Ciao Ragazzi allora ecco il mio problema ho un cliente che effettua un richiesta ad u nserver multithread, il server passa la socket al thread che riceve la richiesta poi dopo averla elaborata vorrei che inviasse le risposta la cliente ma cio non avviene ecco il codice del client:
codice:
private void SendUrlActionPerformed(java.awt.event.ActionEvent evt) {                                        
        try{
            // Apre una connessione verso il server in ascolto
            // sulla porta 5555. In questo caso utilizziamo localhost
            // che corrisponde all'indirizzo IP 127.0.0.1
            
            System.out.println("Apertura connessione...");
            Socket connessione = new Socket("127.0.0.1",5555);
            
            // Ricavo lo stream di input dal socket connessione ed utilizzo un oggetto wrapper di 
            // classe BufferedReader per semplificare le operazioni di lettura
            InputStream is = connessione.getInputStream();
            BufferedReader lettura = new BufferedReader(new InputStreamReader(is));
            
            // Ricava lo stream di output dal socket connessione ed utilizzo un oggetto wrapper di
            // classe BufferedWriter per semplificare le operazioni di scrittura

            OutputStream out = connessione.getOutputStream();
            BufferedWriter scrittura = new BufferedWriter(new OutputStreamWriter(out));
            //Invio la url dalla quale voglio scaricare il video all server in ascolto
            scrittura.append(URL.getText());
            
            // Al termine, chiudo i vari stream.
            scrittura.close();
            
            // Legge l'input e lo visualizza sullo schermo
            System.out.println("Risposta del server: " + lettura.readLine());
             lettura.close();
            
            connessione.close();
            System.out.println("Chiusura connessione effettuata");
        }catch(IOException e){
            System.out.println(e);
            System.exit(WIDTH);//se la connessione nn va a buon fine chiuduamo il programma
        }
    }
ecco invece parte del codice del thread che gestiscel la connessione, al costruttore gli viene passata la socket del client, dal client riesco a leggere la richiesta ma non risco a rispondere perche subito dopo che faccio lettura.close(); si chiude la connessione alla socket e non so il perche:
codice:
class ThreadAscoltatore  extends Thread{
    private Socket client = null;
    private String Url = null;
    private String HTML = null;
    ArrayList<String> arrayUrl = new ArrayList<> ();
    
    
    public ThreadAscoltatore(Socket connessione) throws IOException{
        client = connessione;
    }
    // Metodo che ci restituisce l'url richeisto dal Client
    private String getURL() throws IOException{
        // Ricava lo stream di input associato alla socket e definisco una classe wrapper di tipo
        // BufferedReader per semplificare le operazioni di lettura
        BufferedReader lettura = new BufferedReader(new InputStreamReader(client.getInputStream()));
        // Scrivo l'url richiesta dal client 
        String UrlFromClient = (lettura.readLine());
        //Chiudo le stream di lettura e la connessione
        lettura.close();
        //provaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
        if(this.client.isClosed())
                System.out.println("connessione assente");
                
            PrintStream out = new PrintStream(client.getOutputStream(), true);
            out.println("Generico messaggio per il Client");
            out.flush();
            out.close();
       
        return UrlFromClient;
    }
il metodo getUrl è lanciato dentro il metodo Run aiutatemi che sono sono giorni che ci sbatto la testa e non riesco a risolvere! grazie mille!