用WinInet开发Internet客户端应用指南(一)

一、概述

一个Internet客户端程序的目的是通过Internet协议如:HTTP、FTP等来存取网络数据源(服务器)的信息。客户端程序可以访问服务器获得象天气预报,股票价格、重要新闻数据,甚至是与服务器交换信息。Internet客户端程序可以通过外部网络(Internet)或内部网络(一般为Intranet)访问服务器。

为了开发Internet客户端程序。MFC类库提供了专门的 Win32 Internet 扩展接口,也就是WinInet。MFC将WinInet封装在一个标准的、易于使用的类集合中。在编写WinInet客户端程序时,你既可以直接调用Win32函数,也可以使用WinInet类库。

Win32 Internet 扩展提供了对普通Internet协议的访问,这些协议包括:HTTP、FTP和Gopher。Gopher已经渐渐淡出。借助于WinInet编程接口,开发人员不必去了解Winsock、TCP/IP和特定Internet协议的细节就可以编写出高水平的Internet客户端程序。WinInet为所有几种协议(HTTP、FTP和Gopher)提供了统一的函数集,也就是Win32 API接口。利用这些统一的函数集,大大简化了针对HTTP、FTP等协议的编程,从而轻松地将Internet集成到自己的应用程序中。底层协议的转换(如从FTP到HTTP)只要对源代码稍作修改就可以完成。

在Visual C++工程中提供有两种方式来使用WinInet。一种是直接调用Win32 Internet函数,另一种是使用WinInet类库。

MFC对WinInet的封装是通过提供三个由CStdioFile派生类实现的。这三个派生类是:CInternetFile、 CHttpFile 和 CGopherFile。由于Gopher协议已经很少使用,所以本文将不再对CGopherFile进行讨论。对开发人员来说,不管你以前是否用过CStdioFile,WinInet都是很好理解并且易于使用的。它使得存取Internet数据易如反掌,使得Internet数据和本地数据的处理一致透明,数据的存储位置已经不再重要。

MFC WinInet 类有如下优点:

缓冲器输入输出

数据的类型安全处理

许多函数的参数都是缺省值

对普通的Internet错误进行异常处理

自动清除打开的句柄和连接

使用 WinInet 提供的API函数,你可以:

通过HTTP协议下载HTML页,HTTP协议是专门用于在服务器和客户浏览器之间传输HTML页。

发送FTP请求上传或下载文件以及获取服务器的目录信息。通过匿名登陆下载文件便是FTP的典型应用。

其它基于HTTP、FTP协议的应用。

使用 WinInet 的一般流程为:


图一

时间: 2024-08-22 14:31:34

用WinInet开发Internet客户端应用指南(一)的相关文章

用WinInet开发Internet客户端应用指南(二)

二.实现步骤 大家知道,每个Internet客户端程序都伴随有一定的目的行为,如读文件.写文件.删除文件等等.客户端的程序要实现这些行为的先决条件是建立Internet连接.然后再根据不同的目的进行具体的操作.为了方便起见,下面这这些张表格针对不同的应用行为列出了所需要的具体操作.其中列出了一般的Internet URL (FTP.或者 HTTP)客户端行为要实现某个目标所必须使用的方法.这张表格的内容来自MSDN.我对部分我认为重要的地方做了补充. (表一)一个典型的Internet客户端程序

《微软云计算Windows Azure开发与部署权威指南》——6.7 AppFabric服务总线REST的服务开发

6.7 AppFabric服务总线REST的服务开发 微软云计算Windows Azure开发与部署权威指南 本节介绍如何建立一个简单的服务总线主应用程序,使该程序公开一个基于REST的访问接口.任一台Web客户端,比如浏览器,都可以使用HTTP请求访问服务总线API.本示例使用的是WCF REST编程模型在服务总线上构建REST服务. 1.步骤一:注册账户 ① 在Windows Azure门户创建一个服务命名空间.可参考本章6.2小节的内容. ② 在Windows Azure Manageme

android缓存处理-Android开发中客户端如何进行数据的存储

问题描述 Android开发中客户端如何进行数据的存储 Android开发中客户端如何进行数据的存储以达到数据的缓存来减少与服务端的交互次数,并设置缓存时间?(求大神指导,最好有完整的代码) 十分需要!求帮助! 解决方案 推荐在客户端使用sqlite来存放本地的数据.因为是数据库,所以很多底层的事情不用考虑了.要放缓存,直接建立一个字段,获取的时间,这样判断下,如果超过,就再次访问服务器获取.

用MINA可以开发telnet客户端程序吗?

问题描述 我下载了Apache的MINA框架,准备开发telnet的客户端程序.但是看了它的示例程序,发现可以telnet到服务器,但是如何都验证不了登录.如果那位大虾有用MINA开发telnet客户端程序,麻烦指点一下publicclassMainClient{publicfinalstaticInetSocketAddressserverAddress=newInetSocketAddress("localhost",23);publicfinalstaticInetSocketA

java-Eclipse开发安卓客户端程序用来实现登陆注册功能

问题描述 Eclipse开发安卓客户端程序用来实现登陆注册功能 哪位大侠能够指导下: 用安卓写客户端程序,mysql为数据库存储用户的用户名和密码,现在需要的是用C/S模式,在Eclipse创建工程的时候,工程里面需要哪些文件,比如新建一个安卓应用工程,那么servlet的部分要放在哪,还是直接建一个web工程呢? 解决方案 你是要连接mysql数据库吗

vb opc-如何在VB中开发opc客户端

问题描述 如何在VB中开发opc客户端 前面服务器已经连接成功 Dim WithEvents ConnectedGroup As OPCAutomation.OPCGroup ConnectedOPCServer.OPCGroups.DefaultGroupIsActive = True ConnectedOPCServer.OPCGroups.DefaultGroupDeadband = 40 ConnectedGroup = ConnectedOPCServer.OPCGroups.Add(

用C#开发MotoRola客户端扫描

问题描述 最近买了MotoRola扫描设备,想要用C#开发个客户端扫描器,结合javaWEb系统,但是发现MOTORola设备扫描时,只要扫描到二维码或者条形码都会亮灯,如何设置扫描时不亮灯,等扫描结果正确或者错误以后,通过系统控制它再亮灯呢? 解决方案 解决方案二:找MotoRola扫描设备开发手册,DEMO等,这种问题除非有人也开发过,不然没人知道解决方案三:这得找厂家.........

pb12如何开发一个客户端与服务器端

问题描述 pb12如何开发一个客户端与服务器端 pb12如何开发一个客户端与服务器端,要添加哪些.dll或.pbl文件吗,参考资料太少里了 解决方案 http://bbs.csdn.net/topics/391856852?page=2#post-400565718 解决方案二: http://bbs.csdn.net/topics/391856852?page=2#post-400565718 解决方案三: http://bbs.csdn.net/topics/391856852?page=2

系统-利用免费空间开发CS客户端程序

问题描述 利用免费空间开发CS客户端程序 最近小弟想做一个CS客户端软件,其实也算不上CS架构,因为大部分运算都在客户端完成,只是这个软件需要基本的用户登陆.注册系统. 但是现在网上服务器好像都不太便宜,小弟想初期先运行"内测"一段时间,如果比较火受欢迎再考虑增加投入,所以目前不想花钱来做测试. 于是我想到了免费空间,现在网上有不少地方可以申请到免费的网站空间,只是小弟只是对C#和VB略知一二,对网页编程就是小白一个. 不知道各位大神能否指点一二,给个方向让小弟摸索学习? 需求概括:利