3. Socket
  (1) 설명
 <1> 사전적의미 : (전구의) 소켓 -> 꽂는 구멍
 <2> 프로그램적의미 : 네트웍 통신을 위한 디바이스간의 통신 경로(연결객체)
       사용자에게 네트워크에 접근할 수 있게 인터페이스(통로/체널)를 제공하는 클래스

  (2) 종류
 <1> SOCK_STREAM (연결지향 동기통신-전화,채팅,메신져)
  -> 스트림을 주고 받을 수 있게 하는 Socket 으로 양방향 통신이 가능한 소켓
     (기본 프로토콜 : TCP[Transfer Control Protocol]

   [1]java.net.Socket
  1) 주요메소드
   - Socket(String host, int port) : 생성자
     -> 서버의 호스트와, 포트값을 받아서 서버에 연결하기 위한 연결 객체를 생성한다.
   - getInputStream()
     -> 연결된 다른소켓쪽에서 보내진 데이터를 받아들인다.
   - getOutputStream()
     -> 연결된 다른소켓쪽으로 데이터를 보낸다.
   (ex: 002day/NET4~5Client.java)


   (ex: 003day/NET6~7Client.java - 파일전송)
   (ex: 004day/NET8~9Client.java - 멀티채팅)

   [2] java.net.ServerSocket
  1) 설명 : 기다리다가 연결을 시도하는 요청을 받으면 연결지향 Socket(SOCK_STREAM)을
      생성시켜주는 객체를 모델링한 클래스
   - ServerSocket(int port)
     -> 서버소캣 생성자로 파라미터로 포트번호를 받는다. 해당 포트로 연결을 준비한다.
     -> 포트번호는 0~65535 가 사용가능하며 0~1023(Well-Known Port) 까지는
     OS에서 사용하고있는 포트라 사용불가(충돌일어남)
  2) 주요메소드   
   - accept()
     (socket)까지 만들어지는 연결을 듣고 그것을 받아들인다.
     -> 클라이언트와 연결통로를 만들고 연결될때까지 스레드가 대기(sleep).(소켓 객체리턴)
   - close()
     -> 연결객체이므로 close해주어야 한다.
   (ex: 002day/NET4~5Server.java)


   (ex: 003day/NET6~7Server.java - 파일전송)
   (ex: 004day/NET8~9Server.java - 멀티채팅)

 <2> SOCK_DGRAM (비연결지향 비동기 통신-편지,이메일...)
  -> 데이터그램 통신용 소켓으로 양방향 통신이 가능한 소켓
     (기반프로토콜 : UDP[User Datagram Protocol]

 <3> SOCK_RAW (ping 프로그램)
  -> 데이터 전송의 높은 수준의 제어를 필요로 할 때 사용하는 Socket 으로 자바에서는
     보안상 지원하지 않는다.
     (기반프로토콜 : ICMP[Internet Control Messege Protocol])

  (3) 통신방식
    <1> TCP방식의 Socket 통신
   [1] 연결 지향 통신 방식
   [2] 전화에 비유(신뢰적)
   [3] ServerSocket, Socket 을 이용한 프로그램
   [4] 프로그램 절차
  << Server측 >>
   ServerSocket ss 생성
   ss.accept()
   Socket s 생성

  << Client측 >>
   Socket s 생성

  << 통신 >>
   Socket s(서버측) <-- 메세지 --> Socket s(클측)

   cf) 메세지 : 기본형, 레퍼런스형(Serializable - ex:String)
   [5] 사용예
  - 채팅, 실시간 데이터 전송, 메신져, 네트웍게임, PtoP
 
 <2> UDP방식의 DatagramSocket 통신
   [1] 비연결 지향 통신 방식
   [2] 편지에 비유(비신뢰적)
   [3] DatagramSocket, DatagramPacket 을 이용해서 프로그램
   [4] 프로그램 절차
  << Server측 >>
   DatagramSocket ds 생성 // 편지함
   DatagramPacket dp 생성 // 편지(틀)
   ds.receive(dp), ds.send(dp)

  << Client측 >>
   DatagramSocket ds 생성 // 편지함
   DatagramPacket dp 생성 // 편지(틀)
   ds.receive(dp), ds.send(dp)

   [5] 사용예
  - 인터넷방송, 이메일, 뉴스그룹, 쪽지
  (ex: 006day/UDP1~3.java)

Posted by Duritz

공지사항

Yesterday
Today
Total
05-18 14:19

달력

 « |  » 2024.5
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31