switch (err) {
case WSAEINTR:
tmp = "Interrupted function call";
break;
case WSAEACCES:
tmp = "Permission denied";
break;
case WSAEBADF:
tmp = "Bad file handle";
break;
case WSAEFAULT:
tmp = "Bad address";
break;
case WSAEINVAL:
tmp = "Invalid argument";
break;
case WSAEMFILE:
tmp = "Too many open files";
break;
case WSAEWOULDBLOCK:
tmp = "Resource temporarily unavailable";
break;
case WSAEINPROGRESS:
tmp = "Operation now in progress";
break;
case WSAEALREADY:
tmp = "Operation already in progress";
break;
case WSAENOTSOCK:
tmp = "Socket operation on non-socket";
break;
case WSAEDESTADDRREQ:
tmp = "Destination address required";
break;
case WSAEMSGSIZE:
tmp = "Message too long";
break;
case WSAEPROTOTYPE:
tmp = "Protocol wrong type for socket";
break;
case WSAENOPROTOOPT:
tmp = "Bad protocol option";
break;
case WSAEPROTONOSUPPORT:
tmp = "Protocol not supported";
break;
case WSAESOCKTNOSUPPORT:
tmp = "Socket type not supported";
break;
case WSAEOPNOTSUPP:
tmp = "Operation not supported";
break;
case WSAEPFNOSUPPORT:
tmp = "Protocol family not supported";
break;
case WSAEAFNOSUPPORT:
tmp = "Address family not supported by protocol family";
break;
case WSAEADDRINUSE:
tmp = "Address already in use";
break;
case WSAEADDRNOTAVAIL:
tmp = "Cannot assign requested address";
break;
case WSAENETDOWN:
tmp = "Network is down";
break;
case WSAENETUNREACH:
tmp = "Network is unreachable";
break;
case WSAENETRESET:
tmp = "Network dropped connection on reset";
break;
case WSAECONNABORTED:
tmp = "Software caused connection abort";
break;
case WSAECONNRESET:
tmp = "Connection reset by peer";
break;
case WSAENOBUFS:
tmp = "No buffer space available";
break;
case WSAEISCONN:
tmp = "Socket is already connected";
break;
case WSAENOTCONN:
tmp = "Socket not connected";
break;
case WSAESHUTDOWN:
tmp = "Cannot send after socket shutdown";
break;
case WSAETIMEDOUT:
tmp = "Connection timed out";
break;
case WSAECONNREFUSED:
tmp = "Connection refused";
break;
case WSAEHOSTDOWN:
tmp = "Host is down";
break;
case WSAEHOSTUNREACH:
tmp = "No route to host";
break;
case WSASYSNOTREADY:
tmp = "Network subsystem is unavailable";
break;
case WSAVERNOTSUPPORTED:
tmp = "WINSOCK.DLL version out of range";
break;
case WSANOTINITIALISED:
tmp = "Successful WSAStartup not yet performed";
break;
case WSAHOST_NOT_FOUND:
tmp = "Host not found";
break;
case WSATRY_AGAIN:
tmp = "Non-authoritative host not found";
break;
case WSANO_RECOVERY:
tmp = "This is a non-recoverable error";
break;
case WSANO_DATA:
tmp = "Valid name, no data record of requested type";
break;
/*
case WSAEPROCLIM:
tmp = "Too many processes";
break;
case WSA_INVALID_HANDLE:
tmp = "Invalid handle";
break;
case WSA_INVALID_PARAMETER:
tmp = "One or more parameters are invalid";
break;
case WSAINVALIDPROCTABLE:
tmp = "Invalid procedure table from service provider";
break;
case WSAINVALIDPROVIDER:
tmp = "Invalid service provider versoin number";
break;
case WSA_IO_PENDING:
tmp = "Overlapped operations will complete later";
break;
case WSA_IO_INCOMPLETE:
tmp = "Overlapped I/O event object not i signaled state";
break;
case WSA_NOT_ENOUGH_MEMORY:
tmp = "Insufficient memory available";
break;
case WSAPROVIDERFAILEDINIT:
tmp = "Unable to initialize a service provider";
break;
case WSASYSCALLFAILURE:
tmp = "System call failure";
break;
case WSAEDISCON:
tmp = "Graceful shutdown in progress";
break;
case WSA_OPERATION_ABORTED:
tmp = "Overlapped operation aborted";
break;
*/
default:
tmp = "Unknown error";
}