Ciao a tutti! Essendo un pò nuovo con le socket ho dei problemi a fare una comunicazione client-server dove prima il client manda una richiesta e il server la ascolta, dopidichè il server manda la risposta e il client la ascolta.
SERVER:
CLIENT:codice://attendo la richiesta serverSocket = new ServerSocket(port); socket = serverSocket.accept(); InputStream is = socket.getInputStream(); BufferedReader dis = new BufferedReader(new InputStreamReader(is)); String temp = new String(); String request = new String(); while((temp = dis.readLine()) != null) { request += (temp + "\n"); } //elaboro la richiesta e rispondo OutputStream os = socket.getOutputStream(); BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(os)); bw.write(message); bw.close(); socket.close();
Allora: il punto è che una volta che sul client faccio bw.close() non posso fare nient'altro perchè mi lancia un'eccezione di socket chiusa. Se non faccio la bw.close ma la bw.flush è il server a non ricevere niente e resta in attesa infinita.codice:String request = new String(); request = "GET"; OutputStream os = socket.getOutputStream(); BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(os)); bw.write(request); bw.close(); //ho mandato il messaggio al server, ora lui mi deve rispondere InputStream is = socket.getInputStream(); BufferedReader dis = new BufferedReader(new InputStreamReader(is)); String temp = new String(); while((temp = dis.readLine()) != null) { testo += (temp + "\n"); } socket.close();
Un ringraziamento a tutti e un bacio a chi mi risolve questo grattacapo. E' da ieri che sto sbattendo la testa contro il muro.
ciao ciao

Rispondi quotando