WSASendDisconnect 함수(winsock2.h)

WSASendDisconnect 함수는 소켓에 대한 연결 종료를 시작하고 연결 끊기 데이터를 보냅니다.

구문

int WSAAPI WSASendDisconnect(
  [in] SOCKET   s,
  [in] LPWSABUF lpOutboundDisconnectData
);

매개 변수

[in] s

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

[in] lpOutboundDisconnectData

나가는 연결 해제 데이터에 대한 포인터입니다.

반환 값

오류가 발생하지 않으면 WSASendDisconnect 는 0을 반환합니다. 그렇지 않으면 SOCKET_ERROR 값이 반환되고 WSAGetLastError를 호출하여 특정 오류 코드를 검색할 수 있습니다.

오류 코드 의미
WSANOTINITIALISED
이 함수를 사용하기 전에 성공적인 WSAStartup 호출이 발생해야 합니다.
WSAENETDOWN
네트워크 하위 시스템이 실패했습니다.
WSAENOPROTOOPT
lpOutboundDisconnectData 매개 변수는 NULL이 아니며 서비스 공급자가 연결 끊기 데이터를 지원하지 않습니다.
WSAEINPROGRESS
차단 Windows 소켓 1.1 호출이 진행 중이거나 서비스 공급자가 여전히 콜백 함수를 처리하고 있습니다.
WSAENOTCONN
소켓이 연결되지 않았습니다(연결 지향 소켓만 해당).
WSAENOTSOCK
설명자가 소켓이 아닙니다.
WSAEFAULT
lpOutboundDisconnectData 매개 변수는 사용자 주소 공간의 유효한 부분에 완전히 포함되지 않습니다.

설명

WSASendDisconnect 함수는 연결 지향 소켓에서 전송을 사용하지 않도록 설정하고 연결 해제 데이터 전송(있는 경우)과 함께 연결 종료를 시작하는 데 사용됩니다. 이는 WSASendDisconnect에서도 연결 끊기 데이터(이를 지원하는 프로토콜)를 보낼 수 있다는 점을 제외하고 종료(SD_SEND)와 동일합니다.

이 함수가 성공적으로 실행되면 후속 전송이 허용되지 않습니다.

lpOutboundDisconnectData 매개 변수(NULL이 아닌 경우)는 WSARecvDisconnect를 사용하여 검색을 위해 원격 당사자에게 보낼 나가는 연결 해제 데이터가 포함된 버퍼를 가리킵니다.

참고 Windows에서 TCP/IP의 네이티브 구현은 데이터 연결 끊기를 지원하지 않습니다. 연결 끊기 데이터는 WSAPROTOCOL_INFO 구조에 XP1_DISCONNECT_DATA 플래그가 있는 Windows Sockets 공급자에서만 지원됩니다. WSAEnumProtocols 함수를 사용하여 설치된 모든 공급자에 대한 WSAPROTOCOL_INFO 구조를 가져옵니다.
 
WSASendDisconnect 함수는 소켓을 닫지 않으며 closesocket이 호출될 때까지 소켓에 연결된 리소스가 해제되지 않습니다.

WSASendDisconnect 함수는 소켓의 SO_LINGER 설정에 관계없이 차단되지 않습니다.

애플리케이션은 WSASendDisconnect를 호출한 후 소켓을 다시 사용할 수 있어야 합니다. 특히 Windows 소켓 공급자는 이러한 소켓에서WSAConnect연결/ 사용을 지원할 필요가 없습니다.

참고WSASendDisconnect와 같은 차단 Winsock 호출을 실행할 때 Winsock은 호출이 완료되기 전에 네트워크 이벤트를 기다려야 할 수 있습니다. Winsock은 이 상황에서 경고 가능한 대기를 수행하며, 동일한 스레드에서 예약된 APC(비동기 프로시저 호출)에 의해 중단될 수 있습니다. 동일한 스레드에서 지속적인 차단 Winsock 호출을 중단한 APC 내에서 또 다른 차단 Winsock 호출을 실행하면 정의되지 않은 동작이 발생하며 Winsock 클라이언트에서 시도해서는 안 됩니다.
 

요구 사항

요구 사항
지원되는 최소 클라이언트 Windows 2000 Professional[데스크톱 앱만]
지원되는 최소 서버 Windows 2000 Server[데스크톱 앱만]
대상 플랫폼 Windows
헤더 winsock2.h
라이브러리 Ws2_32.lib
DLL Ws2_32.dll

추가 정보

Winsock 함수

Winsock 참조

connect

socket