Compartir a través de


Valores devueltos en caso de error de función

La constante de manifiesto SOCKET_ERROR se proporciona para comprobar el error de la función. Aunque el uso de esta constante no es obligatorio, se recomienda. En el ejemplo siguiente se muestra el uso de la constante SOCKET_ERROR .

Estilo BSD típico (no funcionará en Windows)

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

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

Códigos de error: errno, h_errno y WSAGetLastError

Control de errores de Winsock

Migración de aplicaciones de socket a Winsock

Consideraciones de programación de Winsock

Códigos de error de Windows Sockets