Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/349.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
java服务器http服务器接收来自Chrome的空请求_Java_Http_Sockets - Fatal编程技术网

java服务器http服务器接收来自Chrome的空请求

java服务器http服务器接收来自Chrome的空请求,java,http,sockets,Java,Http,Sockets,当从Chrome向本地主机发送请求时,程序会收到两个请求:一个(可能两个)为空,另一个为正常HTTP请求。 当我对Firefox执行同样的操作时,有时会收到一个空HTTP请求,其他请求都可以。 我认为这与favicon有关,我不确定为什么输出流中没有任何内容 ServerSocket server=null; Socket socket; try { server=new ServerSocket(80); while(true) { try {

当从Chrome向本地主机发送请求时,程序会收到两个请求:一个(可能两个)为空,另一个为正常HTTP请求。
当我对Firefox执行同样的操作时,有时会收到一个空HTTP请求,其他请求都可以。
我认为这与favicon有关,我不确定为什么
输出流中没有任何内容

ServerSocket server=null;
Socket socket;
try 
{   server=new ServerSocket(80);
    while(true)
    {   try 
        {   socket = server.accept();
            Worker worker=new Worker(socket);
            (new Thread(worker)).start();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

....
//Worker.java


public class Worker implements Runnable 
{   private Socket socket;
    public void run()
    {   try 
        {   InputStream inStream = new BufferedInputStream(
                                                     socket.getInputStream());
            byte[] array = new byte[1000];
            ByteArrayOutputStream outputStream = new ByteArrayOutputStream( );
            while(inStream.available()>0)
            {   outputStream.write(array);
            }
            System.out.println("-----------------------------------------");
            System.out.println(outputStream);
            System.out.println("-----------------------------------------");

            } 
            catch (IOException e) 
            {   e.printStackTrace();
            }
            try 
            {   socket.close();
            } 
            catch (IOException e) 
            {   e.printStackTrace();
            }
        }
        public Worker(Socket socket)
        {   this.socket=socket;
        }
    }
来自Chrome的示例请求:

-----------------------------------------

-----------------------------------------
-----------------------------------------

-----------------------------------------
-----------------------------------------
GET / HTTP/1.1
Host: localhost
Connection: keep-alive
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.97 Safari/537.11
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Encoding: gzip,deflate,sdch
Accept-Language: en-US,en;q=0.8
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.3

-----------------------------------------

available()不是流结束的有效测试。请参阅Javadoc。您应该逐行阅读所有标题,直到得到一个空行。

我将尝试使用bufferedreader和readline进行阅读。我以前试过这个,但没有线程,有些东西不起作用。无论如何,谢谢你