RT
我想在监听网络数据时,采取多线程。目前参考方案两种:
一、在接收数据包的时候采用多线程模式,即每一个IP数据包都对应一个处理线程(包括从接收到判断)。
二、只用两个线程,一个用来接收数据,一个用来处理数据。
不知道上面那种方案可行点。
另外,在第一种方案有没有对应的参考原码?

解决方案 »

  1.   

    我用一个,但线程总是无法工作:
    代码如下:
    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;
    }
      

  2.   

    总是无法进入RecvThread()线程中,因为我在该线程中用printf()或者用断点时,无作用。
    问题出在那呢?