Manpages

이 름

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 [AT] freechal.com>, 2002년 6월 5일
정 강 훈 <skyeyes [AT] soback.net>, 2000년 7월 2일