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!