beginthreadex
1>.\serverDlg.cpp(163) : error C2664: “_beginthreadex”: 不能将参数 3 从“unsigned int (__stdcall CserverDlg::* )(LPVOID)”转换为“unsigned int (__stdcall *)(void *)”
1> 没有使该转换得以执行的上下文
===============
code
================
.h 文件:
unsigned int WINAPI WorkerThread(LPVOID lpParam);
.cpp 文件:
unsigned ThreadID;
HANDLE pThread=(HANDLE)_beginthreadex(NULL,0,&CserverDlg::WorkerThread,&m_client,CREATE_SUSPENDED, &ThreadID);
if(!pThread){
closesocket(m_client);
GetDlgItem(IDC_STATIC1)->SetWindowTextW(_T("线程没有工作成功..."));
continue;
}
unsigned int CserverDlg::WorkerThread(LPVOID lpParam){
SOCKET m_client = (SOCKET) (*lpParam);
WSAData wsaData;
if(WSAStartup(MAKEWORD(2,2), &wsaData)){
closesocket(m_client);
_endthreadex(1);
return 1;
}
packet A;
char *P = (char *) &A;
int len = sizeof(A);
while(len){
int ret = recv(m_client, P, len, 0);
if(SOCKET_ERROR == ret){
GetDlgItem(IDC_STATIC1)->SetWindowTextW(_T("数据接收的时候发生了错误..."));
break;
}
if(!ret){
GetDlgItem(IDC_STATIC1)->SetWindowTextW(_T("和客户端的连接中断!..."));
break;
}
len -= ret;
P += ret;
if(len == 0){
//接收成功
CString tmp;
tmp.Format(_T("线程:[%d],接收到了客户端[%d]的数据,head为:[%s]"),GetCurrentThreadId,m_client,A.addHeader);
GetDlgItem(IDC_STATIC1)->SetWindowTextW(tmp);
}
}
// closesocket(_client);
//WSACleanup();
_endthreadex(0);
}