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:
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();
CLIENT:
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();
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.
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