-
Java | Network (1) InetAddress & URLJAVA/JAVA 2020. 2. 11. 17:32
Network
동일한 데이터 전송 프로토콜을 사용해서 통신하는 일련의 장치들을 총칭하는 것
Protocol
여러 장치들이 서로 교신하기 위해 사용하는 의사소통 방식
TCP/IP
컴퓨터간 대화에 필요한 통신 규약을 의미하는 프로토콜 중 현재 표준이 되는 프로토콜
- TCP: Transmission Control Protocol
- IP: Internet Protocol
Network Class
java.net 패키지에서 network와 관련된 클래스를 제공함
InetAddress, URL, Socket, ServerSocket etc.접속하고자 하는 경로가 실제로 존재하지 않을 수도 있기 때문에
반드시 예외처리를 해야함
InetAddress
java.net.InetAddress
ip 정보를 가지고 있는 네트워크 클래스
InetAddress Method
메소드 설명 InetAddress getByName(String host) host는 도메인 주소를 사용하며 해당 host의 도메인 주소와 IP주소를 담은 InetAddress 객체 반환 InetAddress[ ] getAllByName(String host) host의 모든 도메인 주소/IP 주소를 담은 InetAddress 객체를 배열로 반환 InetAddress getLocalHost() Local Host의 주소를 반환
Local Host: 현재 사용 중인 컴퓨터String getHostAddress() InetAddress 객체에 담긴 IP주소를 String으로 반환 String getHostName() 해당 InetAddress 객체에 담긴 host 이름 반환
예제
package j200211; import java.net.*; public class NetworkTest { public static void main(String[] args) throws Exception { // 하나의 ip 주소를 저장 InetAddress ia = null; // www.daum.net의 도메인, IP 주소를 가진 객체 반환 ia = InetAddress.getByName("www.daum.net"); // ia 객체의 IP 주소 반환 System.out.println(ia.getHostAddress()); // 211.231.99.80 // 두 대 이상의 컴퓨터 주소 관리 InetAddress ia2[]; // www.daum.net의 모든 도메인, IP 주소 저장 ia2 = InetAddress.getAllByName("www.daum.net"); // 확장 for문, 출력 for (InetAddress i : ia2) { System.out.println(i.getHostAddress()); } /* 211.231.99.80 211.231.99.17 */ // 자기 컴퓨터 정보를 담은 객체 생성 InetAddress host = InetAddress.getLocalHost(); // host 이름 출력 System.out.println(host.getHostName()); // XXX-pc // host IP 주소 출력 System.out.println(host.getHostAddress()); // xxx.xxx.x.xxx } }
URL Class
java.net.URL
URL(Uniform Resource Locator): 웹 상의 자원을 가리키는 pointer
자원은 파일, 폴더, 쿼리와 같은 객체 등이 포함됨
URL 생성자
생성자 설명 URL(String spec) spec(http://~)으로부터 URL 객체 생성
URL Method
메소드 설명 InputStream openStream() 해당 URL 객체와 연결을 생성하고 연결을 읽어들이는 InputStream 객체 반환
예제
package j200211; import java.io.*; import java.net.*; public class URLTest { public URLTest(String s) throws Exception { // URl 클래스 객체 생성 URL url = new URL(s); // 접속한 컴퓨터의 스트림 이용 InputStream in = url.openStream(); // 데이터를 가져와서 저장 후 콘솔에 출력 String ss; BufferedReader br = new BufferedReader(new InputStreamReader(in)); // 데이터를 계속 읽어들일 수 있는 상태라면 콘솔에 출력 while ((ss = br.readLine()) != null) { System.out.println(ss); // 파일에 출력: FileOutputStream, FileWriter } // 스트림 사용 후 메모리 해제 in.close(); br.close(); } public static void main(String[] args) throws Exception { // URLTest 객체 생성 URLTest ult = new URLTest("http://www.naver.com"); /* <html> <head><title>302 Found</title></head> <body> .... */ } }
※ 해당 사이트에서 차단한 경우에는 결과가 위와 같이 출력됨
차단하지 않은 경우에는 전체 코드 출력
Network의 개념에 대해서 간단히 알아보고
자바에서 제공하는 java.net 패키지의 InetAddress와 URL 클래스에 대해 살펴보았습니다.
InetAddress 클래스는 접속 host의 IP주소와 같은 정보를 얻어오는 데에 유용한 클래스이며
URL 클래스는 접속한 사이트의 자원을 얻어올 때 사용 가능한 클래스입니다.
URL 클래스로 자원을 얻어올 때는 openStream() 메소드로 접속한 컴퓨터의 스트림을 열고
거기에 입출력 스트림을 연결해서 사용해야 한다는 점을 알아두면 좋을 것 같습니다.'JAVA > JAVA' 카테고리의 다른 글
Java | Socket & Thread 채팅 프로그램 만들기 (1) 2020.02.12 Java | Network (2) ServerSoket & Socket (0) 2020.02.11 Java | Singleton Pattern 싱글톤 패턴 (0) 2020.02.11 Java | I/O RandomAccessFile (0) 2020.02.11 Java | Thread (3) Synchronization 동기화 (1) 2020.02.11