tail head cat sleep
QR code linking to this page

Man page  — LISTEN

명칭

listen – 소켓상의 접속을 리슨 한다

내용

프로그램 라이브러리

Standard C Library (libc, -lc)

서식

#include <sys/types.h>
#include <sys/socket.h>

int
listen(int s, int backlog);

해설

socket(2) 그리고 최초로 소켓이 작성되어 착신 접속을 받아들일 의사 및 착신 접속용의 기다리는 행렬 한계가 listen() 그리고 지정된 후, 접속이 accept(2) 그리고 받아들여집니다. listen() 호출은, 타입이 SOCK_STREAM 또는 SOCK_SEQPACKET 의 소켓에만 적용됩니다.

backlog 파라미터는, 연기중의 접속의 기다리는 행렬을 늘릴 때의 최대장을 정의합니다. 기다리는 행렬이 만배 때에 접속 요구가 도착하면(자), 클라이언트는 ECONNREFUSED (을)를 나타내는 에러를 수신할 가능성이 있습니다. TCP 의 경우는, 접속은 입다물고 떨어뜨려집니다.

FreeBSD 4.5 이전에 syncache 가 도입될 때까지는, backlog 파라미터는 불완전한 접속의 기다리는 행렬의 길이도 정의하고 있었습니다. 이 기다리는 행렬에는, TCP 의 3 웨이한드시크를 완료시킬 수 있도록 처리중의 TCP 소켓이 보관 유지되고 있습니다. 이러한 불완전한 접속은, 현재 모두 syncache 에 보관 유지되어 이것은 기다리는 행렬의 길이에 영향을 받지 않습니다. backlog 값을 늘리는 것으로 서비스 불능 공격에 대처할 필요는, 이미 없습니다.

sysctl(3) MIB 변수 " kern.ipc.somaxconn" 하 backlog 의 하드 제한을 지정합니다. kern.ipc.somaxconn 보다 큰 값, 또는 0 보다 작은 값이 지정되어 있는 경우, backlog 의 지정은 무시되어 kern.ipc.somaxconn 의 값으로 됩니다.

ACCEPT 필터와의 상호작용

소켓에 대해서 accept 필터를 사용하면(자), 접속제인 것의 accept 필터의 기준에 아직 합치하지 않는 소켓을 보관 유지하기 위한 제 2 의 기다리는 행렬이 사용됩니다. 한번 기준에 합치하면, 이러한 소켓은 접속 완료제의 기다리는 행렬에 이동되어 accept()의 대상이 됩니다. 제 2 의 기다리는 행렬이 만배 때에 신규 접속이 도착하면(자), accept 필터의 기준에 아직 합치하지 않는 최고의 소켓이 종료됩니다.

이 제 2 의 기다리는 행렬은, 제 1 의 listen 기다리는 행렬과 같이, backlog 파라미터에 따라 크기가 바뀝니다.

반환값

The listen function returns the value 0 if successful; otherwise the value -1 is returned and the global variable errno is set to indicate the error.

에러

listen() (은)는 다음의 경우에 처리를 실패합니다.
[EBADF]
  인수 s 하지만 유효한 기술자가 아닙니다.
[ENOTSOCK]
  인수 s 하지만 소켓이 아닙니다.
[EOPNOTSUPP]
  소켓이, listen() (을)를 서포트하는 타입이 아닙니다.

관련 항목

accept(2), accept_filter(9) [영어], connect(2), socket(2), sysctl(3), sysctl(8)

역사

listen() 함수는 BSD 4.2 그리고 등장했습니다. 실행시에 최대 backlog (을)를 설정할 수 있는 기능, 및 허용 할 수 있는 최대치를 지정하는 경우에 부의 backlog (을)를 사용하는 기능은 FreeBSD 2.2 그리고 등장했습니다.

LISTEN (2) November 3, 1995

tail head cat sleep
QR code linking to this page


Ben Bullock이 유닉스 매뉴얼 페이지에서 서비스에 대한 의견을 주시기 바랍니다. Privacy policy.

Ken Thompson was once asked by a reporter what he would have changed about Unix if he had it all to do over again. His answer: “I would spell creat with an ‘e.'”