On Windows, call WSAGetLastError() to retrieve the error number.

Bugfix candidate, will backport to release22-maint myself.
diff --git a/Modules/selectmodule.c b/Modules/selectmodule.c
index 2caa022..8444c12 100644
--- a/Modules/selectmodule.c
+++ b/Modules/selectmodule.c
@@ -39,7 +39,7 @@
 #endif
 
 #ifdef MS_WINDOWS
-#include <winsock.h>
+#include <windows.h>
 #else
 #ifdef __BEOS__
 #include <net/socket.h>
@@ -273,9 +273,15 @@
 	n = select(max, &ifdset, &ofdset, &efdset, tvp);
 	Py_END_ALLOW_THREADS
 
+#ifdef MS_WINDOWS
+	if (n == SOCKET_ERROR) {
+		PyErr_SetExcFromWindowsErr(SelectError, WSAGetLastError());
+	}
+#else
 	if (n < 0) {
 		PyErr_SetFromErrno(SelectError);
 	}
+#endif
 	else if (n == 0) {
                 /* optimization */
 		ifdlist = PyList_New(0);