Sample - Utilility Function for Socket Error Handling:             Notes   Code

void ShowWSAErrorMessage(int iError)
{
    char szMessage[200];

    switch(iError)
    {
        case WSAEACCES:          //10013
            strcpy(szMessage,"Permission denied");
            break;
        case WSAEADDRINUSE:      //10048
            strcpy(szMessage,"Address already in use");
            break;
        case WSAEADDRNOTAVAIL:   //10049
            strcpy(szMessage,"Cannot assign requested address");
            break;
        case WSAEAFNOSUPPORT:    //10047
            strcpy(szMessage,"Address family not supported by protocol family");
            break;
        case WSAEALREADY:        //10037
            strcpy(szMessage,"Operation already in progress");
            break;
        case WSAECONNABORTED:    //10053
            strcpy(szMessage,"Software caused connection abort");
            break;
        case WSAECONNREFUSED:    //10061
            strcpy(szMessage,"Connection refused");
            break;
        case WSAECONNRESET:      //10054
            strcpy(szMessage,"Connection reset by peer");
            break;
        case WSAEDESTADDRREQ:    //10039
            strcpy(szMessage,"Destination address required");
            break;
        case WSAEFAULT:          //10014
            strcpy(szMessage,"Bad address");
            break;
        case WSAEHOSTDOWN:       //10064
            strcpy(szMessage,"Host is down");
            break;
        case WSAEHOSTUNREACH:    //10065
           strcpy(szMessage,"No route to host");
           break;
        case WSAEINPROGRESS:     //10036
           strcpy(szMessage,"Operation now in progress");
           break;
        case WSAEINTR:           //10004
           strcpy(szMessage,"Interrupted function call");
           break;
        case WSAEINVAL:          //10022
           strcpy(szMessage,"Invalid argument");
           break;
        case WSAEISCONN:         //10056
           strcpy(szMessage,"Socket is already connected");
           break;
        case WSAEMFILE:          //10024
           strcpy(szMessage,"Too many open files");
           break;
        case WSAEMSGSIZE:        //10040
           strcpy(szMessage,"Message too long");
           break;
        case WSAENETDOWN:        //10050
           strcpy(szMessage,"Network is down");
           break;
        case WSAENETRESET:       //10052
           strcpy(szMessage,"Network dropped connection on reset");
           break;
        case WSAENETUNREACH:     //10051
           strcpy(szMessage,"Network is unreachable");
           break;
        case WSAENOBUFS:         //10055
           strcpy(szMessage,"No buffer space available");
           break;
        case WSAENOPROTOOPT:     //10042
           strcpy(szMessage,"Bad protocol option");
           break;
        case WSAENOTCONN:        //10057
           strcpy(szMessage,"Socket is not connected");
           break;
        case WSAENOTSOCK:        //10038
           strcpy(szMessage,"Socket operation on non-socket");
           break;
        case WSAEOPNOTSUPP:      //10045
           strcpy(szMessage,"Operation not supported");
           break;
        case WSAEPFNOSUPPORT:    //10046
           strcpy(szMessage,"Protocol family not supported");
           break;
        case WSAEPROCLIM:        //10067
           strcpy(szMessage,"Too many processes");
           break;
        case WSAEPROTONOSUPPORT: //10043
           strcpy(szMessage,"Protocol not supported");
           break;
        case WSAEPROTOTYPE:      //10041
           strcpy(szMessage,"Protocol wrong type for socket");
           break;
        case WSAESHUTDOWN:       //10058
           strcpy(szMessage,"Cannot send after socket shutdown");
           break;
        case WSAESOCKTNOSUPPORT: //10044
           strcpy(szMessage,"Socket type not supported");
           break;
        case WSAETIMEDOUT:       //10060
           strcpy(szMessage,"Connection timed out");
           break;
        case WSATYPE_NOT_FOUND:  //10109
           strcpy(szMessage,"Class type not found");
           break;
        case WSAEWOULDBLOCK:     //10035
           strcpy(szMessage,"Resource temporarily unavailable");
           break;
        case WSAHOST_NOT_FOUND:  //11001
           strcpy(szMessage,"Host not found");
           break;
        case WSANOTINITIALISED:  //10093
           strcpy(szMessage,"Successful WSAStartup not yet performed");
           break;
        case WSANO_DATA:         //11004
           strcpy(szMessage,"Valid name, no data record of requested type");
           break;
        case WSANO_RECOVERY:     //11003
           strcpy(szMessage,"This is a non-recoverable error");
           break;
        case WSASYSNOTREADY:     //10091
           strcpy(szMessage,"Network subsystem is unavailable");
           break;
        case WSATRY_AGAIN:       //11002
           strcpy(szMessage,"Non-authoritative host not found");
           break;
        case WSAVERNOTSUPPORTED: //10092
           strcpy(szMessage,"WINSOCK.DLL version out of range");
           break;
        case WSAEDISCON:         //10094
           strcpy(szMessage,"Graceful shutdown in progress");
           break;
        default:
           sprintf(szMessage,"No description for an error: %d", iError);
    }

    cout << szMessage << endl;
}



2002, Netston Consulting