[Java] 접속한 서버 IP 확인 및 InetAddress 클래스 이해하기
- Language/Java
- 2022. 6. 27.
내 서버의 아이피(IP)를 몰라서 코딩을 하는 경우는 없겠지만, 간혹 IP를 기반으로 프로그램을 다르게 하는 경우가 있습니다. 이럴 때 사용하는 자바 클래스로 InetAddress가 있는데 이를 통해 내가 현재 사용하는 컴퓨터의 IP를 알 수 있거나, 다른 사이트의 IP를 확인할 수 있습니다.
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
반응형
'Language > Java' 카테고리의 다른 글
[Java] Javac로 직접 컴파일(Compile) 하기 (0) | 2022.07.17 |
---|---|
[Java] 컴파일(Compile) 개념과 자바 컴파일 이해하기 (0) | 2022.07.06 |
[Java] 문자열 비교, equals()와 ==의 차이 이유 (0) | 2022.03.31 |
[Java] 문자열 자르기, substring 사용법 및 예제 (0) | 2022.03.17 |
[Java] 파일 생성, 읽기 및 캐릭터셋(UTF-8) 설정 (0) | 2022.03.07 |