LISTEN
Section: 리눅스 프로그래머 매뉴얼 (2)
Updated: 1993년 6월 23일
Index
Return to Main Contents
이름
listen - 소켓에서 연결들을 기다린다.
사용법
#include <sys/socket.h>
int listen(int s, int backlog);
설명
연결을 받아들이기 위해, 소켓은 우선 들어오는 연결들을 받아들이기 위한
socket(2)을
만들고, 들어오는 연결들에 대한 큐 제한 값을
listen으로
명시하고, 그리고 연결들을
accept(2)으로
받아들인다.
listen
함수는
SOCK_STREAM
이나
SOCK_SEQPACKET
타입의 소켓들에만 적용된다.
backlog
인자는 아직 미결인 연결들에 대한 큐의 늘어날 수 있는 최대 길이를 정의한다.
큐에 도착한 연결 요청들이 꽉 찬다면 클라이언트는
ECONNREFUSED
를 가리키는 에러를 받거나, 만일 하위 프로토콜이 재전송을 지원한다면,
요청은 재시도가 성공되도록 하기 위해 무시된다.
주의
TCP 소켓에서
backlog
인자의 행위는 Linux 2.2에서 바뀌었다.
현재는 완결이 안된 연결 요청에 대한 큐 길이 대신에 accept가 되길
기다리는 연결이
완전히
연결된 소켓들의 큐 길이를 지정한다
완결이 안된 소켓들에 대한 큐의 최대 길이는
tcp_max_syn_backlog
sysctl을 사용하여 설정할 수 있다.
syncookies가 활성화되어 있을 때는, 논리적인 최대 길이는 없게 되며
이 sysctl 설정은 무시된다. 더 많은 정보를 위해서
tcp(7)를
참고하라.
반환값
성공시, 0이 리턴된다. 에러시, -1이 리턴되며
errno
는 적당한 값으로 설정된다.
에러
- EADDRINUSE
-
다른 소켓이 이미 같은 포트를 listen하고 있다.
- EBADF
-
인자
s
가 유효한 디스크립터가 아니다.
- ENOTSOCK
-
인자
s
가 소켓이 아니다.
- EOPNOTSUPP
-
소켓이
listen
작동을 지원하는 타입이 아니다.
호환
단일 Unix, 4.4BSD, POSIX 1003.1g 초안
listen
시스템 함수는 4.2BSD에서 처음 나타났다.
버그
만일 소켓이
AF_INET타입이고
backlog
인자가
상수
SOMAXCONN
보다 크다면(Linux 2.0 & 2.2에서 128), 그것은 예고없이
SOMAXCONN으로
짤려진다.
BSD(몇몇 BSD-기반 시스템)는 backlog를 5로 제한했으므로 호환성을 염두에 둔
응용 프로그램에서는 이 값에 의존하지 마라.
관련 항목
accept(2),
connect(2),
socket(2)
역자
이승식 <zican@freechal.com>, 2002년 6월 5일
정강훈 <skyeyes@soback.kornet.net>, 2000년 7월 2일
Index
- 이름
-
- 사용법
-
- 설명
-
- 주의
-
- 반환값
-
- 에러
-
- 호환
-
- 버그
-
- 관련 항목
-
- 역자
-
This document was created by
man2html,
using the manual pages.
Time: 08:06:58 GMT, March 25, 2004