Server 프로그램 분석
제 C Socket Programming 카테고리의 첫 번째 글부터 공부하신 분은
처음에 배웠던 Server 프로그램의 구현과정 전체에 대해 이해했을 것입니다.
이 글에서는 마지막으로 한번 더 분석을 한번 해보는 글입니다.
중간에 모르시는 게 있다면 이전 강좌들을 다시 한번 보시고 오시면 되겠습니다.
-
-
※ 분석 ※
29 행 : 서버 프로그램의 구현과정에서 제일 먼저 해야 할 일인 소켓을 생성하는 것이다.
따라서 29 행에서는 소켓을 생성하고 있다.
이때 생성되는 소켓은 아직 서버 소켓이라 말할 수 없다.
그냥 소켓이란 것이 생성만 되었을 뿐이다.
-
31 ~ 36 행 : 소켓의 주소 할당을 위해 구조체 변수에 주소 정보를 담아 초기화하고
bind 함수를 호출한다.
-
38 행 : 연결 요청 대기상태로 들어가기 위해서 listen 함수를 호출하고 있다.
연결요청 대기 큐(방)의 크기도 5로 설정한다.
이제야29 행에서 생성한 소켓을 서버 소켓이라고 말할 수 있다.
-
41 행 : accept 함수가 호출되었으니, 대기 큐(방)에서 첫 번째로 대기 중인
연결 요청을 참조하여 클라이언트와의 연결을 구성하고
이때 생성된 소켓의 파일 디스크립터를 반환한다.
참고로 이 함수가 호출되었을 때 대기 큐(방)에 연결 요청이 없는 경우
연결요청이 들어올 때까지 accept 함수는 반환하지 않는다.
-
43 ~ 44 행 : write 함수 호출을 통해서 클라이언트에게 데이터를 전송하고 있다.
그러고 나서 close 함수 호출을 통해서 연결을 끊고 있다.
'시작하지 말았어야 했던 것 > (Unix, Linux) C Socket' 카테고리의 다른 글
(리눅스) Client 프로그램 분석 (0) | 2021.02.03 |
---|---|
(리눅스) Client 프로그램의 기본적인 함수호출 순서 (0) | 2021.02.03 |
(리눅스) accept 함수로 클라이언트의 연결 요청 수락하기 (0) | 2021.02.03 |
(리눅스) listen 함수로 연결요청 대기상태로 만들기 (0) | 2021.02.03 |
각 계층들의 개념 LINK, IP, TCP/UDP (0) | 2021.02.03 |