'programming'에 해당되는 글 387건

  1. 2017.05.25 listen

listen

programming/C_C++ 2017. 5. 25. 14:33
반응형

LISTEN(2)                  리눅스 프로그래머 매뉴얼                  LISTEN(2)

이름
       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일

BSD Man Page                    1993년 6월 23일                      LISTEN(2)

반응형
Posted by 공간사랑
,