아래 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();
}
}
실마리가 있습니까?
단서 1 : "netstat -a"(또는 이와 동등한 것)를 사용하여 서버가 수신 대기중인 IP 및 포트를 확인하십시오. –
'tcp6 0 0 127.0.0.1:80 ::: * LISTEN 2939/java ' – Hooli
그래서 IP 주소를 사용하여 IPv6에서 curl을 사용하고 있습니까? ("localhost"...) –