DLL 文件中 使用多线程
主程序中加一个功能,新加一台主机的通迅
1.socket连接,传输
2.封装为DLL文件
3.DLL中使用多线程 //哪位有例子啊?
如果3实现不了,那会出错,因为和主机是长连接,要是只有一个线程那会出现假死的状态,所以多线程是比较好的选择前两个比较简单,但第三个调试一直有错,向大家寻一下多线程封装成DLL文件的例子,谢谢
主程序中加一个功能,新加一台主机的通迅
1.socket连接,传输
2.封装为DLL文件
3.DLL中使用多线程 //哪位有例子啊?
如果3实现不了,那会出错,因为和主机是长连接,要是只有一个线程那会出现假死的状态,所以多线程是比较好的选择前两个比较简单,但第三个调试一直有错,向大家寻一下多线程封装成DLL文件的例子,谢谢
D:\VC\test\testDlg.cpp(109) : error C2664: '_beginthreadex' : cannot convert parameter 3 from 'unsigned int (void *)' to 'unsigned int (__stdcall *)(void *)'
None of the functions with this name in scope match the target type
void CTestDlg::OnButton1() //连接
{
// TODO: Add your control notification handler code here
unsigned long ThreadID;
HANDLE hThread;
m_hEvent=CreateEvent(NULL,FALSE,FALSE,NULL);
hThread = (HANDLE)_beginthreadex(NULL, 0, NewThread, NULL, 0, &ThreadID);}void CTestDlg::OnButton2() //发送
{
}UINT WINAPI CTestDlg::NewThread(LPVOID lpArgs) //新线程
{
WORD wVersionRequested;
WSADATA wsaData;
int err;
wVersionRequested = MAKEWORD( 1, 1 );
err = WSAStartup( wVersionRequested, &wsaData );
if ( err != 0 ) {
return 0;
}
if ( LOBYTE( wsaData.wVersion ) != 1 ||
HIBYTE( wsaData.wVersion ) != 1 ) {
WSACleanup( );
return 0;
}
SOCKET sockClient=socket(AF_INET,SOCK_STREAM,0);
SOCKADDR_IN addrSrv;
addrSrv.sin_addr.S_un.S_addr=inet_addr("127.0.0.1");
addrSrv.sin_family=AF_INET;
addrSrv.sin_port=htons(6000);
connect(sockClient,(SOCKADDR*)&addrSrv,sizeof(SOCKADDR));
while (1)
{
send(sockClient,"This is lisi",strlen("This is lisi")+1,0);
Sleep(100);
}
closesocket(sockClient);
WSACleanup();
return 1;
}