PDA

View Full Version : BufferedReader e stupido problema


Kaldais
24-05-2006, 12:39
Un saluto a tutti; oggi studiando un pò di HTTP stavo creando un semplice server web.

Il problema è sul leggere la richiesta del client, il codice il parole povere è questo

BufferedReader input = new BufferedReader( new InputStreamReader(socket.getInputStream() ));
PrintStream output = new PrintStream(socket.getOutputStream());

while (input.readLine() != null)
System.out.println(input.readLine());

Quando eseguo questa parte di codice sembra non uscire mai dal while, il problema è, ovviamente, sulla condizione. Ho provato anche a sostituirlo con un

input.readLine().equals("")

e sembra funzionare con il metodo GET, ma va in panico con il POST.

Sicuramente il problema è stupido, ma non riesco a venirne a capo.

Andlea
24-05-2006, 23:50
while (input.readLine() != null)
System.out.println(input.readLine());

così leggi due linee distinte, la prima su cui fai il test, e la seconda che mandi sull'out
Sostituisci con

String tmp
while ((tmp=input.readLine()) != null)
System.out.println(tmp);

Kaldais
25-05-2006, 16:49
Bè, ma così al massimo mi perderei la prima riga, invece il ciclo va comunque all'infinito.

sottovento
25-05-2006, 17:10
Bè, ma così al massimo mi perderei la prima riga, invece il ciclo va comunque all'infinito.
Ciao,
veramente Andlea sta cercando di dirti che non perdi la prima riga, bensi' ne leggi a due a due.
Comunque il problema e' che il tuo ciclo termina quando la riga dispari (passami il termine) e' null. Secondo la documentazione, e' null quando sei alla fine dello stream.

Siccome lo stream l'hai costruito partendo dallo stream di ingresso di una socket, uscirai dal ciclo quando la socket verra' chiusa.

High Flying
Sottovento

Kaldais
25-05-2006, 17:25
Ops, pardon, perfettamente ragione, mi sono confuso sul numero di righe. Comunque ti ringrazio per avermi aiutato, non ci avevo proprio pensato al socket.