<英文原文也很简单,建议直接看原文,在这翻译,也只是为了自己记录一下>
在使用任何WinInet函数之前,必须先调用InternetOpen函数,这个函数的作用可想而知,主要是为了初始化环境,以便接下来使用WinInet的其他函数。可以说,这个函数创建了一个新的会话(session),就好像socket函数创建了一个新的socket, 调用这个函数将返回一个HINTERNET句柄 ,这个句柄标示了这个session,供其他函数使用。
函数原型:
HINTERNET InternetOpen( IN LPCSTR lpszAgent, IN WORD dwAccessType, IN LPCSTR lpszProxyName, IN LPCSTR lpszProxyBypass, IN WORD dwFlags );
参数含义:
lpszAgent: 字符串(LPCSTR被定义成是一个指向以NULL(‘\0’)结尾的常量字符的指针),指定正在使用网络函数的应用程序。
dwAccessType :指定此session访问网络的方式
lpszProxyName 和lpszProxyBypass 只有在第二个参数是INTERNET_OPEN_TYPE_PROXY时才有效,表示使用代理;其中lpszProxyName类型为字符串,表示代理服务器的名字,lpszProxyBypass 指定代理服务器的地址。
dwFlags:控制此session的行为。此参数的值如果是INTERNET_FLAG_OFFLINE,表示此session为offline模式,如果是INTERNET_FLAG_ASYNC,表示所有的操作必须是异步的。
例如,可以这样调用此函数
HINTERNET hInternet = InternetOpen( "TestApp", INTERNET_OPEN_TYPE_PROXY, "prxy.server.com", 158.55.255.251, INTERNET_FLAG_ASYNC );
注:具体细节等到例子时候再深究
初始化WinInet后,我们就可以使用其他API了,其中主要有两种方式来使用WinInet,这也是WinInet的功能所在。可以分别称之为:一种是基于URL,另一种方式基于协议。与前者相关的函数是InternetOpenUrl ,后者则是InternetConnect
两者的作用有所不同:
InternetOpenUrl :下载网页,通过HTTP下载图片,通过FTP下载文件
InternetConnect :使用HTTP POST/GET发送或接受数据,在FTP协议中创建,重命名,删除目录或上传下载文件
具体继承关系,可见下图:
接下来详细说一下InternetOpenUrl,因为InternetConnect 暂时还用不上,用的时候再学吧。
函数原型
HINTERNET InternetOpenUrl(IN HINTERNET hInternetSession, IN LPCSTR lpszUrl,IN LPCSTR lpszHeaders, IN DWORD dwHeadersLength, IN DWORD dwFlags, IN DWORD dwContext );
这个函数可以用于WinInet支持的所有网络协议,它接受数据,但是不能访问协议本身的内容。此函数先处理URL串,与服务器创建连接,并准备好下载URL所标示的要下载的数据。应用程序接下来可以使用InternetReadFile(数据是文件时使用),或者InternetFindNextFile(数据是目录时使用)接收数据。
接下来要写一个简单的小程序实践一下。再写吧。