2013-02-28 25 views
1

我工作的一種基本的TCP服務器上,我來,我需要從客戶端(瀏覽器)處理所有進線的點我做了這個循環檢測羯羊它是GET或HEAD,或者如果-Modified-Since的或任何我想要添加到檢測。使用帶有插座BufferedReader.readLine()和停留在一個無限循環

while ((acumulador = sEntrada.readLine()) != null) { 
      if (acumulador.startsWith("GET") || acumulador.startsWith("HEAD")) { 
       recibido = acumulador; 
       System.out.println("SERVIDOR: Recibido " + acumulador); 
       //Troceamos la entrada en tres 
       StringTokenizer tokens = new StringTokenizer(acumulador); 
       while (tokens.hasMoreTokens()) { 
        aux.add(tokens.nextToken()); 
       } 
       tipo = aux.get(0); 
       archivo = aux.get(1); 
       version = aux.get(2); 
      } else if (acumulador.toLowerCase().startsWith("if-modified-since")) { 
       StringTokenizer tokens = new StringTokenizer(acumulador); 
       while (tokens.hasMoreTokens()) { 
        aux2.add(tokens.nextToken()); 
       } 

      } else { 
       System.out.println("SERVIDOR: Recibido " + acumulador); 
      } 

     } 

的問題是,這是輸出:

SERVIDOR: Conexion establecida con /127.0.0.1 al puerto 5000 
SERVIDOR: Recibido GET/HTTP/1.1 
SERVIDOR: Recibido Host: 127.0.0.1:5000 
SERVIDOR: Recibido Connection: keep-alive 
SERVIDOR: Recibido Cache-Control: max-age=0 
SERVIDOR: Recibido Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 
SERVIDOR: Recibido User-Agent: Mozilla/5.0 (X11; Linux i686) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22 
SERVIDOR: Recibido Accept-Encoding: gzip,deflate,sdch 
SERVIDOR: Recibido Accept-Language: es,en-US;q=0.8,en;q=0.6 
SERVIDOR: Recibido Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.3 
SERVIDOR: Recibido Cookie: __utma=1.1831406279.1361823043.1361997547.1362010032.7; __utmc=1; __utmz=1.1361823043.1.1.utmcsr=(direct)|utmccn=(direct)|utmcmd=(none) 
SERVIDOR: Recibido 

它看起來不錯,對吧?它讀取一切都像我想它來閱讀,但問題是,它並沒有停止閱讀,客戶端永遠不會從我的服務器接收到任何東西,因爲服務器從來沒有得到的是循環的,像.ReadLine()從來沒有回來「空」並停下來。

我在做什麼錯?

回答

0

如果服務器從來沒有空,客戶永遠不會關閉的連接。

+0

但我不想讓他關閉連接,因爲我需要回復他的請願書。我怎樣才能讀完所有的請願書,然後到我處理答覆的那一部分。 – user2013543 2013-02-28 12:01:29