함수 실패 시 값 반환

매니페스트 상수 SOCKET_ERROR 함수 오류를 검사하기 위해 제공됩니다. 이 상수의 사용은 필수는 아니지만 권장됩니다. 다음 예제에서는 SOCKET_ERROR 상수를 사용하는 것을 보여 줍니다.

일반적인 BSD 스타일(Windows에서는 작동하지 않음)

        r = recv(ClientSocket, recvbuf, recvbuflen, 0);
        if (r == -1     /* or r < 0 */
            && errno == EWOULDBLOCK) {
            printf("recv failed with error: EWOULDBLOCK\n");
        }    

Windows 스타일

        iResult = recv(ClientSocket, recvbuf, recvbuflen, 0);
        if (iResult == SOCKET_ERROR ) {
            iError = WSAGetLastError();
            if (iError == WSAEWOULDBLOCK)
                printf("recv failed with error: WSAEWOULDBLOCK\n");
            else
                printf("recv failed with error: %ld\n", iError);

            closesocket(ClientSocket);
            WSACleanup();
            return 1;
        }    

오류 코드 - errno, h_errno 및 WSAGetLastError

Winsock 오류 처리

소켓 애플리케이션을 Winsock으로 포팅

Winsock 프로그래밍 고려 사항

Windows 소켓 오류 코드