Valeurs de retour en cas d’échec de la fonction

La constante manifeste SOCKET_ERROR est fournie pour la vérification de l’échec de la fonction. Bien que l’utilisation de cette constante ne soit pas obligatoire, elle est recommandée. L’exemple suivant illustre l’utilisation de la constante SOCKET_ERROR .

Style BSD classique (ne fonctionne pas sur Windows)

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

Windows Style

        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;
        }    

Codes d’erreur : errno, h_errno et WSAGetLastError

Gestion des erreurs Winsock

Portage d’applications socket vers Winsock

Considérations relatives à la programmation Winsock

Codes d’erreur des sockets Windows