Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/346.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
关于JavaServerSocket的奇怪反应_Java - Fatal编程技术网

关于JavaServerSocket的奇怪反应

关于JavaServerSocket的奇怪反应,java,Java,我编写了一个简单的java服务器编程,它只接受一个连接并将“发送响应”打印到屏幕上。当我使用safari连接此服务器时,服务器会打印一次结果,这是正确的结果。但是,当我重新加载页面时,将有三个“发送响应”打印到屏幕上。有人能帮我吗 public class Server { public void runServer() throws Exception{ ServerSocket socketServer = new ServerSocket(3721); Syste

我编写了一个简单的java服务器编程,它只接受一个连接并将“发送响应”打印到屏幕上。当我使用safari连接此服务器时,服务器会打印一次结果,这是正确的结果。但是,当我重新加载页面时,将有三个“发送响应”打印到屏幕上。有人能帮我吗

public class Server {
    public void runServer() throws Exception{
     ServerSocket socketServer = new ServerSocket(3721);
    System.out.println("Listerning for connections on port:"+socketServer.getLocalPort());
    while(true){
        Socket socket = socketServer.accept();
        System.err.println("Established with:"+socket);
        String request = parseRequest(socket);
        String response = createResponse(request);
        sendResponse(response);
        socket.close();
    }
    }

public String parseRequest(Socket socket){
    return "request";
}

public String createResponse(String request){
    return "response";
}

public void sendResponse(String response){
    System.out.println("Sending response");
}

public static void main(String[] args) throws Exception{
    Server server = new Server();
    server.runServer();
}
}
这些产出是:

Listerning for connections on port:3721
Sending response
Established with:Socket[addr=/0:0:0:0:0:0:0:1%0,port=59055,localport=3721]
Sending response
Established with:Socket[addr=/0:0:0:0:0:0:0:1%0,port=59065,localport=3721]
Established with:Socket[addr=/0:0:0:0:0:0:0:1%0,port=59066,localport=3721]
Sending response
Sending response
Established with:Socket[addr=/0:0:0:0:0:0:0:1%0,port=59067,localport=3721]

当您在Safari中创建对页面的请求时,Safari可能正试图在后台获取其他项目,您的servlet正在获取这些项目

一个明显的例子是favicon,它显示在URL旁边,用于书签中的图标


您应该打印出请求中的URI路径,以准确了解请求是什么。您可以使用该路径从“无效”请求中筛选出“有效”请求。

哇,我知道怎么做,谢谢,我将打印uri以检查发生了什么。非常感谢你!