第5章 mfc winsock类的编程 为简化套接字网络编程,更方便地利用windows的消息驱动机制,微软的基础类库(microsoft foundation class libary,简称mfc),提供了两个套接字类,在不同的层次上对window是s socket api函数进行了封装,为编写windows socket网络通信程序,提供了两种编程模式。.pptVIP
- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第5章 mfc winsock类的编程 为简化套接字网络编程,更方便地利用windows的消息驱动机制,微软的基础类库(microsoft foundation class libary,简称mfc),提供了两个套接字类,在不同的层次上对window是s socket api函数进行了封装,为编写windows socket网络通信程序,提供了两种编程模式。
5.2.1 创建CSocket对象 分为两个步骤: (1)调用CSocket类的构造函数,创建一个空的CSocket对象。 (2)调用此CSocket对象的Create()成员函数,创建对象的底层套接字。调用格式是: BOOL Create( UINT nSocketPort = 端口号, Int nSocketPort = SOCK_STREAM | SOCK_DGRAM, LPCTSTR lpszSocketAddress = 套接字所用的网络地址 ); 如果打算使用CArchive对象和套接字一起进行数据传输工作,必须使用流式套接字。 5.2.2 建立连接 CSocket类使用基类CAsyncSocket的同名成员函数Connect()、Listen()、Accept()来建立服务器和客户机套接字之间的连接,使用方法相同。不同的是:CSocket类的Connect()和Accept()支持阻塞调用。比如:在调用Connect()函数时会发生阻塞,直到成功地建立了连接或有错误发生才返回,在多线程的应用程序中,一个线程发生阻塞,其他的线程仍能处理Windows事件。 5.2.3 发送和接收数据。 在创建CSocket类对象后,对于数据报套接字,直接使用CSocket类的SendTo()、ReceiveFrom()成员函数来发送和接收数据。对于流式套接字,首先在服务器和客户机之间建立连接,然后使用CSocket类的Send()、Receive()成员函数来发送和接收数据,它们的调用方式与CAsyncSocket类相同。? 不同的是:CSocket类的这些函数工作在阻塞的模式。比如,一旦调用了Send()函数,在所有的数据发送之前,程序或线程将处于阻塞的状态。一般将CSocket类与CArchive类和CSocketFile类结合,来发送和接收数据,这将使编程更为简单。 5.2.4 CSocket类与CArchive类和CSocketFile类 使用CSocket类的最大优点在于,应用程序可以在连接的两端通过CArchive对象来进行数据传输。具体做法是: (1)创建CSocket类对象 (2)创建一个基于CSocketFile类的文件对象,并把它的指针传给上面的已创建的CSocket对象。 (3)分别创建用于输入和输出的CArchive对象,并将它们与这个CSocketFile文件对象连接。 (4)利用CArchive对象来发送和接收数据。 图5.3 CSocket、CArchive和CSocketFile类在传输数据时的作用 下面是一段示例代码: CSocket exSocket; // 创建一个空的 CSocket对象。 CSocketFile* pExFile; // 定义一个 CSocketFile对象指针。 CArchive* pCArchiveIn; // 定义一个用于输 入的Carchive对象指针。 CArchive* pCArchiveOut;// 定义一个用于输 出的Carchive对象指针。 exSocket.Create(); // 创建Csocket对象 的底层套接字。 // 创建CSocketFile对象,并将CSocket对象的指针传递给它。 pExFile = new CSocketFile( exSocket,TRUE); //创建用于输入的CArchive对象 pCArchiveIn = new CArchive(pExFile, CArchive::load); //创建用于输出的CArchive对象。 pCArchiveOut = new CArchive(pExFile, CArchive::store); 5.2.5 关闭套接字和清除相关的对象, 在使用完CSocket对象以后,应用程序应调用它的Close()成员函数来释放套接字占用的系统资源,也可以调用它的ShutDown()成员函数来禁止套接字读写。而对于相应的CArchive对象、CSocketFile对象和CSocket对象,可以将它们销毁;也可以不作处理,因为当应用程序终止时,会自动调用这些对象的析构函数,从而释放这些对象占用的资源。 5.3 CSocket类的编程模型 下面给出针对流式套接字的CSocket类的编程模型。分为服务器端和客
您可能关注的文档
- 第3章 mc但s - 51单片机指令系统.ppt
- 第3章 城镇燃气都管网系统等及站场.doc
- 第3章 交流电力拖动系统基础 以交流电动机为原动机的电力拖动系统称为交流电力拖动系统。交流电动机有异步电发动机和同步电动机,这两种类型的电动机相比较,异步电动机具有结构简单、运行可靠、维护方便、价格低廉等优点,交流电力拖动系统中的电动机主要是三相异步电动机。.ppt
- 第3章 离散傅立叶变换 时dfsdfs的性质dftdft的性质循环卷积利用dft计算线性卷积频率域抽样fft.ppt
- 第3章 蜂窝移动通信的组网技术 3.1 频率资源的有效利用3.2 蜂窝小区的概念和区域覆盖3.3 干扰和信道容量3.4 移动通信中的多址技术3.5 蜂窝移动通信的交换技术3.6 蜂窝移动通信的信令技术3.都7 蜂窝移动通信网综述.ppt
- 第3章 没大但气压的测量(郑).doc
- 第3章 条不确定(风险)下的选择理论.ppt
- 第3章 消毒灭菌与病原微生物实验室生物安全disinfection, sterilization and biosafety of pathogen lab.1中.5 teaching hrs.ppt
- 第3章 数据表但的管理 3.1表的创建及修改.ppt
- 第3章 水准测的发量(10学时).doc
- 第05章路由但器基时础及配置v.doc
- 第5章 adamsview呢虚拟样机仿真分析 5.1 adamsview函数 5.2 设计变量的创建 5.3 虚拟样机参数化 5.4 约束函数的创建 5.5 目标函数的创建 5.6 仿真剧本创建 5.7 虚拟样机优化分析设置 5.8 求解器(optimizer)设置 5.9 图形显示(display)设置 5.10 文件输出(output)设置 5.11 检查参数化分析结果.ppt
- 第5章 点上水闸自测题.doc
- 第5章 对面向对象程序设计.ppt
- 第3章四 交通都量分析.doc
- 第5章 关系数发据库标准语言—sql.ppt
- 第4章上 条习题解.doc
- 第05章 fl发u的ent网格.doc
- 第5章 你 lpc2000系列arm硬件结构.ppt
- 第5章 循环时结构关程序设计.doc
文档评论(0)