- 1、本文档共81页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 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类,这个
您可能关注的文档
- 第14课 动作分析与动素课件.ppt
- 第13章 经济地理学研究方法课件.ppt
- 思想政治工作汇报课件.ppt
- 第17章 飞行管理系统课件.ppt
- 第1章 市场调查基本问题课件.ppt
- 第14讲—地形制图分析课件.ppt
- 成功授权管理课件.ppt
- 第1章 汽车单片机概述课件.ppt
- 第1章 计算机与信息社会课件.ppt
- 第1章 ERP概论课件.ppt
- 专题9计划与安排(词汇句式范文)-中考英语作文复习.docx
- 34羧酸羧酸衍生物-2022-2023学年高二化学素养目标讲义(人教版2019选择性必修3).docx
- Module3(基础卷)-2023-2024学年英语三年级下册单元速记巧练(三起).docx
- 专题二离子反应第1讲电解质的电离(分层练习)-2023年初中升高中化学衔接课程.docx
- 2023-2024学年小升初英语精美讲义练习第2讲5AM2(牛津上海版试用本)(教师版).docx
- 第23讲电解原理-2023年高考化学一轮复习全考点精选课件.pptx
- 专题15数据的收集与整理重难点题型15个.docx
- 考点一字音和字形真题演练-2023年中考语文一轮大单元复习(原卷版).docx
- 人教A版2019(综合检测卷).docx
- 必清13新型电池-2022年高考化学复习(通用版)(原卷版).doc
文档评论(0)