■ 클라이언트로 부터의연결 요청을 처리 할 수 있는 상태.

(1) listen() - 연결 요청 대기

○ 함수원형
  int listen(int sockfd, int backlog)

○ 리턴 값
  성공 시 : 0, 실패 시 : -1

- sockfd : 클라이언트로부터 연결 요청을  받아들이기 위한 소켓 파일 디스크립터
- backlog : 연결요청 대기 큐의 크기에 대한 설정

=> listen() 함수의 첫번째 인자로 전달된 소켓을 가리켜 서버 소켓이라고 한다.


(2) 연결요청 대기상태 와 대기큐

- 연결 요청 대기 상태 : 큐와 서버 소켓이 완전히 준비되어 클라이언트의 연결 요청을 받아들일 수 있는 상태.
- 연결 요청 대기 큐 : 연결 요청을 대기 시킬 수 있는 일종의 대기실.

=> listen() 함수 호출을 성공하게 되면, 이제 여러 클라이언트들이 연결을 요청해 올 것이고, 모든 연결 요청은 서버가
    미리 만들어 놓은 대기실로 들어가 순서대로 연결요청이 수락될 때까지 기다려야 한다.



(3) 서버와 클라이언트 소켓의 상태 변화
: listen() 함수를 호출하면 서버 소켓 상태는 CLOSE 에서 LISTEN 상태로 변경되고, 연결을 요청한 클라이언트 소켓은 SYN_RCVD 상태에서 3-way-handshaking을 완료하고 ESTABLISHED 상태가 된다.


'P rogramming > Socket' 카테고리의 다른 글

8. 연결요청 - connect()  (7) 2012.03.06
7. 연결요청 수락 - accept()  (1) 2012.03.06
5. 소켓옵션 - setsockopt()  (3) 2012.03.02
4. 주소정보 할당 - bind()  (1) 2012.02.29
3. 주소 정보의 표현 (sockaddr / sockaddr_in)  (4) 2012.02.28
by 민트앤라떼 2012. 3. 6. 13:54