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

二、实现步骤

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

(表一)一个典型的Internet客户端程序的处理流程

目的 方法 结果
开始一个Internet session 创建 CInternetSession 对象 初始化WinInet,并连接服务器
读取或设置 InternetQuery 选项 (如超时或重试次数) 调用 CInternetSession::SetOption 不成功返回FALSE
建立回调函数监视session状态 调用CInternetSession::EnableStatusCallback

建立回调函数

CInternetSession::OnStatusCallback,重写OnStatusCallback,创建自己的回调例程
Internet服务器Intranet服务器或本地文件 调用 CInternetSession::OpenURL 解析并打开到指定服务器的连接,返回CStdioFile(如果你传递的OpenURL是本地文件名)或CInternetFile对象,通过存取这个对象,获得服务器或文件的数据
读文件 调用 CInternetFile::Read 用你提供的Buffer读指定的字节数
异常处理 在 CInternetException 类中处理 处理所有普通的 Internet 异常类型
结束 Internet session 处理 CInternetSession对象 自动清除打开的句柄的连接

(表二)典型的 FTP 客户端程序实现的一般步骤

目的 方法 结果
开始一个FTP会话,建立一个FTP连接 创建一个CInternetSession对象,调用CInternetSession::GetFtpConnection 初始化WinInet

并联接服务器

连接到一个FTP Server 用CInternetSession::GetFtpConnection 返回一个CFtpConnection对象
CD到 FTP 服务器的一个新目录 用CFtpConnection::SetCurrentDirectory CD到FTP服务器的一个

新目录

Find 第一个FTP目录中的文件 创建一个CFtpFileFind对象,调用CFtpFileFind::FindFile,OpenURL函数返回一个只读资源对象;调用CFtpFileFind::FindFile Find第一个文件,如果文件每找到返回FALSE
枚举所有可获得的资源,Find下一个FTP目录中的文件 Find下一个资源,调用CFtpFileFind::FindNextFile直到返回FALSE。 Find下一个文件

如果文件没找到返回FALSE

打开FindFile或FindNextFile找到的文件(用于读写) 调用CFtpConnection::OpenFile,参数为FindFile或FindNextFile返回的文件名 ,创建并打开一个CInternetFile对象 打开FindFile或FindNextFile找到的文件(用于读写),返回一个CInternetFile对象
读写文件 以读方式打开FTP文件,用CInternetFile::Read 使用你指定的缓冲读

指定的字节数

写FTP文件 以写方式打开FTP文件,调用CInternetFile::Write,重写CInternetSession::OnStatusCallback 使用你指定的缓冲写

指定的字节数

改变客户端在服务器上的目录 调用CFtpConnection::SetCurrentDirectory 进入新的目录
获取客户端在服务器上的当前目录 调用CFtpConnection::GetCurrentDirectory 获取目录信息
异常处理 用CInternetException类  处理所有普通的Internet异常类型
结束FTP session 处理CInternetSession对象 自动清除打开的句柄的连接
时间: 2024-08-04 14:28:03

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

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

一.概述 一个Internet客户端程序的目的是通过Internet协议如:HTTP.FTP等来存取网络数据源(服务器)的信息.客户端程序可以访问服务器获得象天气预报,股票价格.重要新闻数据,甚至是与服务器交换信息.Internet客户端程序可以通过外部网络(Internet)或内部网络(一般为Intranet)访问服务器. 为了开发Internet客户端程序.MFC类库提供了专门的 Win32 Internet 扩展接口,也就是WinInet.MFC将WinInet封装在一个标准的.易于使用的

《微软云计算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

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

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

用C#开发MotoRola客户端扫描

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

自己动手开发一个 Web 服务器(二)

自己动手开发一个 Web 服务器(二) 在<自己动手开发一个 Web 服务器(一)>中,我给大家留了一个问题:如何在不对服务器代码作任何修改的情况下,通过该服务器运行Djando应用.Flask应用和Pyramid应用,同时满足这些不同网络框架的要求?读完这篇文章,你就可以回答这个问题了. 以前,你选择的Python网络框架将会限制所能够使用的 Web 服务器,反之亦然.如果框架和服务器在设计时就是可以相互匹配的,那你就不会面临这个问题: 但是如果你试图将设计不相匹配的服务器与框架相结合,那么

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略知一二,对网页编程就是小白一个. 不知道各位大神能否指点一二,给个方向让小弟摸索学习? 需求概括:利

基于.net开发chrome核心浏览器【二】

原文:基于.net开发chrome核心浏览器[二] 一: 上一篇的链接: 基于.net开发chrome核心浏览器[一] 二: 相关资源介绍: chrome Frame: 让IE有一颗chrome的心,看起来不错,但我没有深入研究这个东西. http://www.google.com/chromeframe?hl=zh-CN&quickenable=true https://developers.google.com/chrome/chrome-frame/ WebKit.Net 已经有一段时间没

联合开发视频客户端 乐事联通深度合作

据相关消息报道,乐视网近日与中国联通达成一项合作,将租用中国联通IDC机房,并为联通提供视频内容点播.定制版客户端等移动互联网视频服务.此外,双方还将联合开发视频客户端,这也是双方在移动客户端.视频增值业务等层面首次达成深度合作.这次合作将会给双方带来怎样的收获,我们将一起拭目以待. 据悉,双方合作共涉及3大领域:一是在基础通信服务方面展开合作.中国联通将为乐视网提供IDC机房资源和互联网接入资源,提供乐视网业务发展所需的各类专线服务;二是将双方合作开发新产品.乐视网为中国联通本地及移动端影视剧