gpt4 book ai didi

java - httpClient 连接未关闭

转载 作者:可可西里 更新时间:2023-11-01 16:36:39 26 4
gpt4 key购买 nike

版本

vert.x core: 3.3.0

上下文

我只是想在核心示例 io.vertx.example.core.http.simple.Client 中运行 http 客户端。在运行此示例时,发现已建立的连接在请求完成后未关闭。

服务器端我没有看到任何问题。因为在尝试使用 jmeter 和服务器时它工作正常。所以我认为问题出在 HttpClient 中。

谁能帮我解决这个问题?

提前致谢。重现步骤

running io.vertx.example.core.http.simple.Server code
running io.vertx.example.core.http.simple.Client code

额外

即使在请求和响应结束后仍显示以下内容。给予的同时Linux

lsof -i -P
java 32551 USER 223u IPv4 16264097 0t0 TCP localhost:8080->localhost:26980 (ESTABLISHED)
java 32634 USER 218u IPv4 16264087 0t0 TCP localhost:26980->localhost:8080 (ESTABLISHED)

window

TCP    127.0.0.1:8080         FSSCHND12957:56893     ESTABLISHED
TCP 127.0.0.1:56893 FSSCHND12957:8080 ESTABLISHED

在LINUX和WINDOWS系统都试过了。

客户端代码

package io.vertx.example.core.http.simple;

import io.vertx.core.AbstractVerticle;
import io.vertx.example.util.Runner;

/*

@author Tim Fox
*/
public class Client extends AbstractVerticle {

// Convenience method so you can run it in your IDE
public static void main(String[] args) {
Runner.runExample(Client.class);
}

@Override
public void start() throws Exception {
vertx.createHttpClient().getNow(8080, "localhost", "/", resp -> {
System.out.println("Got response " + resp.statusCode());
resp.bodyHandler(body -> {
System.out.println("Got data " + body.toString("ISO-8859-1"));
});
});
}
}

服务器代码

package io.vertx.example.core.http.simple;

import io.vertx.core.AbstractVerticle;
import io.vertx.example.util.Runner;

/*

@author Tim Fox
*/
public class Server extends AbstractVerticle {

// Convenience method so you can run it in your IDE
public static void main(String[] args) {
Runner.runExample(Server.class);
}

@Override
public void start() throws Exception {
vertx.createHttpServer().requestHandler(req -> {
req.response().putHeader("content-type", "text/html").end("
Hello from vert.x!
");

}).listen(8080);
}
}

最佳答案

我们必须关闭我们通常在 java 中执行的 httpClient。只有 end() 没有关闭连接。 httpClient.close() 是必需的....这解决了我的问题..

修改后的代码:

public class Client extends AbstractVerticle {

// Convenience method so you can run it in your IDE
public static void main(String[] args) {
Runner.runExample(Client.class);
}

@Override
public void start() throws Exception {
HttpClient httpClient = vertx.createHttpClient().getNow(8080, "localhost", "/", resp -> {
System.out.println("Got response " + resp.statusCode());
resp.bodyHandler(body -> {
System.out.println("Got data " + body.toString("ISO-8859-1"));
httpClient.close();
});
});
}
}

关于java - httpClient 连接未关闭,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39092783/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com