Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.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套接字多个请求_Java_Sockets_Serversocket - Fatal编程技术网

Java套接字多个请求

Java套接字多个请求,java,sockets,serversocket,Java,Sockets,Serversocket,我已经构建了一个接受请求的小型Web服务器。问题是,如果我在浏览器中打开它,我的应用程序显示已收到4个请求。为什么是4而不是1 while (true) { try { Socket remote = s.accept(); String sendersIP = remote.getInetAddress().toString(); log.add(sendersIP);

我已经构建了一个接受请求的小型Web服务器。问题是,如果我在浏览器中打开它,我的应用程序显示已收到4个请求。为什么是4而不是1

while (true) {
        try {
            Socket remote = s.accept();

            String sendersIP = remote.getInetAddress().toString();
            log.add(sendersIP);

                System.out.println("Got new Request");

                out.println("HTTP/1.0 200 OK");
                out.println("Content-Type: text/html");
                out.println("Server: Bot");
                out.println("");
                out.println("<H1>Welcome</H1>");

            out.flush();
            remote.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
while(true){
试一试{
套接字远程=s.accept();
字符串sendersIP=remote.getInetAddress().toString();
log.add(sendersIP);
System.out.println(“获得新请求”);
out.println(“HTTP/1.0 200 OK”);
println(“内容类型:text/html”);
out.println(“服务器:Bot”);
out.println(“”);
out.println(“欢迎”);
out.flush();
remote.close();
}捕获(例外e){
e、 printStackTrace();
}
}

我建议您在接受客户时使用
。
创建一个新线程,处理与
套接字远程
相关的所有内容

线程还应该有一个while循环,从
remote
s
InputStream
并且不要在创建后立即关闭套接字。然后,您可以查看浏览器发送的确切内容


因为现在的情况。创建后立即关闭浏览器的套接字。

看起来这是我的浏览器(Chrome)的错误。。。如果我从eclipse发送请求,它只会出现一次。

这取决于浏览器的功能。最有可能的是,它要求不同的页面来缓存信息,比如如何使用web服务器。HTML不应该有一个正文部分吗?你能不能显示
out
的声明?HTTP中的行终止符是
\r\n
,而不是为
println()
@mike PrintWriter out=new PrintWriter(remote.getOutputStream())提供的任何平台;