网站导航免费论文 原创论文 论文搜索 原创论文 网学软件 学术大家 资料中心 会员中心 问题解答 原创论文 论文素材 设计下载 最新论文 下载排行 论文上传 在线投稿 联系我们
返回网学首页
网学联系
最新论文 推荐专题 热门论文 素材专题
当前位置: 网学 > 编程文档 > VC++ > 正文
对MFC封装Windows通讯API的研究
来源:Http://myeducs.cn 联系QQ:点击这里给我发消息 作者: 用户投稿 来源: 网络 发布时间: 12/10/15
下载{$ArticleTitle}原创论文样式
ind、CFtpFileFind、CGopherFileFind、CGopherLocator和CInternetException。

    3.Internet服务器API(ISAPI)

    微软的IIS是惟一与WindowsNTServer操作系统紧密集成的WWW服务器,它作为Internet/Intranet服务器应用范围很广。IIS允许扩展功能,这是通过ISAPI来实现的,ISAPI描述了与Internet服务器之间的接口。用ISAPI提供的工具,可建立高性能、高效率、满足商业安全及符合新的IIS标准的Internet服务器。同样,ISAPI在MFC中由典型的类所封装,包括CHttpFilter、CHttpFilterContext、CHttpServer、CHttpServerContext、RelatedClasses和CHtmlStream。

三、WinSockAPI的MFC封装类
    一些网络应用程序(如网络电话、多媒体会议工具)实时性要求非常强,要求能够直接应用WinSock发送和接收数据。这时设计者应该选择直接应用WinSockAPI或者由MFC封装的WinSockAPI。新开发的应用程序中,为了充分利用MFC的优势,首选方案应当是MFC中的CAsyncSocket类和CSocket类,这两个类完全封装了WinSockAPI,并提供更多的便利。本文介绍应用这两个类的编程模型,并引出相关的成员函数与一些概念的解释。
    1.CAsyncSocket类和CSocket类简述
    CAsyncSocket类和CSocket类的继承关系由附图给出。CSocket类是由CAsyncSocket继承而来的,事实上,在MFC中CAsyncSocket逐个封装了WinSockAPI,每个CAsyncSocket对象代表一个WindowsSocket,使用CAsyncSocket类要求程序员对网络编程较为熟悉。相比起来,CSocket类是CAsyncSocket的派生类,继承了它封装的WinSockAPI。一个CSocket对象代表了一个比CAsyncSocket对象更高层次的WindowsSocket抽象,CSocket类与CSocketFile类和CArchive类一起工作来发送和接收数据,因此使用它更加容易。CSocket对象提供阻塞模式,因为阻塞功能对于CArchive的同步操作是至关重要的。在这里有必要对阻塞的概念作一解释:一个socket可以处于“阻塞模式”或“非阻塞模式”,当一个套接字处于阻塞模式(即同步操作)时,它的阻塞函数直到操作完成才会返回控制权,之所以称为阻塞是因为此套接字的阻塞函数在完成操作返回之前什么也不能做。如果一个socket处于非阻塞模式(即异步操作),则会被调用函数立即返回。在CAsyncSocket类中可以用GetLastError成员函数查询最后的错误,如果错误是WSAEWOULDBLOCK则说明有阻塞,而CSocket绝不会返回WSAEWOULDBLOCK,因为它自己管理阻塞。微软建议尽量使用非阻塞模式,通过网络事件的发生而通知应用程序进行相应的处理。但在CSocket类中,为了利用CArchive处理通讯中的许多问题和简化编程,它的一些成员函数总是具有阻塞性质的,这是因为CArchive类需要同步的操作。在Win32环境下,如果要使用具有阻塞性质的套接字,应该放在独立的工人线程中处理,利用多线程的方法使阻塞不至于干扰其他线程,也不会把CPU时间浪费在阻塞上。多线程的方法既可以使程序员享受CSocket带来的简化编程的便利,也不会影响用户界面对用户的反应。

    2.CAsyncsocket类编程模型

    在一个MFC应用程序中,要想轻松处理多个网络协议,而又不牺牲灵活性时,可以考虑使用CAsyncSocket类,它的效率比CSocket类要高。CAsyncSocket类针对字节流型套接字的编程模型简述如下:

    (1)构造一个CAsyncSocket对象,并用这个对象的Create成员函数产生一个Socket句柄。可以按如下两种方法构造:

CAsyncSocketsock;
Sock.Create();
file://使用默认参数产生一个字节流套接字

CAsyncSocket*pSocket=newCAsyncSocket;
intnPort=27;
pSocket->Create(nPort,SOCK-

网学推荐

免费论文

原创论文

浏览:
设为首页 | 加入收藏 | 论文首页 | 论文专题 | 设计下载 | 网学软件 | 论文模板 | 论文资源 | 程序设计 | 关于网学 | 站内搜索 | 网学留言 | 友情链接 | 资料中心
版权所有 QQ:3710167 邮箱:3710167@qq.com 网学网 [Myeducs.cn] 您电脑的分辨率是 像素
Copyright 2008-2015 myeducs.Cn www.myeducs.Cn All Rights Reserved
湘ICP备09003080号