我要写一个MFC的应用,一方面是可以再界面上操作,但是现在需要增加一个自动接收并且处理客户端发来信息的功能, 那么我是否应该在程序中启动一个单独的线程,用这个线程作为一个TCP/IP的server来监听客户端的连接并且处理客户端发送过来的消息呢?

解决方案 »

  1.   

    不需要,Listen()后,在OnAccept()处理客户端连接,将客户端连接依次加到CPtrList列表中进行管理
    CPtrList m_connectionList;
    ……
    if(m_pSocket->Accept(*pSocket))
     {
       pSocket ->Init();
       m_connectionList.AddTail(pSocket);
     }
     else
    delete pSocket;……
      

  2.   

    看需求了,如果客户端不多的话就用WSAAsyncSelect模型注册监听几个事件就可以了
    WSAAsyncSelect(......., FD_CONNECT │ FD_READ │ FD_WRITE │ FD_CLOSE);
      

  3.   

    我觉得还是使用多线程作为后台处理比较好。
    在VC里使用socket api进行通讯时,监听端一般还是另开一个线程比较好。