10MFC通讯.pptVIP

  1. 1、本文档共18页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
MFC网络编程 CAsyncSocket、Csocket类 MFC提供的Winsock类 直接使用WinSock API编程(前面讲的编程方式): 需要了解用它进行网络编程的框架, 还要涉及复杂的消息驱动机制, 要自己设计处理套接口发送数据和接收数据的事件函数。 为简化套接字网络编程,更方便地利用Windows的消息驱动机制,微软的基础类库(Microsoft Foundation Class Libary,简称MFC),提供了两个套接字类: CAsyncSocket类 CSocket类 CAsyncSocket类 基于异步模式 CAsyncSocket类,在很低的层次上对Windows Sockets API进行了封装。 它的成员函数和WinSock API的函数调用直接对应。 一个CAsyncSocket对象代表了一个Windows套接字。它是网络通信的端点。 该类将根据不同的Windows套接字消息调用CAsyncSocket类的回调函数。 如果熟悉网络通信细节,仍希望充分利用WinSock API编程的灵活性,并能安全地控制程序,同时还希望利用Windows对网络事件通知的回调函数的便利,就应该使用CAsyncSocket类进行编程。 必须自己处理阻塞问题、字节顺序问题和字符串转换问题。 继承关系 CAsyncSocket类从Cobject类派生而来。 Csocket类从CAsyncSocket派生而来 在MFC中,CAsyncSocket,CSocket类 在afxSock.h中定义 源代码在sockcore.cpp中 头文件 新建支持套接字的工程 套接字支持做了什么? Stdafx.h #include afxsock.h CXXXAPP.CPP BOOL CTestASYNCApp::InitInstance() { if (!AfxSocketInit()) {AfxMessageBox(IDP_SOCKETS_INIT_FAILED); return FALSE; } …… 新建套接字类 选择菜单“插入/新建类”,进入“New Class”对话框,如图6.12所示。 重写事件 使用类向导(点菜单View/ClassWizard) 右键菜单 图6.13 为套接字类添加响应消息的事件处理成员函数 调用自己的套接字类 引用头文件: 一般在CXXXDLg.cpp中引用 定义模块级变量: CmySock m_servS; CmySock * m_servS; 创建套接字实例 (1)如:CAsyncSocket aa; aa.Create(…); 这种方式,直接定义了CAsyncSocket类的变量。编译时,会隐式地调用该类的构造函数。在堆栈上创建该类对象实例。 使用对象实例变量调用该类的成员变量或成员函数时,要用.操作符。 (2)如: CAsyncSocket* Pa; Pa = new CAsyncSocket; Pa-Create(…); 这种方式,先定义异步套接口类型的指针变量,再显式调用该类的构造函数。在堆上创建该类对象实例,并将指向该对象实例的指针返回给套接口指针变量。 使用对象实例指针变量调用该类成员时,要用-操作符。 create Create()函数的调用格式为: BOOL Create( UINT nSocketPort = 0, Int nSocketType = SOCK_STREAM, Long Levent = FD_READ | FD_WRITE | FD_OOB FD_ACCEPT |FD_CONNECT | FD_CLOSE, LPCTSTR lpszSocketAddress = NULL ); 参数nSocketPort指定一个分配给套接口的端口号,默认值为0,说明由系统给该套接口分配一个端口号。 服务器程序应该明确地分配一个端口号( 熟知端口号) 。 客户程序中可以使用默认的0值。 CAsyncSocket类接受处理的消息事件 MFC框架对于六个网络事件的处理 在afxSock.h文件中的CAsyncSocket类的声明中,定义了与这六个网络事件对应的事件处理函数 virtual void OnReceive(int nErrorCode); 对应 FD_READ事件 virtual voi

文档评论(0)

weiwoduzun + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档