Я тестирую веб-сервер подкласса 2.0.0.Alpha1. Когда я запускаю его локально, он работает и возвращает Hello World
, когда я иду на localhost:80
. Затем я развертываю веб-сервер на удаленном сервере и перехожу на 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();
}
}
Любые подсказки?
Подтверждение № 1: используйте «netstat -a» (или эквивалент), чтобы проверить, какие IP-адреса и порт сервер прослушивает. –
'tcp6 0 0 127.0.0.1:80 ::: * LISTEN 2939/java ' – Hooli
Так вы используете curl на IPv6, используя этот IP-адрес? (Это «localhost» ...) –