预览加载中,请您耐心等待几秒...
1/10
2/10
3/10
4/10
5/10
6/10
7/10
8/10
9/10
10/10

亲,该文档总共50页,到这已经超出免费预览范围,如果喜欢就直接下载吧~

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

CAsyncSocket类的应用实例 实现目标 应用实例是一个简单的聊天室程序,采用C/S模式,分为客户端程序和服务器端程序。 由于服务器只能支持一个客户,实际是一个点对点通信的程序。 客户端程序和服务器程序通过网络交换聊天的字符串内容,并在窗口的列表框中显示。实例程序的技术要点: 如何从CAsyncSocket类派生出自己的WinSock类。 理解WinSock类与应用程序框架的关系。 重点学习流式套接字对象的使用。 处理网络事件的方法。 实例简单,但能说明网络编程的许多问题。下面结合它详细说明MFC编程的细节。创建客户端程序创建客户端应用程序,采用对话框架构 1.使用MFCAppWizard创建客户端应用程序框架。 (1)在New对话框中,选择Projects卡,如图所示。选MFCAppWizard(exe),在ProjectName处填入工程名Talkc,在Location处选定存放此工程的目录。然后点击OK按钮。(2)出现MFCAppWizard设置的第一步对话框(MFCAppWizard–Step1),如图所示。从中选择Dialogbased的应用程序类型,语言支持选择中文(中国),使此工程能够正确地进行中文的输入、输出、显示及处理。然后点击NEXT按钮。(3)出现MFCAppWizard设置的第二步对话框(MFCAppWizards–Step2of4),如图所示,在WindowsSockets复选框上打上选择标记,表示应用程序将支持WinSock套接字。接受其它的默认设置。跳过后面的步骤,直接点击Finsh按钮。(4)出现新工程信息对话框(NewProjectInformation),说明了所创建的骨架工程的有关信息。如图所示。2.为对话框界面添加控件对象 在创建了应用程序骨架之后,可以布置程序的主对话框。 在MFC界面左方的工作区(workspace)中选择resourceView卡,从中选择Dialog,双击IDD_TALKC_DIALOG,右边会出现对话框,会出现控件面板。 利用控件面板可以方便地在程序的主对话框界面中添加相应的可视控件对象,如图所示。在主对话框中添加控件对话框中的控件属性按照下表修改控件属性。控件类型 3.为对话框中的控件对象定义相应的成员变量 在窗口菜单中点查看/建立类向导,进入类向导(ClassWizard)对话框,如图。选择成员变量卡(MemberVariables),用类向导为对话框中的控件对象定义相应的成员变量。确认ClassName是CTalkcDlg,在左边的列表框中选择一个控件,然后点“AddVariable”按钮,会弹出”AddMemberVariable”对话框,如图所示,然后按照表输入即可。表客户端程序对话框中的控件对象对应的成员变量4.创建从CAsyncSocket类继承的派生类 (1)为了能够捕获并响应socket事件,应创建用户自己的套接字类,它应当从CAsyncSocket类派生,还能将套接字事件传递给对话框,以便执行用户自己的事件处理函数。选择菜单“插入/类…”,进入“NewClass”对话框,如图所示。选择或输入以下信息: ClassType:选择MFCClass ClassInfoumation下的Name:输入CMySocket ClassInfoumation下的Baseclass:选择CAsyncSocket 点击“OK”按钮,系统会自动生成CMySocket类对应的包含文件MySocket.h和MySocket.cpp文件。 在VC界面的ClassView中就可以看到这个类。(2)利用类向导ClassWizard为这个套接字类添加响应消息的事件处理成员函数。 点菜单View/ClassWizard...,进入类向导对话框,选择MessageMaps(消息映射)卡,确认Classname是CMySocket,从Messages(消息)栏中选择事件消息,然后点击AddFunction按钮,就会看到在MemberFunction栏中添加了相应的事件处理函数。 如图所示,此程序中需要添加OnConnect,OnClose和OnReceive三个函数。这一步会在CMySocket类的MySocket.h中自动生成这些函数的声明,在MySocket.cpp中生成这些函数的框架,以及消息映射的相关代码。可参看后面的程序清单。图为套接字类添加响应消息的事件处理成员函数(3)为套接字类添加一般的成员函数和成员变量 在VC++的界面中,在工作区窗口选择ClassView卡,用右键单击CMySocket类,会弹出快捷菜单,选择其中的AddMemberFunction可以为该类添加成员函数;选择AddMemberVariable可以为该类添加成员变量。对这个套接字类,添