Tcp 将BufferedReader.readLine()与套接字一起使用并卡在无限循环中

Tcp 将BufferedReader.readLine()与套接字一起使用并卡在无限循环中,tcp,Tcp,我在一个基本的TCP服务器上工作,我已经到了需要处理来自客户端(浏览器)的所有输入线路的地步,我已经做了这个循环来检测它是GET还是HEAD,或者是否修改过,或者我想添加什么来检测 while ((acumulador = sEntrada.readLine()) != null) { if (acumulador.startsWith("GET") || acumulador.startsWith("HEAD")) { recibido

我在一个基本的TCP服务器上工作,我已经到了需要处理来自客户端(浏览器)的所有输入线路的地步,我已经做了这个循环来检测它是GET还是HEAD,或者是否修改过,或者我想添加什么来检测

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()从未返回“null”并停止


我做错了什么?

如果服务器从未为空,那么客户端从未关闭连接。

但我不希望他关闭连接,因为我需要回复他的请求。我怎么能只看所有的请愿信,然后转到我处理回复的部分呢。