我要在一个服务器---多客户端应用程序中,在通信过程中为每一个客户端都开一个线程,但是客户的数量是
随即的,也就是 DWORD WINAPI ThreadRecv(LPVOID lpParam)的定义应该是动态的,每一个客服端的功能都一样,应该怎样实现呢!也就是每个用户要使用的代码都相同,但属于不同的线程,应该怎样解觉呢!我刚学VC,很菜,请帮忙!
随即的,也就是 DWORD WINAPI ThreadRecv(LPVOID lpParam)的定义应该是动态的,每一个客服端的功能都一样,应该怎样实现呢!也就是每个用户要使用的代码都相同,但属于不同的线程,应该怎样解觉呢!我刚学VC,很菜,请帮忙!
王艳平有这样的例子
书上有代码
{//TCP监听线程
CBackupClientDlg *pDlg=(CBackupClientDlg *)lparam;
if(pDlg->StopServer==true) return -1;
CSocket sockSrvr;
pDlg->m_Potr=PORT+pDlg->m_server;
int createSucceed=sockSrvr.Create(pDlg->m_Potr);
if(createSucceed==0)
{
AfxMessageBox("_ListenTcpThread Create错误!"+pDlg->GetError(GetLastError()));
return -1;
}
int listenSucceed=sockSrvr.Listen();//本机指定端口监听网络事件
if(listenSucceed==0)
{
AfxMessageBox("_ListenTcpThread Listen错误!"+pDlg->GetError(GetLastError()));
return -1;
}
CSocket recSo;
SOCKADDR_IN client;
int iAddrSize=sizeof(client);
//监听到网络事件交给接收线程处理,监听线程继续监听消息
int acceptSucceed=sockSrvr.Accept(recSo,(SOCKADDR *)&client,&iAddrSize);
if(acceptSucceed==0)
{
AfxMessageBox("_ListenTcpThread Accept错误!"+pDlg->GetError(GetLastError()));
return -1;
}
sockSrvr.Close();
char flag[FLAG]={0};
if(recSo.Receive(flag,FLAG)!=2)
{
return -1;
}
pDlg->m_type=flag[0];
if(pDlg->m_type=='D') return 0;
pThreadLisen=::AfxBeginThread(_ListenTcpThread,pDlg);
pDlg->ReceiveFileMsg(recSo,client);//接收线程
//接收函数定义如下: ReceiveFileMsg(CSocket &recSo,SOCKADDR_IN &client)
//可以再ReceiveFileMsg函数里创建执行线程。
return 0;
}
yestotofu:客户端少 该怎么弄?
IOCP不知道呀!