gpt4 book ai didi

java - 如何使用HttpServer类将8000端口暴露给远程访问?

转载 作者:行者123 更新时间:2023-12-01 16:55:15 25 4
gpt4 key购买 nike

我制作了这个小 API 来在遗留系统上提供一些 json。我无法向其中添加 Spring 或任何库,并认为这将是一个简单的方法。尽管它使用 curl localhost:8000/jms/health 在本地工作,但当我远程尝试时,连接被拒绝。运行 netstat 返回了我这个:

[userName@machineIp ~]$ sudo netstat -nlpt | grep 8000
tcp 0 0 127.0.0.1:8000 0.0.0.0:* LISTEN 25638/java

这就是类(class):

package somePackage;

import com.sun.net.httpserver.HttpServer;

import org.slf4j.Logger;

import java.io.IOException;
import java.io.OutputStream;
import java.net.InetSocketAddress;
import java.nio.charset.StandardCharsets;
import java.util.concurrent.Executors;

public class HealthHttp {

public static void init(Logger log) throws IOException {
HttpServer server = HttpServer.create(new InetSocketAddress("localhost", 8000), 0);
server.createContext("/jms/health", http -> {

String body = "{\"hello\":\"world\"}"; // any valid json

byte[] bytes = body.getBytes(StandardCharsets.UTF_8);

http.getResponseHeaders().set("Content-Type", "application/json; charset=" + StandardCharsets.UTF_8);

http.sendResponseHeaders(200, bytes.length);
OutputStream output = http.getResponseBody();
output.write(bytes);
output.flush();
output.close();
});
server.setExecutor(Executors.newFixedThreadPool(1));
server.start();
log.info("Http health server initialized");
}
}

我该如何解决这个问题?

最佳答案

正如问题评论中所建议的,将 localhost 更改为 0.0.0.0 允许来自所有外部地址和环回的连接

关于java - 如何使用HttpServer类将8000端口暴露给远程访问?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61601603/

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