글
■ 클라이언트로 부터의연결 요청을 처리 할 수 있는 상태.
(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 |
RECENT COMMENT