摘 要
本系统使用Mircosoft的MFC所提供的Winsock套接字类来创建一个最为简单的客户机服务器应用,这个类中用到的最重要的一项技术是通过对Csocket、CArchive和CSocketFile 三个类的联合是用来使得对网络数据传输就像是使用本地文件一样简单。然而,不管是客户端,还是服务器,其基本工作原理都是一样的,都是由Cdocument类的实例来负责完成消息的本地处理工作...
连接的建立:
当系统启动以后,会首先判断连接状态,如果已连接,则退出处理过程,否则将会创建一个连接,实现代码段详见 附录(程序段1 (ChatClientDoc.cpp))...
消息的发送:
用户需要编辑和发送信息,以实现向其他用户传递消息的效果。
实现消息的发送核心代码如下:...
消息的接收:
用户需要接收消息,以实现从其他用户处了解信息。
实现消息的接收的代码段详见 附录(程序段2 (ChatClientDoc.cpp))...
目 录
1 MFC的聊天系统实现课程设计概述 1
1.1 几个基本概念 1
1.1.1 基本操作函数 1
1.1.2 软件狗 2
1.1.3 加密狗原理 3
1.2 客户机/服务器编程模型 4
1.2.1 客户机/服务器 4
1.2.2 面向连接的编程模型 4
1.2.3 无连接编程模型 4
2 MFC的聊天系统实现基本设计 5
2.1 基本设计分析 5
2.1.1 连接的建立 5
2.1.2 消息的发送 5
2.1.3 消息的接收 5
2.2 设计界面 5
2.2.1 客户端 5
2.2.2 服务器端 8
3 MFC的聊天系统实现设计分析 9
3.1 系统设计分析 9
3.1.1 客户端的.分析 9
3.1.2 服务器端的分析 11
3.2 加密设计 12
3.2.1 程序保护的加密狗设计 12
4 总结 13
4.1 总结 13
4.2 心得体会 13
参考文献 14
附录 15
与工作者线程不同的是,用户界面线程通常用于处理用户的输入,响应用户产生的消息。为了建立一个用户界面线程,需要从CWinThread引出自定义的类,并将该类的运行时信息传给用户界面形式的AfxBeginThread函数,以便创建用户界面线程。
一般来说,用户界面线程的创建过程需要先从基类CWinThread中派生出用户自定义的新类,再使用AfxBeginThread函数创建线程。
【范例17-1】下面将通过一个实例来讲述如何创建一个用户界面线程。该实例实现创建一个独立于应用程序的窗口,其具体操作步骤如下所述。
新建一个MFC单文档应用程序。单击【File】|【New】菜单项,打开新建对话框,选择建立【MFC AppWizard[exe]】工程,为工程命名为“创建线程”。在AppWizard的第一步中选中【Single document】,其他步骤按照默认设置,单击【Finish】按钮完成创建。
添加菜单项。为了演示出该实例创建独立于应用程序的用户界面线程,在该工程中添加新的菜单项“用户界面线程”用于创建和启动线程。具体操作为:
打开工作区的【ResourceView】选项卡,修改MFC应用程序向导自动生成的菜单资源。在原菜单基础上再添加一个弹出式菜单“线程”。在其下面添加菜单项“用户界面线程”,设置其ID为ID_THREAD_GUI,如图17-3所示。
从CWinThread中派生新类。派生新类的方法很简单,在以前章节中也介绍过。可以使用ClassWizard工具单击【Add Class】|【New】命令,也可以通过打开工作区【ClassView】选项卡。右键单击最顶层类集,在弹出的快捷方式菜单中选择【New Class】菜单项来启动【New Class】对话框。在基类列表框中选择CWindThread类,然后在【Name】文本框中输入派生类名。该实例定义其派生类为MyThread。
单击【OK】按钮后即创建了CWinThread类的派生类MyThread。此时读者在工作台的【FileView】标签中找到MyThread.h文件,打开后可看到如下的类定义。
// MyThread thread
claMyThread : public CWinThread
{
DECLARE_DYNCREATE(MyThread)
protected:
MyThread();
……
DECLARE_MESSAGE_MAP()
。
【mfc课程设计心得体会】相关文章: