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