Condividi tramite


Restituisci valori in caso di errore della funzione

La costante manifesto SOCKET_ERROR viene fornita per controllare l'errore della funzione. Anche se l'uso di questa costante non è obbligatorio, è consigliabile. Nell'esempio seguente viene illustrato l'uso della costante SOCKET_ERROR .

Stile BSD tipico (non funziona in Windows)

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

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

Codici di errore - errno, h_errno e WSAGetLastError

Gestione degli errori winsock

Conversione di applicazioni socket in Winsock

Considerazioni sulla programmazione Winsock

Codici di errore di Windows Sockets