RT
我想在监听网络数据时,采取多线程。目前参考方案两种:
一、在接收数据包的时候采用多线程模式,即每一个IP数据包都对应一个处理线程(包括从接收到判断)。
二、只用两个线程,一个用来接收数据,一个用来处理数据。
不知道上面那种方案可行点。
另外,在第一种方案有没有对应的参考原码?
我想在监听网络数据时,采取多线程。目前参考方案两种:
一、在接收数据包的时候采用多线程模式,即每一个IP数据包都对应一个处理线程(包括从接收到判断)。
二、只用两个线程,一个用来接收数据,一个用来处理数据。
不知道上面那种方案可行点。
另外,在第一种方案有没有对应的参考原码?
代码如下:
bool RecvThreadFlag;//接收线程标识HANDLE hRecvThread;
DWORD RecvthreadId;
DWORD WINAPI RecvThread(LPVOID lpParameter);
void main(int argc, char ** argv)
{
....(套接字定义...)
RecvThreadFlag=true;
//创立监听线程
int i=1;
hRecvThread=CreateThread(NULL,0,RecvThread,(LPVOID)&i,0,&RecvthreadId);
if(hRecvThread==NULL)
{
RecvThreadFlag = false;
closesocket(SockRaw);
SockRaw = INVALID_SOCKET;
printf("createthread defeat");
}
}
DWORD WINAPI RecvThread(LPVOID lpParameter)
{
while(RecvThreadFlag)
{
if(RecvThreadFlag==false)
break;
memset(RecvBuf, 0, sizeof(RecvBuf));
.......
} return 0;
}
问题出在那呢?