Develop/JAVA

[Java] 현재 서버 도메인 정보 갖고오기

issuemaker99 2024. 9. 26. 15:59
728x90

예제 코드: 현재 도메인 정보를 가져와서 문장을 생성하는 코드

import java.net.InetAddress;
import java.net.UnknownHostException;

public class DomainInfoGenerator {

    public static void main(String[] args) {
        try {
            // 1. 현재 시스템의 도메인 정보를 가져옴
            String domainName = getDomainName();
            
            // 2. 도메인 정보를 이용해 문장 생성
            String domainMessage = createDomainMessage(domainName);
            
            // 3. 생성된 문장 출력
            System.out.println(domainMessage);
        } catch (UnknownHostException e) {
            System.out.println("도메인 정보를 가져올 수 없습니다: " + e.getMessage());
        }
    }

    /**
     * 현재 시스템의 도메인 이름을 반환하는 메서드
     *
     * @return 도메인 이름
     * @throws UnknownHostException 도메인 이름을 가져올 수 없는 경우 발생
     */
    private static String getDomainName() throws UnknownHostException {
        // InetAddress 객체를 통해 현재 호스트의 정보를 가져옴
        InetAddress inetAddress = InetAddress.getLocalHost();
        // 도메인 이름을 반환 (호스트 이름)
        return inetAddress.getHostName();
    }

    /**
     * 도메인 정보를 받아 사용자에게 보여줄 문장을 생성하는 메서드
     *
     * @param domainName 도메인 이름
     * @return 생성된 문장
     */
    private static String createDomainMessage(String domainName) {
        return "현재 시스템의 도메인 이름은 '" + domainName + "' 입니다.";
    }
}

코드 설명

1. InetAddress.getLocalHost()

이 메서드는 InetAddress 클래스의 정적(static) 메서드로, 현재 시스템의 IP 주소 및 도메인 이름을 가져올 때 사용됩니다. 이 메서드는 내부적으로 호스트의 IP 주소를 검색하고, 그에 대응하는 호스트 이름(도메인)을 반환합니다.

예시:

InetAddress inetAddress = InetAddress.getLocalHost();

이 코드가 호출되면 inetAddress 객체는 시스템의 호스트 이름과 IP 주소 정보를 가지고 있습니다.

2. getHostName()

InetAddress 객체에서 호스트 이름(도메인 이름)을 가져오는 메서드입니다. 이 메서드는 시스템의 네트워크 인터페이스를 통해 연결된 도메인의 이름을 반환합니다.

예시:

String domainName = inetAddress.getHostName();

이 코드를 통해 현재 시스템의 도메인 이름을 가져올 수 있습니다. 만약 도메인 이름을 가져오는 데 실패하면 UnknownHostException 예외가 발생할 수 있습니다.

3. UnknownHostException

이 예외는 호스트 이름을 가져올 수 없을 때 발생하는 checked 예외입니다. 예를 들어, 네트워크 문제나 호스트가 올바르게 구성되지 않은 경우 이 예외가 발생할 수 있습니다. try-catch 블록으로 감싸 예외 상황에 대비해야 합니다.

예시:

try {
    String domainName = getDomainName();
} catch (UnknownHostException e) {
    System.out.println("도메인 정보를 가져올 수 없습니다.");
}

 

4. createDomainMessage(String domainName)

이 메서드는 가져온 도메인 정보를 이용해 사용자에게 전달할 메시지를 생성합니다. 매개변수로 받은 도메인 이름을 문장 내에 포함시켜 쉽게 사용자에게 표시할 수 있습니다.

예시:

String domainMessage = createDomainMessage(domainName);

결과는 다음과 같은 형식의 문자열이 됩니다:

"현재 시스템의 도메인 이름은 'my-hostname' 입니다."

 

 

 

  • InetAddress 클래스의 활용: InetAddress 클래스는 Java 네트워크 프로그래밍에서 자주 사용되며, IP 주소와 호스트 이름을 다룰 수 있는 다양한 메서드를 제공합니다. 이를 통해 네트워크 상의 장치들 간의 정보를 쉽게 조회하고 관리할 수 있습니다.
  • 실제 응용 예시: 이 코드는 서버 환경에서 서버의 도메인 이름을 동적으로 가져와 로그에 기록하거나 특정 비즈니스 로직에서 도메인 기반의 처리를 수행할 때 유용하게 사용될 수 있습니다.
  • 예외 처리의 중요성: 도메인 정보를 가져오는 과정에서 네트워크가 불안정하거나 호스트 설정이 잘못된 경우 UnknownHostException이 발생할 수 있습니다. 따라서 네트워크 관련 코드를 작성할 때는 항상 예외 처리에 신경 써야 합니다.

 

LIST