二、实现步骤
大家知道,每个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对象
|
自动清除打开的句柄的连接
|
(表三)显示了一个典型的删除文件的FTP客户端应用要实现的一般步骤:
目的
|
方法
|
结果
|
开始一个FTP session
|
创建一个CInternetSession对象
|
初始化WinInet
并联接服务器
|
连接到一个FTP Server
|
用CInternetSession::GetFtpConnection
|
返回一个CFtpConnection对象
|
检查FTP目录是否正确
|
用CFtpConnection::GetCurrentDirectory或CFtpConnection::GetCurrentDirectoryAsURL
|
返回目录名字
服务器目录或返回目录的URL
|
CD(改变目录)到 FTP 服务器的一个新目录
|
用CFtpConnection::SetCurrentDirectory
|
CD到FTP服务器的一个
新目录
|
Find 第一个FTP目录中的文件
|
用CFtpFileFind::FindFile
|
Find第一个文件,如果文件每找到返回FALSE
|
Find 下一个FTP目录中的文件
|
用CFtpFileFind::FindNextFile
|
Find下一个文件
如果文件没找到返回FALSE
|
删除FindFile或FindNextFile找到的文件
|
用CFtpConnection::Remove用FindFile或FindNextFile返回的文件名
|
删除FindFile或FindNextFile
找到的文件
|
异常处理
|
用CInternetException类
|
处理所有普通的Internet异常类型
|
结束FTP session
|
处理CInternetSession对象
|
自动清除打开的句柄的连接
|
(表四)显示了实现一个典型的 HTTP 客户端应用程序的一般步骤:
目的
|
方法
|
结果
|
开始HTTP会话,建立HTTP连接
|
创建 CInternetSession对象,调用CInternetSession::GetHttpConnection
创建CHttpConnection对象
|
初始化WinInet并联接服务器,返回一个CHttpConnection对象
|
创建一个 HTTP 请求
|
调用CHttpConnection::OpenRequest
创建一个CHttpFile对象;
|
返回一个CHttpFile对象
|
发送一个HTTP 请求
|
用CHttpFile::AddRequestHeaders 并且用CHttpFile::SendRequest
|
Find一个文件
如果文件没找到返回FALSE
|
读文件
|
调用CInternetFile::Read
|
使用你提供的缓冲读指定的字节
|
获取HTTP请求信息
|
调用CHttpFile::QueryInfo
|
从服务器获取HTTP请求头信息
|
异常处理
|
利用CInternetException类
|
处理所有普通的Internet异常类型
|
结束 HTTP 会话
|
处理CInternetSession对象
|
自动清除打开的句柄的连接
|
由于时间关系,我没有写本文的例子代码。不过MSDN里有两个简单的例子可以参考,一个是FTPTREE,另一个是TEAR。此外,也可以用“WinInet”作为关键字在google里搜一下也能找到一些使用MFC WinInet的技术信息。(完)
源文档 <http://www.vckbase.com/document/viewdoc/?id=546>
分享到:
相关推荐
该文档介绍WinInet技术开发Internet客户端的相关知识,主要特点是使客户端开发变的比较容易
源代码 报告 可执行文件 利用诸如Java FTP Client Library 组件或VC6.0 WinInet基于国际互连网客户端应用设计接口的程序实现FTP客户端功能。
利用WinInet技术开发FTP客户端程序, FTP Internet服务器通讯.
MFC WinInet类实现FTP客户端功能MFC WinInet类实现FTP客户端功能MFC WinInet类实现FTP客户端功能MFC WinInet类实现FTP客户端功能MFC WinInet类实现FTP客户端功能
vs2019下使用winInet实现的http客户端。功能实现:实现get、post、post上传文件,basic认证
完整项目,编译平台VS2008。使用异步wininet实现的FTP客户端,并加入加入自动超时检测机制。在局域网环境可以占满网络带宽,可以在此基础进行二次开发。
利用WinInet技术 ,编写的基于MFC的FTP客户端。 实现了根目录下文件的上传、下载及删除操作,目录的操作有点问题就没完全实现,拿出来给大家共享一下,同时希望给与改进意见。 (Visual Studio 2010下测试。)
WinInet 是 Windows Internet 扩展应用程序高级编程接口,是专为开发具有 Internet 功能的客户端 应用程序而提供的。它有两种形式:WinInet API 包含一个 C 语言的函数集(Win32 Internet functions), MFC WinInet ...
WinInet Component Suite v1.6.rar
本文介绍了FTP客户端的完整功能的实现。
该实例通过WinInet编程接口实现了完整的FTP客户程序,其界面类似于CuteFTP和LeapFTP 下载后运行时要配置一下编译环境 工程->设置->常规(使用MFC作为静态链接库) 其它问题可以从网上查到 如果还编译不过 可以直接...
VC编程实现使用WinInet通过HTTP协议读取网上文件,成功实现,在visual studio 2005下可用
WinInet编程中如何使用异步 winInet_API浅谈 Wininet详解 WinInet中的几个网络函数 WinInet学习笔记 异步下载类 等等
使用WinInet来获取腾讯气象网站的数据来做的客户端天气预报软件, 代码讲解博客地址:http://www.gymsaga.com/project/737.html 更多程序开发及MFC教程,请继续关注郭延明个人博客
wininet组件,用于通过pb\vb\delphi\.net\java等工具调用,发送邮件
利用WinInet实现文件下载 利用WinInet实现文件下载 利用WinInet实现文件下载 利用WinInet实现文件下载
wininet上传文件到ftp服务器,代码量很少,已测试成功,使用到项目中。
Wininet详解,介绍wininet,用以开发设计。介绍了所有wininet相关的知识。
Delphi用WinInet实现服务器信息获取、上传Json信息、文件下载
Wininet SSL 实现http 数据上传,Wininet SSL 实现http 数据上传