[Java] 접속한 서버 IP 확인 및 InetAddress 클래스 이해하기

    내 서버의 아이피(IP)를 몰라서 코딩을 하는 경우는 없겠지만, 간혹 IP를 기반으로 프로그램을 다르게 하는 경우가 있습니다. 이럴 때 사용하는 자바 클래스로 InetAddress가 있는데 이를 통해 내가 현재 사용하는 컴퓨터의 IP를 알 수 있거나, 다른 사이트의 IP를 확인할 수 있습니다.

     

    [Java] 접속한 서버 IP 확인 및 InetAddress 클래스 이해하기


    InetAddress

    InetAddress는 인터넷 프로토콜(Internet Protocol, IP) 주소를 나타냅니다. IP 주소는 UDP 및 TCP와 같은 프로토콜이 구죽되는 하위 수준 프로토콜인 IP에서 사용하는 32bit 또는 128bit의 부호 없는 숫자입니다. 

     

    INetAddress의 인스턴스는 IP 주소와 가능한 해당 호스트 이름으로 구성됩니다.(호스트 이름으로 구성되었는지 또는 이미 역 호스트 이름 확인을 수행했는지 여부에 따라 다름)

     

    InetAddress의 주요 메소드

    Static Methods

    Type Methods 설명
    InetAddress[] getAllByName(String host) 호스트 이름이 주어지면 시스템에 구성된 이름 서비스를 기반으로 해당 IP 주소 배열을 반환합니다.
    InetAddress getByAddress(byte[] addr) InetAddress원시 IP 주소가 지정된 개체를 반환합니다 .
    InetAddress getByAddress(String host, byte[] addr) 제공된 호스트 이름과 IP 주소를 기반으로 InetAddress를 만듭니다.
    InetAddress getByName(String host) 호스트 이름이 주어지면 호스트의 IP 주소를 결정합니다.
    InetAddress getLocalHost() 로컬 호스트의 주소를 반환합니다.
    InetAddress getLoopbackAddress() 루프백 주소를 반환합니다.

     

    Instance Methods

    Type Methods 설명
    byte[] getAddress() InetAddress 이 개체 의 원시 IP 주소를 반환 합니다.
    static InetAddress getByName(String host) 호스트 이름이 주어지면 호스트의 IP 주소를 결정합니다.
    String getCanonicalHostName() 이 IP 주소에 대한 정규화된 도메인 이름을 가져옵니다.
    String getHostAddress() 텍스트 표현으로 IP 주소 문자열을 반환합니다.
    String getHostName() 이 IP 주소의 호스트 이름을 가져옵니다.
    boolean isAnyLocalAddress() 와일드카드 주소에 InetAddress가 있는지 확인하는 유틸리티 루틴입니다.
    boolean isLinkLocalAddress() InetAddress가 링크 로컬 주소인지 확인하는 유틸리티 루틴입니다.
    boolean isLoopbackAddress() InetAddress가 루프백 주소인지 확인하는 유틸리티 루틴입니다.
    boolean isMCGlobal() 멀티캐스트 주소에 전역 범위가 있는지 확인하는 유틸리티 루틴입니다.
    boolean isMCLinkLocal() 멀티캐스트 주소에 링크 범위가 있는지 확인하는 유틸리티 루틴입니다.
    boolean isMCNodeLocal() 멀티캐스트 주소에 노드 범위가 있는지 확인하는 유틸리티 루틴입니다.
    boolean isMCOrgLocal() 멀티캐스트 주소에 조직 범위가 있는지 확인하는 유틸리티 루틴입니다.
    boolean isMCSiteLocal() 멀티캐스트 주소에 사이트 범위가 있는지 확인하는 유틸리티 루틴입니다.
    boolean isMulticastAddress() InetAddress가 IP 멀티캐스트 주소인지 확인하는 유틸리티 루틴입니다.
    boolean isReachable(int timeout) 해당 주소에 연결할 수 있는지 테스트합니다.
    boolean isReachable(NetworkInterface netif, int ttl, int timeout) 해당 주소에 연결할 수 있는지 테스트합니다.
    boolean isSiteLocalAddress() InetAddress가 사이트 로컬 주소인지 확인하는 유틸리티 루틴입니다.

     

     

    사용하는 컴퓨터의 아이피 및 호스트 확인

    package com.tistory.needneo;
    
    import java.net.InetAddress;
    import java.net.UnknownHostException;
    
    public class Main {
    
        public static void main(String args[]) throws UnknownHostException {
            InetAddress ipAddress = InetAddress.getLocalHost();
    
            System.out.println("현재 아이피 : " + ipAddress.getHostAddress());
            System.out.println("현재 호스트명 : " + ipAddress.getHostName());
        }
    }

     

    실행 결과

    현재 아이피 : 10.xx.x.xxx
    현재 호스트명 : DESKTOP-XXXXXXX

     

    사이트의 아이피 확인

    package com.tistory.needneo;
    
    import java.net.InetAddress;
    import java.net.UnknownHostException;
    
    public class Main {
    
        public static void main(String args[]) throws UnknownHostException {
            InetAddress ipAddress = InetAddress.getByName("www.coupang.com");
    
            System.out.println("현재 아이피 : " + ipAddress.getHostAddress());
            System.out.println("현재 호스트명 : " + ipAddress.getHostName());
        }
    }

     

    실행결과

    현재 아이피 : 23.201.37.176
    현재 호스트명 : www.coupang.com

     

    참고자료

    [1] https://docs.oracle.com/javase/8/docs/api/java/net/InetAddress.html

     

    반응형

    댓글

    Designed by JB FACTORY