반응형
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());
}
}
}
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());
}
}
+ URL과 URI 차이점
URI : 식별자
ex) elancer.co.kr
URL : 식별자+위치
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("----------------------------------------------");
}
}
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);
}
}
}
반응형
'자바' 카테고리의 다른 글
[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 |