字体
第(3/6)页
关灯
   存书签 书架管理 返回目录
-8 主框架被分割为两部分

    至此,界面部分已经完成。

    (6)创建CListeningSocket 类

    该类用户jiān tīng客户端的连接,创建方式与CChattersListView 类的创建方式相同,只是基

    类选择CSocket。

    在类的定义中声明宏DECLARE_DYNAMIC(CListeningSocket),该宏的作用是可以在运

    枫叶文学网www.fywxw.com

    第11 章 网络编程

    ·297·

    行时获得类的信息。相应的,如果在类定义中声明了此宏,则在类实现时需要声明宏

    IMPLEMENT_DYNAMIC(CListeningSocket, CSocket)。

    为该类增加成员变量CChatServerDoc* m_pDoc,这是因为本程序采用文档-视图结构,

    所有关于数据的cāo作都可以通过文档类进行,m_pDoc 就是文档类的一个指针。这里用到了

    CChatServerDoc 类, 因此在CListeningSocket 类定义的外部, 要加上语句class

    CChatServerDoc,在文件“ListeningSocket.cpp”中,要加入语句#include "ChatServerDoc.h"。

    为CListeningSocket 类新增加一个构造函数CListeningSocket(CChatServerDoc* pDoc),

    代码如下:

    CListeningSocket::CListeningSocket(CChatServerDoc* pDoc)

    {

    m_pDoc = pDoc;

    }

    最后要重载CSocket 类的OnAccept()函数,代码如下:

    void CListeningSocket::OnAccept(int nErrorCode)

    {

    //调用CScoekt 的OnAccept 函数

    CSocket::OnAccept(nErrorCode);

    //其余工作jiāo给文档类处理

    m_pDoc->ProcessAccept();

    }

    可以看出,CListeningSocket 类的工作就是接收客户端连接,然后具体的数据传输工作jiāo

    给CChatServerDoc 类来处理。这里的ProcessAccept()函数是CChatServerDoc 类的一个成员函

    数。在后面的CChatServerDoc 类成员函数的实现中,读者可以看到此函数的具体实现过程。

    (7)创建CClientSocket 类

    当服务器jiān tīng到一个连接并接收后,会生成一个新的CSocket 对象来处理服务器和客户

    端的数据传输。在本程序中,将这新生成的CSocket 封装成CClientSocket 类。创建该类的过

    程和创建CListeningSocket 类完全一样。

    同样的,在类的定义中声明宏DECLARE_DYNAMIC(CClientSocket),在类的实现中声

    明宏IMPLEMENT_DYNAM
上一页 目录 下一页