InetAddress 클래스
- IP 주소를 다룰 때 사용하는 클래스
- 이것이자바다 p.1055
주요메서드
- getByName(), getLocalHost()
- getHostName()
- getHostAddress()
예제: T01 - Naver와 내 컴퓨터
1. Naver 의 IP 정보, Host Name, Host Address
InetAddress naverIp = InetAddress.getByName("www.naver.com");
System.out.println("네이버의 Host Name => " + naverIp.getHostName());
System.out.println("네이버의 Host Address => " + naverIp.getHostAddress());
결과
2. 내 컴퓨터의 IP 정보, Host Name, Host Address
InetAddress localIp = InetAddress.getLocalHost();
System.out.println("내 컴퓨터의 Host Name => " + localIp.getHostName());
System.out.println("내 컴퓨터의 Host Address => " + localIp.getHostAddress());
결과
3. IP 주소가 여러개인 호스트의 정보 가져오기
InetAdress[] naverIps = InetAddress.getAllByName("www.naver.com");
for (InetAddress nIp : naverIps) {
System.out.println(nIp.toString());
}
결과
URL 클래스
- URL(Uniform Resource Locator)
- 인터넷에서 접근 가능한 자원(Resource)의 주소를 표현할 수 있는 형식
- URL을 안다 = 특정 리소스에 접근해서 가져올 수 있다
- URL클래스
- 인터넷에서 존재하는 서버들의 자원에 접근할 수 있는 주소를 관리하는 클래스
- URL을 추상화하여 만든 클래스
- 특정 자원에 접근하기 위한 형식이나 고유한 이름
- URL보다 넓은 의미의 개념
URI 예시
예제: T02 - URL클래스의 인스턴스 메서드들
URL url = new URL("http", "ddit.or.kr", 80, "main/index.html?ttt=123&name=bbb#kkk");
- getProtocol()
- getHost()
- getFile() : 쿼리정보 포함
- getQuery() : ? 이후의 것 (&도 포함)
- getPath() : 쿼리정보 미포함
- getPort()
- getRef() : html의 id와 같은 참조값
- toExternalForm()
- toString()
- toURI().toString()
URLConnection 클래스
- 애플리케이션과 URL간의 통신 연결을 위한 추상클래스
- 원격자원에 접근하는데 필요한 정보를 갖고 있다.
- 원격서버의 헤더 정보, 해당 자원의 길이와 타입정보, 언어 등을 얻어올 수 있다.
- 추상화 클래스이므로 URL클래스의 openConnection()메소드를 이용해 객체 생성
- URLConnection 클래스의 connect()메소드를 호출해야 객체가 완성됨
- 연결 관련 기능을 제공한다. 이 클래스 없으면 연결 못함. URL이랑 URLConnection은 세트!
URL url = new URL("http://java.sun.com");
URLConnection urlCon = url.openConnection();
urlCon.connect();
예제: T03 - Naver 서버의 정보와 파일내용 출력
URL url = new URL("https://www.naver.com/index.html");
- http로 접근하려고 하면 302 (or 307) found 발생 -> https로 들어가야함
URLConnection urlCon = url.openConnection();
System.out.println("Content-Type : " + urlCon.getContentType());
System.out.println("Encoding : " + urlCon.getContentEncoding());
System.out.println("Content : " + urlCon.getContent());
결과
Map<String, List<String>> headerMap = urlCon.getHeaderFields();
Iterator<String> iterator = headerMap.keySet().iterator();
while (iterator.hasNext()) {
String key = iterator.next();
System.out.println(key + " : " + headerMap.get(key));
}
결과
2단계: 해당 호스트의 페이지 내용 (Body) 가져오기
InputStream is = url.openStream();
InputStreamReader isr = new InputStreamReader(is, "utf-8");
int c;
while ((c = isr.read()) != -1) {
System.out.print((char) c);
}
isr.close();
결과
- 어마어마한 html 파일 등장
참고