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()從來沒有回來「空」並停下來。
我在做什麼錯?
但我不想讓他關閉連接,因爲我需要回復他的請願書。我怎樣才能讀完所有的請願書,然後到我處理答覆的那一部分。 – user2013543 2013-02-28 12:01:29