티스토리 뷰
TCP 서버, 클라이언트의 함수호출 순서 및 관계
# 전체적인 TCP서버, 클라이언트의 함수 호출 순서 및 관계 흐름도
listen([소켓], [접속가능 최대 수])
- 첫번쨰 인자로 들어가는 소켓은 연결요청 대기상태에 두고자 하는 소켓을 의미한다.
- 이 인자로 전달된 소켓이 서버소켓(리스닝소켓)이 된다.
- 두번째 인자로 연결요청 대기 큐의 크기정보 즉, 접속가능 최대 수를 의미한다.
accept([소켓], [주소정보구조체의 주소], [주소정보구조체 크기를 담는 변수의 주소])
- 연결요청을 수락
- accept된 소켓은 클라이언트와 데이터를 주고받을 수 있는 상태가 된다
따라서 주로 서버측에서는 소켓을 2개 생성한다
listen용 소켓 : 서버 문지기 역할
accept될 소켓 : 클라이언트 소켓, 즉 서버와 클라이언트간의 통신을 담당하는 역할
반대로 클라이언트측에서는 서버로 접속시도를 하기위한 소켓만 있으면 된다.
그 소켓이 데이터 송수신까지 담당한다.
서버는 소켓생성 이후 bind, listen함수의 연이은 호출을 통해 대기상태에 들어간다
클라이언트는 connect함수 호출을 통해 연결요청을 시도한다.
클라이언트는 서버소켓의 listen함수 호출 이후에 connect함수 호출이 가능하다.
클라이언트가 connect함수를 호출하기 전에 서버가 accept함수를 먼저 호출 할 수도 있다.
이 경우 클라이언트가 connect함수를 호출할 때까지 서버는 accept함수가 호출된 위치에서 블로킹상태에 놓인다.
'NETWORK' 카테고리의 다른 글
3) TCP / UDP에 대한 이해 (0) | 2018.04.24 |
---|---|
2) 소켓멤버분석 : sockaddr_in구조체 (0) | 2018.04.23 |
1) 소켓멤버분석 : sockaddr_in구조체 (0) | 2018.04.19 |