반응형

 

InetAddress 클래스

 

: IP주소 정보를 다루기 위한 클래스

 

getByName()메서드는 http://www.naver.com 과 같은 머신 이름이라 IP주소를 파라미터로 사용하여 유효한 InetAddress 객체를 생성한다.
IP주소 자체를 넣으면 주소 구성 자체의 유효성 정도만 체크가 이루어진다.

 

 

package kr.or.ddit.basic;

import java.io.IOException;
import java.net.InetAddress;
import java.net.UnknownHostException;

public class InetAddressTest {
	
	public static void main(String[] args) throws IOException {
		
		// InetAddress 클래스 => IP주소 정보를 다루기 위한 클래스
		
		// getByName()메서드는 www.naver.com 또는 SEM-PC 등과 같은 머신 이름이라
		// IP주소를 파라미터로 사용하여 유효한 InetAddress 객체를 생성한다.
		// IP주소 자체를 넣으면 주소 구성 자체의 유효성 정도만 체크가 이루어진다.
		
		// 네이버 사이트의 IP정보 가져오기
		InetAddress naverIp = InetAddress.getByName("www.naver.com");
		System.out.println("Host Name => " + naverIp.getHostName());
		System.out.println("Host Address => " + naverIp.getHostAddress());
		System.out.println();
		
		// 자기 자신 컴퓨터의 IP정보 가져오기
		InetAddress localIp = InetAddress.getLocalHost();
		System.out.println("내 컴퓨터의 Host Name => " + localIp.getHostName());
		System.out.println("내 컴퓨터의 Host Address => " + localIp.getHostAddress());
		
		
		// IP주소가 여러개인 호스트의 정보 가져오기
		InetAddress[] naverIps = InetAddress.getAllByName("www.naver.com");
		
		for (InetAddress iAddr : naverIps) {
			System.out.println(iAddr.toString());
		}
	}
}

 

결과 화면1

 

 

 

URL 클래스

 

: 인터넷상에 존재하는 서버들의 자원에 접근할 수 있는 주소를 관리하기 위한 클래스

 

 

getProtocol() protocal 출력
getHost() host 출력
getPort() port 번호 출력
getQuery() query 출력
getFile() file명 출력
getPath() path 출력
getRef() ref
toExternalForm() URL 주소 출력
toString()
toURI()

 

 

package kr.or.ddit.basic;

import java.io.IOException;
import java.net.MalformedURLException;
import java.net.URISyntaxException;
import java.net.URL;

public class URLTest {
	public static void main(String[] args) throws IOException, URISyntaxException {
		
		// URL 클래스 => 인터넷상에 존재하는 서버들의 자원에 접근할 수 있는 주소를 관리하기 위한 클래스
		
		URL url = new URL("http", "ddit.or.kr", 80, "/main/index.html?ttt=123#kkk");
		
		System.out.println("전체 URL주소 : " + url.toString());
		
		System.out.println("protocal : " + url.getProtocol());
		System.out.println("host : " + url.getHost());
		System.out.println("port : " + url.getPort());
		System.out.println("query : " + url.getQuery());
		System.out.println("file : " + url.getFile());
		System.out.println("path : " + url.getPath());
		System.out.println("ref : " + url.getRef());
		System.out.println();
		
		System.out.println(url.toExternalForm());
		System.out.println(url.toString());
		System.out.println(url.toURI().toString());
		
	}
}

 

결과 화면2

 

URL 구성

 

 

 

+ URL과 URI 차이점

 

URI : 식별자

ex) elancer.co.kr

 

URL : 식별자+위치

ex) https://www.elancer.co.kr

 

 

 

URL Connection

 

 

http 프로토콜 : www상에서 정보를 주고 받을 수 있는 프로토콜로, HTML 문서를 주고 받는데 사용한다.

 

 

package kr.or.ddit.basic;

import java.io.IOException;
import java.net.URL;
import java.net.URLConnection;
import java.util.Iterator;
import java.util.List;
import java.util.Map;

public class URLConnectionTest {
	public static void main(String[] args) throws IOException {
		
		// URLConnection => 애플리케이션과 URL간의 통신연결을 위한 추상 클래스
		
		// 특정서버(ex: 네이버)에 접속하여 대문페이지 가져오기
		URL url = new URL("https://www.naver.com/index.html");
		
		// URLConnection 객체 생성하기
		URLConnection urlConn = url.openConnection();
		
		// 기본적인 헤더정보 출력하기
		System.out.println("Content-Type : " + urlConn.getContentType());
		System.out.println("Encoding : " + urlConn.getContentEncoding());
		System.out.println("Content : " + urlConn.getContent());
		System.out.println();
		
		// 전체 Header정보 출력하기
		Map<String, List<String>> headerMap = urlConn.getHeaderFields();
		
		Iterator<String> iter = headerMap.keySet().iterator();
		while (iter.hasNext()) {
			String key = iter.next();
			System.out.println(key + " : " + headerMap.get(key));
		}
		System.out.println("----------------------------------------------");
	}
}

 

결과 화면3

 

 

package kr.or.ddit.basic;

import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.URL;
import java.net.URLConnection;
import java.util.Iterator;
import java.util.List;
import java.util.Map;

public class URLConnectionTest {
	public static void main(String[] args) throws IOException {
		
		// URLConnection => 애플리케이션과 URL간의 통신연결을 위한 추상 클래스
		
		// 특정서버(ex: 네이버)에 접속하여 대문페이지 가져오기
		URL url = new URL("https://www.naver.com/index.html");
		
		// URLConnection 객체 생성하기
		URLConnection urlConn = url.openConnection();
		
		// 기본적인 헤더정보 출력하기
		System.out.println("Content-Type : " + urlConn.getContentType());
		System.out.println("Encoding : " + urlConn.getContentEncoding());
		System.out.println("Content : " + urlConn.getContent());
		System.out.println();
		
		System.out.println("----------------------------------------------");
		
		InputStream is = (InputStream) urlConn.getContent();
		
		InputStreamReader isr = new InputStreamReader(is, "UTF-8");
		
		int data = 0;
		while((data = isr.read()) != -1) {
			System.out.print((char)data);
		}
		
	}
}

 

결과 화면4 : url을 통해 사이트의 소스와 정보를 가져올 수 있음

 

 

반응형

'자바' 카테고리의 다른 글

[Java 고급] 24장 TCP 방식의 통신  (0) 2024.02.16
[Java 고급] 23장 소켓  (1) 2024.02.15
[Java 고급] 21장 W3C DOM, 유스케이스 다이어그램  (0) 2024.02.13
[Java 고급] 20장 로깅  (0) 2024.02.08
[Java 고급] 19장 Mybatis  (0) 2024.02.07