HOWTO · Java

Java.Net.UnknownHostException

이 자습서는 Java의 java.net.unknownhostexception 오류를 보여줍니다.

이 자습서는 Java의 java.net.UnknownHostException 오류를 보여줍니다.

Java에서 java.net.UnknownHostException의 원인

java.net.UnknownHostException은 호스트 이름의 IP 주소를 찾을 수 없음을 의미합니다. 일반적으로 이것은 호스트 이름에 입력 실수가 있을 때 발생합니다.

이 예외의 또 다른 이유는 잘못된 DNS 구성 또는 DNS 전파입니다. 인터넷 전파를 위한 새 DNS에 48시간이 걸릴 수 있습니다.

다음은 Java에서 UnknownHostException의 예입니다.

package delftstack;

import java.io.IOException;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;

public class Example {
  public static void main(String[] args) {
    String Host_Name = "https://delftstack.co";
    URL Demo_Url = null;

    try {
      Demo_Url = new URL(Host_Name);
      HttpURLConnection Demo_Connection = (HttpURLConnection) Demo_Url.openConnection();
      System.out.println(Demo_Connection.getResponseCode());
    } catch (MalformedURLException me) {
      me.printStackTrace();
    } catch (IOException ie) {
      ie.printStackTrace();
    }
  }
}

위는 호스트에 연결을 시도하지만 호스트 이름에 입력 오류가 있습니다. UnknownHostException이 발생합니다.

출력 참조:

java.net.UnknownHostException: delftstack.co
    at java.base/sun.nio.ch.NioSocketImpl.connect(NioSocketImpl.java:567)
    at java.base/java.net.SocksSocketImpl.connect(SocksSocketImpl.java:327)
    at java.base/java.net.Socket.connect(Socket.java:633)
    at java.base/sun.security.ssl.SSLSocketImpl.connect(SSLSocketImpl.java:299)
    at java.base/sun.security.ssl.BaseSSLSocketImpl.connect(BaseSSLSocketImpl.java:174)
    at java.base/sun.net.NetworkClient.doConnect(NetworkClient.java:183)
    at java.base/sun.net.www.http.HttpClient.openServer(HttpClient.java:498)
    at java.base/sun.net.www.http.HttpClient.openServer(HttpClient.java:603)
    at java.base/sun.net.www.protocol.https.HttpsClient.<init>(HttpsClient.java:266)
    at java.base/sun.net.www.protocol.https.HttpsClient.New(HttpsClient.java:380)
    at java.base/sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.getNewHttpClient(AbstractDelegateHttpsURLConnection.java:189)
    at java.base/sun.net.www.protocol.http.HttpURLConnection.plainConnect0(HttpURLConnection.java:1242)
    at java.base/sun.net.www.protocol.http.HttpURLConnection.plainConnect(HttpURLConnection.java:1128)
    at java.base/sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.connect(AbstractDelegateHttpsURLConnection.java:175)
    at java.base/sun.net.www.protocol.http.HttpURLConnection.getInputStream0(HttpURLConnection.java:1665)
    at java.base/sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1589)
    at java.base/java.net.HttpURLConnection.getResponseCode(HttpURLConnection.java:529)
    at java.base/sun.net.www.protocol.https.HttpsURLConnectionImpl.getResponseCode(HttpsURLConnectionImpl.java:308)
    at delftstack.Example.main(Example.java:16)

java.net.UnknownHostException은 확인된 예외이며 try-catch 블록을 사용하여 처리할 수 있습니다. Java에서 UnknownHostException을 처리하는 방법은 아래를 참조하십시오.

package delftstack;

import java.io.IOException;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.UnknownHostException;

public class Example {
  public static void main(String[] args) {
    String Host_Name = "https://delftstack.co";
    URL Demo_Url = null;

    try {
      Demo_Url = new URL(Host_Name);
      HttpURLConnection Demo_Connection = (HttpURLConnection) Demo_Url.openConnection();
      System.out.println(Demo_Connection.getResponseCode());
    } catch (UnknownHostException ue) {
      ue.printStackTrace();
    } catch (MalformedURLException me) {
      me.printStackTrace();
    } catch (IOException ie) {
      ie.printStackTrace();
    }
  }
}

Java에서 java.net.UnknownHostException 방지

Java에서 java.net.UnknownHostException을 방지하려면 다음 두 가지 사항을 고려해야 합니다.

  1. 먼저 호스트 이름이 정확하고 입력 실수가 없는지 확인하십시오. 입력 실수나 공백이 있는지 다시 한 번 확인하십시오.
  2. DNS 설정을 확인하여 서버에 연결할 수 있는지 확인합니다. 새 호스트 이름은 DNS 서버를 따라잡는 데 시간이 걸립니다.

올바른 호스트 이름으로 동일한 예를 시도해 보겠습니다. 예를 참조하십시오:

package delftstack;

import java.io.IOException;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.UnknownHostException;

public class Example {
  public static void main(String[] args) {
    String Host_Name = "http://localhost/";
    URL Demo_Url = null;

    try {
      Demo_Url = new URL(Host_Name);
      HttpURLConnection Demo_Connection = (HttpURLConnection) Demo_Url.openConnection();
      System.out.println(Demo_Connection.getResponseCode());
    } catch (UnknownHostException uhe) {
      uhe.printStackTrace();
    } catch (MalformedURLException me) {
      me.printStackTrace();
    } catch (IOException ie) {
      ie.printStackTrace();
    }
  }
}

위의 코드는 올바르게 작동하고 응답 코드를 인쇄합니다. 출력 참조:

200