Java 服务器认为即使请求不存在,请求也会不断出现

Java 服务器认为即使请求不存在,请求也会不断出现,java,multithreading,Java,Multithreading,我正在编写一个Java服务器,它在浏览器中输出一个请求号。它是一个多线程应用程序,假设为每个请求创建一个新线程并输出下一个数字。它确实有效,但是当我只有一个增量时,数字输出会增加4。所以我有一种感觉,服务器不知何故一直在接收请求,而没有在浏览器中输出它们 public class ResponseServer { public static void main(String[] args) throws IOException { // TODO Auto-genera

我正在编写一个Java服务器,它在浏览器中输出一个请求号。它是一个多线程应用程序,假设为每个请求创建一个新线程并输出下一个数字。它确实有效,但是当我只有一个增量时,数字输出会增加4。所以我有一种感觉,服务器不知何故一直在接收请求,而没有在浏览器中输出它们

public class ResponseServer {

    public static void main(String[] args) throws IOException {
        // TODO Auto-generated method stub
        int clientNum = 0;
    ServerSocket serverSocket = new ServerSocket(8000);
    Socket socket = null;
    while (true) {
        socket = serverSocket.accept();
        System.out.println("CLIENT NUM " + clientNum);
        new HandleClient(socket, clientNum++).run();
        System.out.println("DONE");
    }
}
static class HandleClient implements Runnable {
    Socket socket;
    int counter;

    public HandleClient(Socket socket, int counter) {
        System.out.println("RECIEVED " + counter);
        this.socket = socket;
        this.counter = counter;
    }
    @Override
    public void run() {
        // TODO Auto-generated method stub
        try {
            InputStream in = socket.getInputStream();
            BufferedReader read = new BufferedReader(new InputStreamReader(in));
            OutputStream out = socket.getOutputStream();
            String response = "<h2>" + counter + "</h2>";
            out.write("HTTP/1.1 200 OK\n".getBytes());
            out.write("Content-Type: text/html; charset=utf-8\n".getBytes());
            out.write(("Content-Length: " + response.length() + "\n\n").getBytes());
            out.write(response.getBytes());
            out.flush();
            out.close();
        } catch (IOException e) {
            System.err.println(e);
        }
    }

}
公共类响应服务器{
公共静态void main(字符串[]args)引发IOException{
//TODO自动生成的方法存根
int clientNum=0;
ServerSocket ServerSocket=新的ServerSocket(8000);
套接字=空;
while(true){
socket=serverSocket.accept();
System.out.println(“CLIENT NUM”+clientNum);
新的HandleClient(套接字,clientNum++)。run();
系统输出打印项次(“完成”);
}
}
静态类HandleClient实现Runnable{
插座;
整数计数器;
公共手持客户端(插座、int计数器){
系统输出打印项次(“接收”+计数器);
this.socket=socket;
this.counter=计数器;
}
@凌驾
公开募捐{
//TODO自动生成的方法存根
试一试{
InputStream in=socket.getInputStream();
BufferedReader read=新的BufferedReader(新的InputStreamReader(in));
OutputStream out=socket.getOutputStream();
字符串响应=“计数器+”;
out.write(“HTTP/1.1200ok\n.getBytes());
out.write(“内容类型:text/html;charset=utf-8\n”.getBytes());
out.write(((“内容长度:”+response.Length()+“\n\n”).getBytes());
out.write(response.getBytes());
out.flush();
out.close();
}捕获(IOE异常){
系统错误println(e);
}
}
}

}Chrome和IE浏览器中有一个bug。代码没有问题-如果您使用Firefox,则工作正常。

您使用的浏览器是什么?@SotiriosDelimanolis Google Chrome最新版本如果您打开网络控制台,您可以看到它发送了多少请求。请参阅和