sClientSocket = accept(sRevSocket,(sockaddr *)&sClientSockAddress,&iNameLen);
if(sClientSocket == INVALID_SOCKET)
{
printf("accept socket failed\n");
printf("------------------------------------\n");
return ERR_SOCKET_ACCEPT;
}
/*accept a connection*//*create a thread to process client require*/
if(CreateThread(NULL,
0,
(unsigned long (__stdcall *)(void *))Svr_ProcessRequire,
!!!!!!!! &sClientSocket,
0,
NULL
) == NULL)
这里不能用地址!比如你创建了线程,在线程中还没有运行到SOCKET sSocket = *(SOCKET *)lpvThreadParm;时,
又收到accept,这时sClentSocket的值就改变,在线程中sSocket就变成后面的值!!if(CreateThread(NULL,
0,
(unsigned long (__stdcall *)(void *))Svr_ProcessRequire,
(void*)sClientSocket,
0,
NULL
) == NULL)线程中
SOCKET sSocket = (SOCKET)lpvThreadParm;
if(sClientSocket == INVALID_SOCKET)
{
printf("accept socket failed\n");
printf("------------------------------------\n");
return ERR_SOCKET_ACCEPT;
}
/*accept a connection*//*create a thread to process client require*/
if(CreateThread(NULL,
0,
(unsigned long (__stdcall *)(void *))Svr_ProcessRequire,
!!!!!!!! &sClientSocket,
0,
NULL
) == NULL)
这里不能用地址!比如你创建了线程,在线程中还没有运行到SOCKET sSocket = *(SOCKET *)lpvThreadParm;时,
又收到accept,这时sClentSocket的值就改变,在线程中sSocket就变成后面的值!!if(CreateThread(NULL,
0,
(unsigned long (__stdcall *)(void *))Svr_ProcessRequire,
(void*)sClientSocket,
0,
NULL
) == NULL)线程中
SOCKET sSocket = (SOCKET)lpvThreadParm;
流涕流涕~~~~~~~~~~留个QQ:6897466
交个朋友如何???