Freigeben über


Rückgabewerte bei Funktionsfehler

Die Manifestkonstante SOCKET_ERROR wird zum Überprüfen von Funktionsfehlern bereitgestellt. Obwohl die Verwendung dieser Konstante nicht obligatorisch ist, wird empfohlen. Im folgenden Beispiel wird die Verwendung der SOCKET_ERROR-Konstante veranschaulicht.

Typischer BSD-Stil (funktioniert nicht unter Windows)

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

Windows-Stil

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

Fehlercodes: errno, h_errno und WSAGetLastError

Behandeln von Winsock-Fehlern

Portieren von Socketanwendungen zu Winsock

Überlegungen zur Winsock-Programmierung

Windows Sockets-Fehlercodes