다음을 통해 공유


LPWSPLISTEN 콜백 함수(ws2spi.h)

LPWSPListen 함수는 들어오는 연결을 수신 대기하는 소켓을 설정합니다.

구문

LPWSPLISTEN Lpwsplisten;

int Lpwsplisten(
  [in]  SOCKET s,
  [in]  int backlog,
  [out] LPINT lpErrno
)
{...}

매개 변수

[in] s

연결되지 않은 바인딩된 소켓을 식별하는 설명자입니다.

[in] backlog

보류 중인 연결의 큐가 증가할 수 있는 최대 길이입니다. 이 값이 SOMAXCONN인 경우 서비스 공급자는 백로그를 최대 "적절한" 값으로 설정해야 합니다. 실제 백로그 값을 확인하는 표준 프로비저닝은 없습니다.

[out] lpErrno

오류 코드에 대한 포인터입니다.

반환 값

오류가 발생하지 않으면 LPWSPListen은 0을 반환합니다. 그렇지 않으면 SOCKET_ERROR 값이 반환되고 lpErrno에서 특정 오류 코드를 사용할 수 있습니다.

오류 코드 의미
WSAENETDOWN
네트워크 하위 시스템이 실패했습니다.
WSAEADDRINUSE
소켓의 로컬 주소가 이미 사용 중이며 SO_REUSEADDR 주소를 다시 사용할 수 있도록 소켓이 표시되지 않았습니다. 이 오류는 일반적으로 Bind 시 발생하지만 **bind**가 부분적으로 와일드카드 주소(ADDR_ANY 포함)에 있고 이 함수 당시 특정 주소를 커밋해야 하는 경우 이 함수까지 지연될 수 있습니다.
WSAEINPROGRESS
콜백이 진행 중일 때 함수가 호출됩니다.
WSAEINVAL
소켓이 LPWSPBind에 바인딩되지 않았습니다.
WSAEISCONN
소켓이 이미 연결되어 있습니다.
WSAEMFILE
더 이상 소켓 설명자를 사용할 수 없습니다.
WSAENOBUFS
사용할 수 있는 버퍼 공간이 없습니다.
WSAENOTSOCK
설명자가 소켓이 아닙니다.
WSAEOPNOTSUPP
참조된 소켓은 LPWSPListen 작업을 지원하는 형식이 아닙니다.

설명

연결을 수락하기 위해 LPWSPBind를 사용하여 로컬 주소에 바인딩된 LPWSPSocket을 사용하여 소켓을 먼저 만들고, 들어오는 연결에 대한 백로그를 LPWSPListen으로 지정한 다음 LPWSPAccept로 연결이 허용됩니다. LPWSPListen은 연결 지향 소켓(예: SOCK_STREAM)에만 적용됩니다. 소켓 들어오는 연결 요청이 승인되고 Windows Sockets SPI 클라이언트가 수락 대기 중인 대기 중인 수동 모드로 전환됩니다.

이 함수는 일반적으로 한 번에 둘 이상의 연결 요청을 가질 수 있는 서버에서 사용됩니다. 연결 요청이 큐가 가득 찬 상태에서 도착하는 경우 클라이언트는 WSAECONNREFUSED 표시와 함께 오류를 수신합니다.

LPWSPListen은 사용 가능한 설명자가 없는 경우 계속 합리적으로 작동해야 합니다. 큐를 비울 때까지 연결을 수락해야 합니다. 설명자를 사용할 수 있게 되면 나중에 LPWSPListen 또는 LPWSPAccept 를 호출하면 큐가 현재 또는 가장 최근 백로그에 다시 채워지고 가능하면 들어오는 연결에 대한 수신 대기를 다시 시작합니다.

Windows 소켓 SPI 클라이언트는 동일한 소켓에서 LPWSPListen 을 두 번 이상 호출할 수 있습니다. 이는 수신 대기 소켓에 대한 현재 백로그를 업데이트하는 효과가 있습니다. 새 백로그 값보다 보류 중인 연결이 더 많으면 보류 중인 초과 연결이 다시 설정되고 삭제됩니다.

백로그 매개 변수는 서비스 공급자가 결정한 적절한 값으로 제한됩니다(자동으로). 잘못된 값은 가장 가까운 법적 값으로 대체됩니다. 실제 백로그 값을 확인하는 표준 프로비저닝은 없습니다.

요구 사항

요구 사항
지원되는 최소 클라이언트 Windows 2000 Professional[데스크톱 앱만]
지원되는 최소 서버 Windows 2000 Server[데스크톱 앱만]
머리글 ws2spi.h

추가 정보

LPWSPAccept

LPWSPConnect

LPWSPSocket