Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/335.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服务器System.out问题_Java_Http_Sockets_System.out - Fatal编程技术网

Java HTTP服务器System.out问题

Java HTTP服务器System.out问题,java,http,sockets,system.out,Java,Http,Sockets,System.out,所以我有一个任务,我必须用选择的编程语言创建一个HTTP服务器。没什么大不了的。我遇到了一个我似乎无法解决的问题。每次我加载主页和服务器响应时,它会打印大约5次。我不明白为什么。好吧,我的意思是: 代码片段: while(true){ connectedClient = listenSocket.accept(); inFromClient = new BufferedReader( new InputStreamReader( connectedClient.getInput

所以我有一个任务,我必须用选择的编程语言创建一个HTTP服务器。没什么大不了的。我遇到了一个我似乎无法解决的问题。每次我加载主页和服务器响应时,它会打印大约5次。我不明白为什么。好吧,我的意思是:

代码片段:

while(true){
    connectedClient = listenSocket.accept();

    inFromClient = new BufferedReader( new InputStreamReader( connectedClient.getInputStream()));

    outToClient = new DataOutputStream(connectedClient.getOutputStream());

    String requestString = inFromClient.readLine();
    String headerLine = requestString;

    StringTokenizer tokenizer = new StringTokenizer(headerLine);
    String httpMethod = tokenizer.nextToken();
    String httpQueryString = tokenizer.nextToken();

    requestString = inFromClient.readLine();
    if (httpMethod.equals("GET")) {
        if (httpQueryString.equals("/Home")) {
        // The default home page status code 200
        dateHeader();
        connectionCloseHeader();    
    }
//other code not related
}
这是我的日期标题方法:

public static void dateHeader() throws Exception{
    DateFormat dateFormat = new SimpleDateFormat("EEE, d MMM yyyy HH:mm:ss z");
    Date date = new Date();
    System.out.println("Date: " + dateFormat.format(date));
}
我向终端的输出将是5个日期的打印输出。我确保连接等都已关闭,但同样的事情也发生了。有人知道为什么会这样吗?谢谢

编辑


似乎当我使用Chrome时,打印出来的一个没有问题。我在用Opera进行测试,这给了我5份打印件。也许是浏览器的工作方式导致了这个问题。不过我现在就用chrome吧。

我不能马上解释五种不同的调用,但是如果你使用一个典型的浏览器访问这个HTTP服务器,你会立即看到两个请求:一个请求资源本身,一个请求favicon.ico。在请求处理程序的某个地方,您应该读入并打印出整个请求。然后,您可以确切地看到所有请求的目的。

因此,返回的页面依次引用了一些资源,如图像、CSS、JS等,webbrowser也需要下载这些资源?它现在所做的就是向浏览器输出一条消息。页面现在没有传递任何内容。只是一个简单的向外到客户端的消息。但我似乎已经解决了这个问题。Hrmm我确实在使用浏览器进行连接。我有一个例子,我用同样的东西测试过,它有点复杂,它给了我3-5个不同的ONCE,不同的端口被接受。也许同样的事情正在发生?我不确定。我会尝试使用不同的浏览器。Hrmm我想我找到了原因。我使用Opera连接到服务器,我得到了5个优先级。但是如果我使用chrome,我会得到1。我有关于为什么会发生这种情况的理论,但不确定。你帮我意识到了一些事情,谢谢!