Because you are working with Windows sockets, you will need to use the WSAGetLastError() function to check the error code. Windows sockets functions do not set errno, which is why you are seeing errno with a value of 0.
用WSAGetLastError ()查看错误,返回值为10038。不知道是什么错误。
用Error lookup查看错误是“在一个非套接字上尝试了一个操作”。
10038—-WSAENOTSOCK
无效套接字上的套接字操作。任何一个把SOCKET句柄当作参数的Winsock函数都会返回这个错误。它表明提供的套接字句柄无效。
另:msdn可以查询错误原因,索引->Win32 error->Win32 Error Codes,最好把它加入书签,方便查找