第2章 MFC Socket编程课件.ppt

  1. 1、本文档共81页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第2章 MFC Socket编程课件

;2.1.1 MFC简介 MFC是很庞大的,以Visual C++ 6.0所带的MFC 4.21为例,已经包含了多达上百个类、结构和接口!;层次结构可分为如下几种不同的类型: ? 应用程序框架; ? 图形绘制的绘制对象; ? 文件服务; ? 异常处理; ? 结构,如Lists、Arrays和Maps; ? Internet服务; ? OLE 2; ? 数据库;1.CAsyncSocket类 CAsyncSocket类是从MFC的根类CObject派生出来的,它在较低的级别上封装Windows Socket API,因此类中包含的大部分成员函数和底层Winsock API函数有很多相似之处,有的甚至连名称和参数叫法都是相同或相近的。 ;2.CSocket类及其相关类 (1)CSocket类。 CSocket类是从CAsyncSocket类派生而来的,它继承了CAsyncSocket对Windows Socket API的封装。与CAsyncSocket对象相比,CSocket对象代表了Windows Socket API的更高一级的抽象化。 ;(2)CSocket与CArchive、CSocketFile类的配合使用。 使用CSocket类编写网络程序,既可以使用如CAsyncSocket类网络程序一样的Send和Receive函数来收发信息,也可以与CSocketFile类和CArchive类一起管理数据的发送和接收。 ;补充:CString与string;2.2.1 客户端—服务器方式(C/S模式) 1.网络程序的通用体系结构 客户端—服务器方式所描述的是进程之间服务和被服务的关系。主机A运行客户端程序而主机B运行服务器程序。 ;;;基于TCP的网络应用程序通信过程;2.最简单的Socket通信流程 这里先来考虑一个只有客户端向服务方发信息的单向通信,并且也只有客户端会主动提出断开连接的最简单的情形(相反过程的原理是一样的),其双方Socket之间的关系如图所示。 ;由上面这个过程很容易得出对应的Socket通信流程。 ;1.对象分析 若要实现上节分析的Socket通信流程共需要三个套接字对象:客户端一个(称为“客户Socket”);服务器两个(一个用于监听,称为“监听Socket”;另一个用于接收客户发来的信息,称为“服务Socket”)。这三个套接字对象对应三个Socket类,都继承自CAsyncSocket,分别为它们取名如表2.2所示(表中的类名也是后面程序中需要使用的)。 ;案例:使用CAsyncSocket类实现网络通信;案例:使用CAsyncSocket类实现网络通信;案例:使用CAsyncSocket类实现网络通信;案例:使用CAsyncSocket类实现网络通信;案例:使用CAsyncSocket类实现网络通信;案例:使用CAsyncSocket类实现网络通信;案例:使用CAsyncSocket类实现网络通信;案例:使用CAsyncSocket类实现网络通信;案例:使用CAsyncSocket类实现网络通信;案例:使用CAsyncSocket类实现网络通信;案例:使用CAsyncSocket类实现网络通信;案例:使用CAsyncSocket类实现网络通信;案例:使用CAsyncSocket类实现网络通信;案例:使用CAsyncSocket类实现网络通信;案例:使用CAsyncSocket类实现网络通信;添加CClientSocket的OnConnect虚函数;添加CClientSocket的OnConnect虚函数;添加CClientSocket的OnConnect虚函数;案例:使用CAsyncSocket类实现网络通信;;案例:使用CAsyncSocket类实现网络通信;具体实现;案例:使用CAsyncSocket类实现网络通信;1.非指针程序的机制缺陷 前面的程序存在以下缺陷: 1)Socket的创建、使用和销毁不灵活。 2)程序代码分散。如服务端就有CListenSocket和CServerSocket两个类的基类是CAsyncSocket。 ;1.非指针程序的机制缺陷 前面的程序存在以下缺陷: 3)代码可读性差。 如果在Socket的代码中要访问和控制主对话框界面上的控件,则需要运用AfxGetApp()全局函数获取主窗口CWinApp类指针,这意味着每一个在Socket中访问到主界面控件的语句前都要写上冗长的类似下面的这句代码: ?((CChatClientDlg*)(AfxGetApp()-m_pMainWnd))- ;2.用对话框指针机制实现的Socket程序 (1)建立工程。 分别创建客户端和服务器工程,客户和服务器工程中各添加一个基于CAsyncSocket类的MySocket类,这个

文档评论(0)

gm8099 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档