InetAddress
java.net.InetAddress 클래스를 사용해 IP주소를 가져올 수 있다.
주요 메서드
메서드 | 내용 |
byte[] getAddress() | 주소값을 바이트 배열값으로 리턴 |
static InetAddress[] getAllByName(String host) | -도메인 이름으로 IP 가져오기 -IP주소 배열 리턴 |
static InetAddress getByName(String host) | -도메인 이름으로 IP 가져오기 -IP주소 1개 오기 |
String getCanonicalHostName() | host의 정식이름값 리턴 |
String getHostAddress() | host의 IP주소 리턴 |
static InetAddress getLocalHost() | host 이름과 ip주소 리턴 |
boolean isReachable(int timeout) | 해당 주소로 접속가능한지 여부. 시간은 밀리초 |
InetAddress 객체를 이용한 코딩시 UnknownHostException 예외, isReachable() 메서드 등을 사용시 IOException 예외가 발생하기 때문에 예외처리 코드가 필요하다.
아래 코드를 보자
현재 PC의 host 이름과 ip 주소를 확인하는 코드이다
public class Test01 {
public static void main(String[] args) {
try {
//local host의 InetAddress 객체 가져오기
InetAddress loopbackAddress = InetAddress.getLoopbackAddress();
System.out.println("loopbackAddress : "+ loopbackAddress.toString());
InetAddress inad = InetAddress.getLocalHost();
System.out.println("getLocalHost : "+ inad.toString());
System.out.println("hostAddress : "+inad.getHostAddress());
System.out.println("hostName : "+ inad.getHostName());
System.out.println("canonicalHostName : "+ inad.getCanonicalHostName());
System.out.println("isSiteLocalAddress : "+ inad.isSiteLocalAddress());
System.out.println("isLinkLocalAddress : "+ inad.isLinkLocalAddress());
System.out.println("isReachable : "+ inad.isReachable(10));
byte[] byteArr = inad.getAddress();
for(byte b : byteArr){
System.out.println("byte : "+ b);
}
InetAddress[] inetArr = InetAddress.getAllByName("localhost");
for(InetAddress i : inetArr){
System.out.println("inetArr : "+ i);
}
} catch (UnknownHostException e){
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
실행 결과
getLocalHost : DESKTOP-TEST/192.168.156.175 hostAddress : 192.168.156.175 hostName : DESKTOP-TEST canonicalHostName : DESKTOP-TEST isSiteLocalAddress : true isLinkLocalAddress : false isReachable : true byte : [바이트값] byte : [바이트값] byte : [바이트값] byte : [바이트값] inetArr : localhost/127.0.0.1 inetArr : localhost/0:0:0:0:0:0:0:1 loopbackAddress : localhost/127.0.0.1 |
이번에는 외부 사이트의 ip주소를 알아보자.
도메인 이름으로 ip주소를 확인할 수 있는 것은 DNS 덕분이다. DNS(domain name system)는 도메인과 ip를 매칭하는 시스템이다. 우리가 브라우저 주소창에 숫자로 된 ip 주소를 일일이 넣지 않고 영어로 된 주소를 넣어도 해당 주소로 이동할 수 있게 해준다.
아래 코드를 보자
구글의 ip주소를 가져오는 코드이다.
public class Test02 {
public static void main(String[] args) {
try {
String domain = "www.google.com";
InetAddress ia = InetAddress.getByName(domain);
System.out.println("inetAddr : "+ ia.toString());
System.out.println("host ip : "+ ia.getHostAddress());
System.out.println("host name : "+ ia.getHostName());
System.out.println("isReachable : "+ ia.isReachable(1000));
} catch (UnknownHostException e) {
e.printStackTrace();
} catch (IOException e){
e.printStackTrace();
}
}
}
실행 결과
inetAddr : www.google.com/172.217.24.132 host ip : 172.217.24.132 host name : www.google.com isReachable : true |
이번에는 ip주소가 여러개인 경우 주소값을 가져와보자.
네이버의 ip주소를 가져오는 코드이다.
public class Test03 {
public static void main(String[] args) {
try {
String domain = "www.naver.com";
InetAddress[] iaArr = InetAddress.getAllByName(domain);
for(InetAddress i : iaArr){
System.out.println(i.getHostAddress());
}
} catch (UnknownHostException e) {
e.printStackTrace();
}
}
}
실행 결과
223.130.195.95 125.209.222.141 |
'Java > 기본' 카테고리의 다른 글
[Java] 네트워킹 - UDP (0) | 2021.07.31 |
---|---|
[Java] 네트워킹 - TCP (0) | 2021.07.31 |
[Java] IO스트림 사용하기 - 객체 직렬화(Serialize) (0) | 2021.07.25 |
[Java] IO스트림 사용하기 - 스트림 연결하기(Stream chaining) (0) | 2021.07.25 |
[Java] IO스트림 사용하기 - InputStream, OutputStream (0) | 2021.07.22 |