Export (0) Print
Expand All

Return Values on Function Failure

The manifest constant SOCKET_ERROR is provided for checking function failure. Although use of this constant is not mandatory, it is recommended. The following example illustrates the use of the SOCKET_ERROR constant.

Typical BSD Style (will not work on 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;
        }    


Related topics

Error Codes - errno, h_errno and WSAGetLastError
Handling Winsock Errors
Porting Socket Applications to Winsock
Winsock Programming Considerations
Windows Sockets Error Codes

 

 

Community Additions

ADD
Show:
© 2014 Microsoft