Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.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 为什么serverScoket.accept()只对一个请求执行多次_Java_Multithreading_Sockets_Tomcat_Serversocket - Fatal编程技术网

Java 为什么serverScoket.accept()只对一个请求执行多次

Java 为什么serverScoket.accept()只对一个请求执行多次,java,multithreading,sockets,tomcat,serversocket,Java,Multithreading,Sockets,Tomcat,Serversocket,我正在学习《tomcat是如何工作的》这本书,发现了一件让我大吃一惊的事情。我将代码简化如下: public class Boot { public static void main(String[] args) { ServerDemo server = new ServerDemo(); try { server.start(); System.in.read(); } c

我正在学习《tomcat是如何工作的》这本书,发现了一件让我大吃一惊的事情。我将代码简化如下:

public class Boot {
    public static void main(String[] args) {
        ServerDemo server = new ServerDemo();
        try {
            server.start();
            System.in.read();
        }
        catch (Exception e) {
            e.printStackTrace();
        }
   }
}

Boot
类是主类,用于引导此应用程序,
ServerDemo
类是一个简化的服务器,它侦听8080端口,并在浏览器的请求到达时打印信息。 现在的问题是:我想当我从浏览器发出请求时,它会执行

socket = serverSocket.accept();
然后只打印一次信息,然后线程阻塞自身,因为
接受方法等待下一个请求

但是实际情况是,线程多次打印关于请求的信息(可能是3,4..)

这是一个执行: 输入:

输出:

--receive request from client----13
--receive request from client----13
--receive request from client----13
我的预期输出:

--接收来自客户机的请求----编号


小结:我无法理解一个请求为什么要打印几次,这意味着接受方法执行几次

可能是您的浏览器尝试了一些不同的方法让您做出响应,因为您刚刚关闭了它们的连接。尝试改用
curl
wget

–ug_

可能是您的浏览器尝试了一些不同的方法让您做出响应,因为您刚刚关闭了它们的连接。尝试改用
curl
wget

–ug_u

可能是您的浏览器尝试了一些不同的方法让您做出响应,因为您刚刚关闭了它们的连接。请尝试改用
curl
wget
。@ug\u是的,当客户端未收到响应时,它将重试。正确。您的问题是基于浏览器正在发出一个请求的假设,而实际上它没有。可能是您的浏览器尝试了一些不同的方法让您响应,因为您刚刚关闭了它们的连接。请尝试改用
curl
wget
。@ug\u是的,当客户端未收到响应时,它将重试。正确。您的问题基于浏览器正在发出一个请求的假设,而实际上它没有发出请求。
http://localhost:8080/index
--receive request from client----13
--receive request from client----13
--receive request from client----13