字体
第(1/6)页
关灯
   存书签 书架管理 返回目录
    dTail(m_ChattersList);

    }

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

    void CChatServerDoc::DeleteContents()

    {

    if(m_pSocket == (CListeningSocket*)NULL)

    return;

    //删除jiān tīngsocket

    delete m_pSocket;

    m_pSocket = NULL;

    枫叶文学网www.fywxw.com

    第11 章 网络编程

    ·309·

    CString temp;

    temp.Format("服务器已关闭");

    m_msgList.AddTail(temp);

    //对当前连接的每个客户端发送信息后关闭与该客户端的连接

    while(!m_connectionList.IsEmpty())

    {

    CClientSocket* pSocket = (CClientSocket*)m_connectionList.RemoveHead();

    CMsg* pMsg = AssembleMsg(pSocket , NORMAL_MESSAGE);

    pMsg->m_bClose = TRUE;

    SendMsg(pSocket, pMsg);

    pSocket->ShutDown(2);

    delete pSocket;

    }

    //清空所有信息

    m_msgList.RemoveAll();

    CDoccomnt::DeleteContents();

    }

    至此,服务器端代码已经编写完成。

    技巧:检测#if 语句和#endif 语句是否匹配

    将光标定位到想要匹配的#if 语句或#endif 语句,利用快捷键“Ctrl+K”,则光标就会自动定

    位到与之匹配的#endif 语句或#if 语句。如果没有与之匹配的语句,光标则不移动。

    技巧:检测括号是否匹配

    将光标移动到需要检测的括号(如大括号{}、方括号[]、圆括号()和尖括号<>等)前面,键

    入快捷键“Ctrl+]”。如果括号匹配正确,则光标跳到匹配的括号处;否则光标不移动,并

    且机箱喇叭还会发出一声警告声。

    11.4.3 客户端程序设计

    客户端的设计与服务器端很类似。

    ? 使用编写服务器端程序时封装的消息类。

    ? 界面由3 个窗口组成,分别用于显示聊天内容,显示用户列表以及输入要发送的消息。

    ? 用户登录或断开时,都要首先以某种信息类型发送用户名,然后发送正式的消息。收

    到服务器的消息时,如果是普通消息,则显示出来;如果是用户登录或断开的消息,

    则更新用户列表。

    由于客户端程序的编写和服务器端在很大程度上相同,因此这里不再详细叙述过程,而

    是在简要说明的基础上把主要的代码列出来。

    枫叶文学网www.fywxw.com

    Visual C++
上一章 目录 下一页