자바 TCP 소켓 통신(ServerSocket과 Socket)

yeon·2021년 3월 31일

서버와 클라이언트의 통신 과정

  1. 서버에서 서버 소켓을 열고, 특정 포트에서 클라이언트의 연결을 기다린다.
  2. 클라이언트는 접속할 서버의 IP주소와 포트 정보를 가지고 소켓을 생성해서 서버에 연결을 요청한다.
  3. 서버 소켓은 클라이언트의 요청이 오면, 서버에 새로운 소켓을 생성한다. 그리고 클라이언트의 소켓과 연결한다.
  4. 클라이언트의 소켓과 새로 생성된 서버의 소켓이 일대일 통신을 한다. 서버소켓은 클라이언트 소켓과 통신하지 않는다.
  • 실질적인 데이터 통신은 서버소켓과 관계없이 소켓과 소켓간에 이루어짐
  • 소켓들이 데이터를 주고 받는 연결 통로는 입출력 스트림이다. 두개의 스트림, InputStream과 OutputStream을 갖고 있고, 상대편 소켓의 스트림과 교차 연결된다.

Socket vs ServerSocket

  • Socket : 프로세스간 통신 담당, InputStream과 OutputStream을 갖고 있다. 두 스트림을 통해 프로세스간의 통신(입출력)이 이뤄진다.
  • ServerSocket : 포트와 연결되어, 클라이언트의 요청을 기다린다. 요청이 오면, Socket을 생성해서 이 소켓과 클라이언트 소켓간의 통신이 이뤄지도록 한다.

참고 : 자바의 정석 네트워킹 파트

0개의 댓글