[Network Basic] Socket 연결 과정

TCP SERVER SIDE

socket_server_flow
[출처] 윤성우의 열혈 강의

소캣을 생성한 후 bind함수까지 호출이 완료 되면 소캣은 주소가 할당 된다.

listen( )함수를 통해 연결이 들어올 때 까지 대기한다.

클라이언트 측에서 connect 시도가 오면 accept( )함수를 통해 받아들인다

이후 read( ) 와 write( )함수를 통해 데이터를 송수신 하고 close( )함수를 통해 연결을 종료한다.

TCP CLIENT SIDE

socket_client_flow
[출처] 윤성우의 열혈 강의

소캣을 생성한 후 connect( )함수를 이용해 서버에 접속을 요청한다.

read( ) / write( )함수를 통해 데이터를 송수신 하며, close( )함수를 통해 연결을 종료한다.

 

 

 

 

위 내용을 한장의 사진으로 정리하면 아래와 같은 이미지처럼 통신하게 된다.

socket_flow
[출처] 윤성우의 열혈 강의

서버와 클라이언트의 소캣을 생성한 뒤 
서버는 bind를 통해 서버를 열고 listen함수를 이용해
클라이언트가 connect함수를 이용해 접근을 요청해 오길 기다리며
클라이언트가 접근하면 서버는 accept을 통해 접근을 허용하고
read/write를 통해 데이터를 송수신한뒤
close를 통해 소켓 통신을 종료한다.


Echo 서버의 구현

 

Echo_server_flow
[출처] 윤성우의 열혈 강의

Echo 서버는 클라이언트가 connect함수를 통해 접속한 뒤 보낸 내용을 다시 클라이언트에게 보낸 뒤 접속을 끊는다.

이때 옆 이미지와 같은 과정을 거치게 된다.

다만 주의 할 점은 옆 Echo 서버 모델은 동시에 둘 이상의 클라이언트에게 서버스를 제공할 수 있는 모델이 아님을 주의해야 한다.

 

 

 

 

 

 

 

 

글의 문제가 있다면 댓글을 달아 주세요.

이 사이트는 스팸을 줄이는 아키스밋을 사용합니다. 댓글이 어떻게 처리되는지 알아보십시오.