主要代码如下:……
//MySocket是成功监听中的套接字
HANDLE hThread = CreateThread(NULL,0,MyAcceptThread,(LPVOID)&MySocket,0,&dw_ThreadAccept);
……
DWORD WINAPI MyAcceptThread(LPVOID socket)
{
SOCKET m_socket = (SOCKET)socket;
         ……
          while(1)
{
FD_ZERO( &except);
FD_SET(m_socket,&except);
int i = WSAGetLastError();  //i = 0
if( select(0,NULL,NULL,&except,&timeout) == SOCKET_ERROR )
 i = WSAGetLastError();  //i = 10038
                   ……
          }
          ……
}

解决方案 »

  1.   

    初始化好了?
    在非Socket上操作了吧
      

  2.   

    初始化好了(防火墙拦截,然后选放行)。
    SOCKET 已经 BIND ,上面代码是在新线程里 ACCEPT,但是在 SELECT 这步提示 10038在一个非套接字上尝试了一个操作。
      

  3.   

    解决了,新建线程时参数传递不正确。//MySocket是成功监听中的套接字
    HANDLE hThread = CreateThread(NULL,0,MyAcceptThread,(LPVOID)&MySocket,0,&dw_ThreadAccept);//(LPVOID)&MySocket 改成(LPVOID)MySocket