第23章MFC Socket编程.pptVIP

  1. 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第23章MFC Socket编程

第23章 MFC Socket编程 在进行网络编程时,MFC程序员通常不直接使用Windows Socket API,因为MFC为编写网络通信程序提供了非常方便的类库。主要包括CAsyncSocket类和CSocket类。 CasyncSocket类对Windows Socket API进行了封装,为开发者网络程序员提供了更加有力而灵活的方法。顾名思义,它是一个异步非阻塞Socket封装类。 CSocket类是由CAsyncSocket类继承下来的,它提供了比CAsyncSocket更高层的WinSock API接口。 本章将介绍如何利用MFC提供的CAsyncSocket类与CSocket类进行网络编程。 23.1 CAsyncSocket类 CAsyncSocket类对Windows Socket API进行了低级封装。在下面介绍CAsyncSocket的主要方法和事件。 23.1.1 成员变量和构造函数 CAsyncSocket类包含一成员变量CAsyncSocket::m_hSocket,m_hSocket记录了该CAsyncSocket对象中封装的套接字句柄。CAsyncSocket类的构造函数主要包含CAsyncSocket()和Create()两个函数,这两个函数具体解释如下所示: 1.CAsyncSocket()函数 2.Create()函数 23.1.2 绑定地址 Bind()方法将本机地址关联到套接字上。在流式套接字服务中,可以用在Connect()或Listen()调用之前。而在报文试服务中,此成员函数必须使用,而且用在Socket生成完成之后,通过调用Bind()让Windows套接字知道自己的地址和端口号,也就是说Bind()通过将本地名分配给未命名的套接字,建立本地联系。其原型如下: BOOL Bind( UINT nSocketPort, LPCTSTR lpszSocketAddress = NULL ); BOOL Bind ( const SOCKADDR* lpSockAddr, int nSockAddrLen ); 23.1.3 将套接字设置为监听状态 Listen()方法用于监听套接字的连接请求。其原型如下: BOOL Listen( int nConnectionBacklog = 5 ); 23.1.4 发送连接请求 Connect()方法用于建立一个套接字连接。其原型如下: BOOL Connect( LPCTSTR lpszHostAddress, UINT nHostPort ); BOOL Connect( const SOCKADDR* lpSockAddr, int nSockAddrLen ); 23.1.5 接受连接请求 通过调用Accept()成员函数来,接受一个套接字的连接。其原型如下所示: virtual BOOL Accept( CAsyncSocket rConnectedSocket, SOCKADDR* lpSockAddr = NULL, int* lpSockAddrLen = NULL ); 23.1.6 控制套接字模式 成员函数IOCtl()用于控制套接字的模式,它可以用于任意状态、任意类型的套接字。其原型如下: BOOL IOCtl( long lCommand, DWORD* lpArgument ); 23.1.7 发送数据 CAsyncSocket类中用于接收数据的成员函数有连个:Send与SendTo。下面对这两个函数进行详细介绍。 1.Send()函数 2.SendTo()函数 23.1.8 接收数据 CAsyncSocket类中用于接收数据的成员函数有两个:Receive()与ReceiveFrom()。下面对这两个函数进行详细介绍。 1.Receive()函数 2.ReceiveFrom()函数 23.1.9 断开数据传输 ShutDown()方法用于在套接字上断开数据的发送或接收。该函数可以用于任意类型的套接字。其原型如下: BOOL ShutDown( int nHow = sends ); 23.1.10 关闭套接字 Close()方法用于关闭套接字。其原型如下: virtual void Close( ); Close()方法释放套接字描述符,因此,在调用该方法后,再对其进行访问会导致错误。当CAsyncSocket对象被释放时,会自动调用Close()方法。 23.1.11 网络事件处理 通过调用AsyncSelect()成员函数来设置套接字需要通告的事件。此函数用于指定哪些事件通告函数将被套接字调用。AsyncSelect()会自动将此套接字设置为非阻塞模式。其原型如下: BOOL As

文档评论(0)

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

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

版权声明书
用户编号:7065136142000003

1亿VIP精品文档

相关文档