다음을 통해 공유


LPWSPRECVDISCONNECT 콜백 함수(ws2spi.h)

LPWSPRecvDisconnect 함수는 소켓에서 수신을 종료하고 소켓이 연결 지향인 경우 연결 끊기 데이터를 검색합니다.

구문

LPWSPRECVDISCONNECT Lpwsprecvdisconnect;

int Lpwsprecvdisconnect(
  [in]  SOCKET s,
  [out] LPWSABUF lpInboundDisconnectData,
  [out] LPINT lpErrno
)
{...}

매개 변수

[in] s

소켓을 식별하는 설명자입니다.

[out] lpInboundDisconnectData

연결 끊기 데이터를 복사할 버퍼에 대한 포인터입니다.

[out] lpErrno

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

반환 값

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

오류 코드 의미
WSAENETDOWN
네트워크 하위 시스템이 실패했습니다.
WSAEFAULT
lpInboundDisconnectData 매개 변수에서 참조하는 버퍼가 너무 작습니다.
WSAENOPROTOOPT
데이터 연결 끊기는 표시된 프로토콜 패밀리에서 지원되지 않습니다.
WSAEINPROGRESS
Windows 소켓 호출 차단이 진행 중이거나 서비스 공급자가 여전히 콜백 함수를 처리하고 있습니다.
WSAENOTCONN
소켓이 연결되지 않았습니다(연결 지향 소켓만 해당).
WSAENOTSOCK
설명자가 소켓이 아닙니다.

설명

LPWSPRecvDisconnect 는 연결 지향 소켓에서 수신을 사용하지 않도록 설정하고 원격 당사자로부터 들어오는 연결 끊기 데이터를 검색하는 데 사용됩니다.

이 함수가 성공적으로 실행되면 소켓에서 후속 수신이 허용되지 않습니다. 이는 낮은 프로토콜 계층에 영향을 주지 않습니다. TCP의 경우 TCP 창은 변경되지 않으며 창이 소진될 때까지 들어오는 데이터가 수락(승인되지 않음)됩니다. UDP의 경우 들어오는 데이터그램이 허용되고 큐에 대기됩니다. 어떤 경우에도 ICMP 오류 패킷이 생성되지 않습니다.

들어오는 연결 끊기 데이터를 성공적으로 받으려면 Windows Sockets SPI 클라이언트가 다른 메커니즘을 사용하여 회로가 닫혔는지 확인해야 합니다. 예를 들어 클라이언트는 FD_CLOSE 알림을 받거나 반환 값이 0이거나 LPWSPRecv에서 WSAEDISCON 오류 코드를 가져와야 합니다.

LPWSPRecvDisconnect는 소켓을 닫지 않으며 LPWSPCloseSocket이 호출될 때까지 소켓에 연결된 리소스가 해제되지 않습니다.

참고

LPWSPRecvDisconnect 는 소켓의 SO_LINGER 설정에 관계없이 차단되지 않습니다. Windows 소켓 SPI 클라이언트는 LPWSPRecvDisconnect가 적용된 후 소켓을 다시 사용할 수 있어야 합니다. 특히 Windows 소켓 공급자는 이러한 소켓에서 LPWSPConnect 사용을 지원할 필요가 없습니다.

요구 사항

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

참고 항목

LPWSPConnect

LPWSPSocket