主要代码如下:……
//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
……
}
……
}
//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
……
}
……
}
在非Socket上操作了吧
SOCKET 已经 BIND ,上面代码是在新线程里 ACCEPT,但是在 SELECT 这步提示 10038在一个非套接字上尝试了一个操作。
HANDLE hThread = CreateThread(NULL,0,MyAcceptThread,(LPVOID)&MySocket,0,&dw_ThreadAccept);//(LPVOID)&MySocket 改成(LPVOID)MySocket