字体
第(5/6)页
关灯
   存书签 书架管理 返回目录
 m_pFile = new CSocketFile(this);

    m_pArchiveIn = new CArchive(m_pFile,CArchive::load);

    枫叶文学网www.fywxw.com

    第11 章 网络编程

    ·299·

    m_pArchiveOut = new CArchive(m_pFile,CArchive::store);

    }

    发送信息函数SendMsg()代码如下:

    void CClientSocket::SendMsg(CMsg* pMsg)

    {

    if (m_pArchiveOut != NULL)

    {

    //数据由pMsg 输出到m_pArchiveOut

    pMsg->Serialize(*m_pArchiveOut);

    //将数据写入文件

    m_pArchiveOut->Flush();

    }

    }

    接收信息函数ReceiveMsg()代码如下:

    void CClientSocket::ReceiveMsg(CMsg* pMsg)

    {

    //数据由m_pArchiveIn 读入到pMsg

    pMsg->Serialize(*m_pArchiveIn);

    }

    重载的OnReceive()函数代码如下:

    void CClientSocket::OnReceive(int nErrorCode)

    {

    //调用CSocekt 的OnReceive 函数

    CSocket::OnReceive(nErrorCode);

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

    m_pDoc->ProcessReceive(this);

    }

    其中,ProcessReceive()函数是CChatServerDoc 类的一个成员函数,在后面将会看到它的

    具体实现。

    (8)创建设定端口对话框

    对服务器来说,它可以通过“设定端口号”对话框来设定服务端口,如图11-9 所示。其

    中,对话框的ID 为IDD_SETUPDLG,Edit 控件的ID 为IDC_PORT。

    图11-9 “设定端口号”对话框

    枫叶文学网www.fywxw.com

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

    ·300·

    打开“ClassWizard”对话框,为此对话框创建一个类,取名为CPortDlg。然后为Edit

    控件增加变量int m_Port,在构造函数中将其初始化为2000。

    最后,在菜单栏中新建一菜单项,当单击此菜单项时,就会弹出如图11-10 所示的对话

    框。

    图11-10 对话框所对应菜单栏

    此菜单项的ID 为ID_SETPORT。

    (9)实现CChatServerDoc 类

    大量的工作都是在CChatServerDoc 类中实现的。在开始编写代码前,首先在文件

    “ChatServerDoc.h”
上一页 目录 下一页