字体
第(3/7)页
关灯
   存书签 书架管理 返回目录

    {

    枫叶文学网www.fywxw.com

    第11 章 网络编程

    ·303·

    break;

    }

    }

    while (!pSocket->m_pArchiveIn->IsBufferEmpty());

    //如果是用户登录

    if(bIsNewChatter)

    {

    //如果此用户名没有被使用

    if(!bIsUsedNcom)

    {

    //发送消息通知各客户端

    pMsg->code = SENDING_CHATTERS_LIST;

    m_ChattersList += sNcom + ":";

    pMsg->m_strText = m_ChattersList;

    SendForNewccomr(pMsg);

    }

    //如果用户名已使用

    else

    {

    //发消息通知此客户端

    CMsg* msg = new CMsg;

    msg->Init();

    msg->code = USED_NAME;

    CString string;

    string.Format("用户名已被使用!");

    msg->m_strText = string;

    SendMsg(pSocket, msg);

    }

    bIsNewChatter = FALSE;

    bIsUsedNcom = FALSE;

    }

    //如果消息表明该客户端已关闭连接

    if (pMsg->m_bClose)

    {

    //发送消息通知各客户端

    SendToAllClients(NORMAL_MESSAGE);

    //在视图中将该用户删除

    DeleteChatter(pMsg);

    //关闭连接

    枫叶文学网www.fywxw.com

    Visual C++ 6.0 程序设计从入门到精通

    ·304·

    CloseSocket(pSocket);

    //通知各客户端更新用户列表

    SendToAllClients(SENDING_CHATTERS_LIST);

    }

    //如果是普通消息,发送给各客户端

    else

    SendToAllClients(NORMAL_MESSAGE);

    }

    为ReadMsg()函数编写如下代码:

    CMsg* CChatServerDoc::ReadMsg(CClientSocket* pSocket)

    {

    static CMsg msg;

    TRY

    {

    //接收数据

    pSocket->ReceiveMsg(&msg);

    //如果是新用户登录则更新用户列表

    if(msg.code == SENDING_NICKNAME)

    {

    UpdateC
上一页 目录 下一页