Compartilhar via


Retornar valores em falha de função

A constante de manifesto SOCKET_ERROR é fornecida para verificar a falha da função. Embora o uso dessa constante não seja obrigatório, é recomendável. O exemplo a seguir ilustra o uso da constante SOCKET_ERROR.

Estilo BSD típico (não funcionará no Windows)

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

Estilo do 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 erro - errno, h_errno e WSAGetLastError

tratando erros de Winsock

portabilidade de aplicativos de soquete para o winsock

considerações sobre programação winsock

códigos de erro de soquetes do Windows