java - 关于 java serverSocket 的奇怪响应

标签 java

我编写了一个简单的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 正在获取的其他项目。

一个明显的例子是 URL 旁边显示的图标以及书签中的图标。

您应该打印出请求中的 URI 路径,以准确弄清楚请求是什么。您可以使用该路径从“无效”请求中过滤掉“有效”请求。

关于java - 关于 java serverSocket 的奇怪响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9155730/

相关文章:

java - Firestore set() 方法不会将文档插入集合中,除非调用 ApiFuture<WriteResult> 的 get() 方法

Java Lotus Notes API/VBA nsf 文件路径

java - 如何在多线程环境中交换 boolean 值?

java - Bukkit - 如何在 60 秒后做一件确定的事情?

java - 如何在 Java 枚举中定义静态常量?

java - 使用相同的作业 ID 调度不同的 crontimers

Java SE Maven 项目使用 ResourceBundle 进行国际化

java - 与圆的弹性碰撞

java - 如何准备电子邮件验证测试用例?

java - Java 中没有 StackTrace 的 NullPointerException