ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Java | Network (1) InetAddress & URL
    JAVA/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() 메소드로 접속한 컴퓨터의 스트림을 열고
    거기에 입출력 스트림을 연결해서 사용해야 한다는 점을 알아두면 좋을 것 같습니다.

    댓글

Designed by Tistory.