gpt4 book ai didi

java - undertow 网络服务器未绑定(bind)到远程地址

转载 作者:行者123 更新时间:2023-11-30 10:42:39 24 4
gpt4 key购买 nike

我正在测试 undertow 2.0.0.Alpha1 网络服务器。当我在本地运行它时,它会工作并在我转到 localhost:80 时返回 Hello World。然后我在远程服务器上部署网络服务器并转到 remote_ip:80 但我没有收到任何回复。如果我在远程服务器上运行 curl -i -X GET http://localhost:80 那么我也会得到 Hello World 。所以服务器肯定在运行,但由于某种原因,它只是无法通过远程 ip 地址访问。如果我尝试在代码中将主机名设置为远程 IP(即 .addHttpListener(80, "remote.ip")),那么我会得到一个 BindException

import io.undertow.Undertow;
import io.undertow.server.HttpHandler;
import io.undertow.server.HttpServerExchange;
import java.io.IOException;
import java.util.logging.Level;
import java.util.logging.Logger;

public class HelloWorldServer {

public static void main(final String[] args) {
try {
Runtime.getRuntime().exec("sudo fuser -k 80/tcp");
} catch (IOException ex) {
Logger.getLogger(HelloWorldServer.class.getName()).log(Level.SEVERE, null, ex);
}
Undertow server = Undertow.builder()
.addHttpListener(80, null)
.setHandler(new HttpHandler() {
@Override
public void handleRequest(final HttpServerExchange exchange) throws Exception {
exchange.getResponseSender().send("Hello World");
}
}).build();
server.start();
}

}

有什么线索吗?

最佳答案

addHttpListener(80, null) 的第二个参数是主机。您需要在其中放置一个主机名或 IP 以让它监听公共(public) IP。使用 null 它将只绑定(bind)到本地主机。

尝试绑定(bind)到公共(public) IP 或绑定(bind)到 0.0.0.0 如果你想绑定(bind)到所有地址。

Undertow server = Undertow.builder()
.addHttpListener(80, "0.0.0.0")
.setHandler(new HttpHandler() {
@Override
public void handleRequest(final HttpServerExchange exchange) throws Exception {
exchange.getResponseSender().send("Hello World");
}
}).build();
server.start();

关于java - undertow 网络服务器未绑定(bind)到远程地址,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38034479/

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