Java socket编程,为什么浏览器建立连接多次?

时间:2013-10-15 23:40:04

标签: java sockets browser webserver

import java.io.DataInputStream;
import java.io.DataOutput;
import java.io.DataOutputStream;
import java.net.*;
import java.util.concurrent.*;

public class Server {

    public static void main(String[] args) {
        try {
            ServerSocket serverSocket = new ServerSocket(80);
            while (true) {
                Socket socket = serverSocket.accept();
                System.out.println("Test");
                socket.close();
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

当我使用chrome访问localhost:80时,为什么服务器会打印字符串“Test”3次?当我使用IE10访问它时它会打印两次。

2 个答案:

答案 0 :(得分:3)

如果你打印出它正在发出的HTTP请求,你可能会明白为什么。最有可能的情况是,浏览器要么尝试为您的“网站”favicon.ico加载localhost,要么尝试重新连接到没有说出正确HTTP的服务器。

答案 1 :(得分:3)

当它连接到Web服务器时,它会询问像favicon这样的数量资源。我建议你打印它所要求的内容,这样你就不会猜到为什么它被多次访问了。