안녕하세요, 코린이의 코딩 학습기 채니 입니다.
개인 포스팅용으로 내용에 오류 및 잘못된 정보가 있을 수 있습니다.
네트워크(Network)란?
- 여러 대의 컴퓨터를 통신 회전으로 연결한 것
- 홈 네트워크, 지역 네트워크, 인터넷 등 해당
IP주소
- 네트워크 상에서 컴퓨터를 식별하는 번호
- 네트워크 어댑터(랜카드)마다 할당이 되어 있음 (예 : 123.15.6.255)
포트(Port)
- 같은 컴퓨터 내에서 프로그램을 식별하는 번호
- 클라이언트는 서버 연결 요청 시 IP 주소와 port번호를 알아야함
☞ InetAddress
- 특정 도메인에 대한 ip주소 정보를 관리하는 클래스
- hostname과 ip 매칭 정보를 갖고 있음
- 생성자가 아닌 static 메소드만을 제공
try {
InetAddress naver = InetAddress.getByName("naver.com");
// System.out.println(naver.getHostAddress()); //ip반환
InetAddress[] navers = InetAddress.getAllByName("naver.com");
for(InetAddress n : navers)
System.out.println(n.getHostAddress());
} catch (UnknownHostException e) {
e.printStackTrace();
}
@콘솔출력값
223.130.195.200
223.130.200.107
223.130.195.95
223.130.200.104
naver.com이 갖고 있는 ip주소를 모두 출력해보았습니다.
총 4개의 ip주소를 갖고 있는 것을 확인할 수 있습니다. 해당 ip주소를 가지고 naver.com에 접근할 수 있습니다.
try {
InetAddress naver = InetAddress.getByName("naver.com");
// System.out.println(naver.getHostAddress()); //ip반환
InetAddress[] navers = InetAddress.getAllByName("naver.com");
// for(InetAddress n : navers)
// System.out.println(n.getHostAddress());
InetAddress localhost = InetAddress.getLocalHost();
System.out.println(localhost.getHostAddress());
} catch (UnknownHostException e) {
e.printStackTrace();
}
@콘솔출력값
내IP주소
내 컴퓨터의 IP주소를 가진 InetAddress를 반환해보았습니다.
(cmd - ipconfig 를 통해 내 IPv4를 확인할 수 있음)
☞ URL
- 웹 주소를 parsing(쪼개서)하여 단위별로 관리하는 객체
String address =
"https://docs.oracle.com:443/javase/8/docs/api/java/net/InetAddress.html?id=abcde&mode=true#bookmark";
try {
URL url = new URL(address);
System.out.println(url.getProtocol()); // http, http
System.out.println(url.getHost()); // docs.oracle.com
System.out.println(url.getPort()); // 443
System.out.println(url.getPath()); // /javase/8/docs/api/java/net/InetAddress.html
System.out.println(url.getQuery()); // id=abcde&mode=true
System.out.println(url.getRef()); // bookmark
} catch (MalformedURLException e) {
e.printStackTrace();
}
@콘솔출력값
https
docs.oracle.com
443
/javase/8/docs/api/java/net/InetAddress.html
id=abcde&mode=true
bookmark
URL 클래스를 이용하여 주소를 단위별로 parsing하여 출력해보았습니다.
☞ URLConnection
String address = "https://docs.oracle.com:443/javase/8/docs/api/java/net/InetAddress.html";
try {
URL url = new URL(address);
URLConnection conn = url.openConnection();
try (
BufferedReader br = new BufferedReader(new InputStreamReader(conn.getInputStream()));
BufferedWriter bw = new BufferedWriter(new FileWriter("InetAddress.html"))
) {
String data = null;
while((data = br.readLine()) != null) {
System.out.println(data);
bw.write(data);
bw.newLine();
bw.flush();
}
}
} catch (IOException e) {
e.printStackTrace();
}
@콘솔출력값
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<!-- NewPage -->
<html lang="en">
<head>
<!-- Generated by javadoc (1.8.0_321) on Wed Jan 05 12:59:23 GMT 2022 -->
<title>InetAddress (Java Platform SE 8 )</title>
<meta name="date" content="2022-01-05">
<meta name="keywords" content="java.net.InetAddress class">
<meta name="keywords" content="isMulticastAddress()">
<meta name="keywords" content="isAnyLocalAddress()">
<meta name="keywords" content="isLoopbackAddress()">
<meta name="keywords" content="isLinkLocalAddress()">
<meta name="keywords" content="isSiteLocalAddress()">
<meta name="keywords" content="isMCGlobal()">
...
...
url.openConnection()은 byte로 응답하기 때문에 char기반으로 읽어오기 위하여 InputStreamReader()를 이용하였습니다.
url.openConnection()을 통해 해당 URL의 연결이 되었고 응답이 온 것을 FileReader로 읽어왔습니다.
읽어온 내용을 그대로 출력하여 파일로 다운로드를 받아보았습니다.
'Java > Java' 카테고리의 다른 글
Log4j) Log4j 사용법, 설정파일 (0) | 2022.08.04 |
---|---|
네트워크) TCP 소켓 프로그래밍 (채팅 프로그램 만들기) (0) | 2022.04.11 |
쓰레드) 동기화(Synchronization)이란? (0) | 2022.04.04 |
쓰레드) 쓰레드 컨트롤 (sleep, join, interrupt), Daemon 쓰레드 (0) | 2022.04.03 |
쓰레드) 쓰레드란?, 멀티쓰레드, 장단점, 쓰레드 우선 순위 (0) | 2022.04.03 |