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