网络编程实用教程 叶树华 高志红 网络编程实用教程_第5章

网络编程实用教程 叶树华 高志红 网络编程实用教程_第5章

ID:43776814

大小:1.42 MB

页数:79页

时间:2019-10-14

网络编程实用教程 叶树华 高志红 网络编程实用教程_第5章_第1页
网络编程实用教程 叶树华 高志红 网络编程实用教程_第5章_第2页
网络编程实用教程 叶树华 高志红 网络编程实用教程_第5章_第3页
网络编程实用教程 叶树华 高志红 网络编程实用教程_第5章_第4页
网络编程实用教程 叶树华 高志红 网络编程实用教程_第5章_第5页
资源描述:

《网络编程实用教程 叶树华 高志红 网络编程实用教程_第5章》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、第5章MFCWinSock类的编程为简化套接字网络编程,更方便地利用Windows的消息驱动机制,微软的基础类库(MicrosoftFoundationClassLibary,简称MFC),提供了两个套接字类,在不同的层次上对WindowsSocketAPI函数进行了封装,为编写WindowsSocket网络通信程序,提供了两种编程模式。CAsyncSocket类,在很低的层次上对WindowsSocketsAPI进行了封装。它的成员函数和WindowsSocketsAPI的函数调用直接对应。一个CAsync

2、Socket对象代表了一个Windows套接字。它是网络通信的端点。除了把套接字封装成C++的面向对象的形式供程序员使用以外,这个类唯一所增加的抽象就是将那些与套接字相关的Windows消息变为CAsyncSocket类的回调函数。CSocket类,从CAsyncSocket类派生,是对WindowsSocketsAPI的高级封装。CSocket类继承了CAsyncSocket类的许多成员函数,用法一致。CSocket类的高级表现在三个方面:(1)CSocket结合archive类来使用套接字。(2)CSoc

3、ket管理了通信的许多方面,如字节顺序问题和字符串转换问题。(3)CSocket类为Windows消息的后台处理提供了阻塞的工作模式。这两个类提供了事件处理函数,编程者通过对事件处理函数进行重载,可方便地对套接字发送数据、接收数据等事件进行处理。同时,可以结合MFC的其它类来使用这两个套接字类,并利用MFC的各种可视化向导,从而大大简化了编程。在MFC中,有一个名为afxSock.h的包含文件,在这个文件中定义了CAsyncSocket,CSocket,和CSocketFile这三个套接字类。5.1Casyn

4、cSocket类CAsyncSocket类从Cobject类派生而来,如图5.1所示:图5.1CAsyncSocket类的派生关系5.1.1使用CAsyncSocket类的一般步骤网络应用程序一般采用客户/服务器模式,它们使用使用CAsyncSocket类编程的步骤有所不同,参看表5.1。5.1.2创建CasyncSocket类对象本书将CAsyncSocket类对象称为异步套接字对象。创建异步套接字对象一般分为两个步骤,首先构造一个CAsyncSocket对象,再创建该对象的底层的SOCKET句柄。1.创建

5、空的异步套接字对象通过调用CAsyncSocket类的构造函数,创建一个新的空CAsyncSocket类套接字对象,构造函数不带参数。然后必须调用它的Create成员函数,来创建底层的套接字数据结构,并绑定它的地址。有两种使用方法,会在不同的位置创建。(1)如:CAsyncSocketaa;aa.Create(。。。。。。);(2)如:CAsyncSocket*Pa;Pa=newCAsyncSocket;Pa->Create(。。。。。。);2.创建异步套接字对象的底层套接字句柄通过调用CAsyncSocke

6、t类的Create()成员函数,创建该对象的底层套接字句柄,决定套接字对象的具体特性。调用格式为:BOOLCreate(UINTnSocketPort=0,IntnSocketType=SOCK_STREAM,LongIevent=FD_READ

7、FD_WRITE

8、FD_OOB

9、FD_ACCEPT

10、FD_CONNECT

11、FD_CLOSE,LPCTSTRlpszSocketAddress=NULL);举例:创建一个使用27端口的流式异步套接字对象。CAsyncSocket*pSocket=newCAsyncSo

12、cket;intnPort=27;pSocket->Create(nPort,SOCK_STREAM);5.1.3关于CAsyncSocket类可以接受并处理的消息事件1.六种套接字相关的事件与通知消息参数Ievent可以选用的六个符号常量是在winsock.h文件中定义的。#defineFD_READ0x01#defineFD_WRITE0x02#defineFD_OOB0x04#defineFD_ACCEPT0x08#defineFD_CONNECT0x10#defineFD_CLOSE0x20他们代表M

13、FC套接字对象可以接受并处理的六种网络事件,当事件发生时,套接字对象会收到相应的通知消息,并自动执行套接字对象响应的事件处理函数。(1)FD_READ事件通知:通知有数据可读。(2)FD_WRITE事件通知:通知可以写数据。(3)FD_ACCEPT事件通知:通知监听套接字有连接请求可以接受。(4)FD_CONNECT事件通知:通知请求连接的套接字,连接的要求已被处理。(5)FD_CLOSE事件通知:

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。