用一个while监视么?我的意思是:比如聊天室吧客户A发送消息MSG到服务器,然后服务器再把这个MSG发给每一个人,于是大家都看到了.问题是:MSG到了服务器后,被服务器的接受,但是却不会"自动"调用什么函数,来使这个MSG显示到屏幕上.

解决方案 »

  1.   

    首先你要知道同步和异步的问题,可参考http://community.csdn.net/Expert/topic/4698/4698992.xml?temp=.7936365
    你还要知道各种异步模型,可参考
    http://community.csdn.net/Expert/topic/4673/4673206.xml?temp=.8040125
    搜索一下模型能找到很多讨论异步通讯的问题
      

  2.   

    设置一个全局变量,将msg传给全局变量,然后通过postmessage,向窗体发送消息,在消息事件里面读取全局变量,给界面显示.
      

  3.   

    是要用while来处理~~
    do
    {
    CMessage* pMsg = ReadMsg(pSocket);//读取服务器端发送过来的信息
    if(pMsg == NULL)
    return;
    if(pMsg->m_bClose)//假如客户端关闭连接
    {
    //关闭该套接字
    CloseSocket(pSocket);
    pMsg->m_bClose = FALSE;
    return;
    }
    //标示客户端登录进来
    if(pMsg->type == -1)
    {
    //更新用户信息
    UpdateList(pSocket);
    }
    }
    while (!pSocket->m_pArchiveIn->IsBufferEmpty());
    因为CSocket一般处理是和CSocketFile和CArchive一起使用的~~
    所有的数据都是放在CArchive对应的缓冲里面,所以直接通过IsBufferEmpty()来判别是否还有数据~~~
    用while来监控~~~
      

  4.   

    CSocket是MFC封装的一个同步的Socket类, 你可以使用MFC封装的那个异步Socket类