📌 Socket 통신 이란?
- Socket이란 두 프로그램이 서로 데이터를 주고 받을 수 있는 양쪽에 생성되는 통신 단자이다.
- Socket 통신이란 서버와 클라이언트 양방향 연결이 이루어지는 통신으로, 클라이언트도 서버로 요청을 보낼 수 있고 서버도 클라이언트로 요청을 보낼 수 있는 통신이다.
📌 Socket 통신 흐름
📍 서버 (Server)
클라이언트 소켓의 연결 요청을 대기하고, 연결 요청이 오면 클라이언트 소켓을 생성하여 통신이 가능하게 한다.
- socket( )함수를 이용하여 소켓을 생성한다.
- bind( )함수로 ip와 port 번호를 설정한다.
- listen( )함수로 클라이언트의 접근 요청에 수신 대기열을 만들어 몇 개의 클라이언트를 대기시킬지 결정한다.
- accept( )함수를 사용하여 클라이언트와의 연결을 기다린다.
📍 클라이언트 (Client)
실제로 데이터 송수신이 일어나는 것은 클라이언트 소켓이다.
- socket( )함수로 가장 먼저 소켓을 연다.
- connect( )함수를 이용하여 통신할 서버의 설정된 ip와 port 번호에 통신을 시도한다.
- 통신 시도 시, 서버가 accept( )함수를 이용하여 클라이언트의 socket descriptor를 반환한다.
- 이를 통해 클라이언트와 서버가 서로 read( ), write( ) 하며 통신한다. (이 과정을 반복한다.)
📌 Socket 통신 특징
- 서버와 클라이언트가 계속 연결을 유지하는 양방향 통신
- 서버와 클라이언트가 실시간으로 데이터를 주고 받는 상황이 필요한 경우 사용
- 실시간 동영상이나 streaming, 온라인 게임 등과 같은 경우 자주 사용
<참고 : https://kotlinworld.com/75
https://helloworld-88.tistory.com/215 >