[Java] Ch.16 네트워킹(Networking)

yoons(이윤서)·2024년 7월 21일

[Java] 자바의 정석

목록 보기
14/14

👉🏻 이 글은 자바의 정석(3판) Ch.16을 공부하며 적은 내용입니다.

URL

프로토콜://호스트명:포트번호/경로명/파일명?쿼리스트링#참조

포트번호, 쿼리, 참조는 생략 가능

프로토콜: 자원에 접근하기 위해 서버와 통신하는데 사용되는 통신 규약(http)
호스트명: 자원을 제공하는 서버의 이름
포트번호: 통신에 사용되는 서버의 포트번호
경로명: 접슨하려는 자원이 저장된 서버상의 위치
파일명: 접근하려는 자원의 이름
쿼리(query)
참조(anchor)


  • URL 객체 생성
    URL url = new URL("http://.......html");

URLConnection

어플리케이션과 URL간의 통신연결을 나타내는 클래스의 최상위 클래스로 추상클래스이다. (HttpURLConnection, JarURLConnection이 URLConnection을 상속받아 구현하였다.)
URLConnection을 이용해서 연결하고자 하는 자원에 접근하고 읽고 쓰기를 할 수 있다.

public static void main(String args[]){
        URL url = null;
        BufferedReader input = null;
        String address = "http://www.codechobo.com/sample/hello.html";
        String line = "";

        try{
            url = new URL(address);
            input = new BufferedReader(new InputStreamReader(url.openStream()));

            while((line = input.readLine()) != null){
                System.out.println(line);
            }
        }catch(Exception e){
            e.printStackTrace();
        }
    }

openStream()은 openConnection()을 호출해서 URLConnection을 얻은 다름 여기에 다시 getInputStream()을 호출한 것과 같다.즉, URL에 연결해서 InputStream을 얻어온다.


📌 소켓 프로그래밍

소켓 프로그래밍 : 소켓을 이용한 통신 프로그래밍을 뜻한다.
소켓(socket) : 프로세스간의 통신에 사용되는 양쪽 끝단(endpoint).

java.net패키지를 통해 소켓프로그래밍 지원.
소켓통신에 사용되는 프로토콜에 따라 다른 종류의 소켓을 구현하여 제공.

TCP / UDP

TCP/IP 프로토콜은 이기종 시스템간의 통신을 위한 표준 프로토콜로 프로토콜의 집합이다.

TCP와 UDP는 전송방식이 다르다.

항목TCPUDP
연결방식연결 기반
- 연결 후 통신(전화기)
- 1:1 통신 방식
비연결 기반
- 연결없이 통신(소포)
- 1:1, 1:n, n:n 통신 방식
특징데이터의 경계를 구분하지 않음
신뢰성 있는 데이터 전송
- 전송 순서 보장
- 수신 여부 확인함
- 패킷 관리 필요 없음
UDP보다 전송속도가 느림.
데이터의 경계를 구분함.(datagram)
신뢰성 없는 데이터 전송
- 전송 순서 바뀔 수 있음
- 수신여부 확인 안함
- 패킷 관리해주어야 함.
TCP보다 전송속도 빠름.
관련 클래스Socket
ServerSocket
DatagramSocket
DatagramPacket
MulticastSocket

TCP소켓 프로그래밍

  1. 서버 프로그램에서는 서버소켓을 사용해서 서버 컴퓨터의 특정 포트에서 클라이언트의 연결요청 처리 준비한다.
  2. 클라이언트 프로그램은 접속할 서버의 IP주소와 포트 정보를 가지고 소켓을 생성해서 클라이언트의 소켓과 연결되도록 한다.
  3. 서버소켓은 클라이언트의 연결요청을 받으면 서버에 새로운 소켓을 생성햐서 클라이언트의 소켓과 연결되도록 한다.
  4. 이제 클라이언트의 소켓과 새로 생성된 서버의 소켓은 서버소켓과 관계없이 일대일 통신을 한다.

UCP소켓 프로그래밍

연결지향적인 프로토콜이 아니기 때문에 ServerSocket이 필요하지 않다.
UCP통신에서 사용하는 소켓은 DatagramSocket이며, 데이터를 DatagramPacket에 담아서 전송한다.
DatagramPacket은 헤더와 데이터로 구성되어 있으며, 헤더에는 수신할 호스트의 정보가 저장되어 있다.

profile
개발공부하는 잠만보

0개의 댓글