WinInet和FTP
(1)WinInet接口(含HTTP、FTP)及FTP函数层次关系
(2)Ftp函数介绍
①InternetOpen——初始化,它告诉 Internet DLL 初始化内部数据结构并准备接收应用程序之后的其他调用。
参数 |
含义 |
LPCTSTR lpszAgent |
调用WinInet函数的应用程序名字,在HTTP协议中作为用户代理项 |
DWORD dwAccessType |
访问要求类型: INTERNET_OPEN_TYPE_DIRECT:解析所有本地主机,使用直接连接网络。 INTERNET_OPEN_TYPE_PRECONFIG:获取代理或直接从注册表中的配置,使用代理连接网络。 INTERNET_OPEN_TYEP_PRECONFIG_WITH_NO_AUTOPROXY:返回注册表中代理或直接配置,并防止Microsoft Jscript或INS文件的使用 INTERNET_OPEN_TYPE_PROXY:为代理传递请求 |
LPCTSTR lpszProxyName |
当dwAccessType指定为INTERNET_OPEN_TYPE_PROXY时,为代理服务器名字。 |
LPCTSTR lpszProxyBypass |
指定一个字符串,它提定一个可选的主机名列表或IP地址 |
DWORD dwFlags |
INTERNET_FLAG_ASYNC:仅作用于在该函数返回句柄的子句柄上的异步请求。 INTERNET_FLAG_FROM_CACHE:不做网络请求,所以的实体由缓存给出,如果请求的条目不在缓存中,会返回ERROR_FILE_NOT_FOUND错误。 INTERNET_FLAG_OFFLINE:与INTERNET_FLAG_FROM_CACHE一样。 |
举例:hIntSession = InternetOpen(szAppName,INTERNET_OPEN_TYPE_PRECONFIG,NULL,NULL,INTERNET_FLAG_ASYNC);
②InternetConnect——建立 Internet 的连接,返回连接句柄
参数 |
含义 |
HINTERNET hInternet |
由InternetOpen返回的句柄 |
LPCTSTR lpszServerName |
连接的IP或者主机名 |
INTERNET_PORT nServerPort |
连接的端口。如0,则为默认端口 |
LPCTSTR lpszUsername |
用户名,如无置NULL |
LPCTSTR lpszPassword |
密码,如无置NULL |
DWORD dwService |
使用的服务类型,可以使用以下 INTERNET_SERVICE_FTP(1):连接到一个FTP服务器 INTERNET_SERVICE_GOPHER(2):Gopher服务器 INTERNET_SERVICE_HTTP(3):连接到一个 HTTP 服务器上 |
DWORD dwFlags |
文档传输形式及缓存标记。一般置0。 |
DWORD_PTR dwContext |
当使用回叫信号时, 用来识别应用程序的前后关系 |
返回值:非0——成功;0——失败,要用InternetCloseHandle来关闭这个句柄 |
③FtpFindFirstFile——是用来设置ftp当前目录的
参数 |
含义 |
HINTERNET hConnect |
由InternetConnect返回的FTP会话句柄 |
LPCTSTR lpszSearchFile |
在FTP服务器上特定的目录里,要查询的指定名称的目录或文件名的文件,还可以使用通配符查找(如*、?) |
LPWIN32_FIND_DATA lpFindFileData |
就是用来保存查找后,所返回的文件的信息 |
DWORD dwFlags |
文档传输形式及缓存标记。一般置0。 |
DWORD_PTR dwContext |
当使用回叫信号时, 用来识别应用程序的前后关系。 一般为0 |
返回值:有效句柄表示成功。NULL表示失败,可用GetLastError返回错误代码。 |
④InternetFindNextFile——查找下一个文件或目录
参数 |
含义 |
HINTERNET hConnect |
hFind 是 FtpFindFirstFile 调用所返回的句柄 |
LPWIN32_FIND_DATA lpFindFileData |
用来保存查找后,所返回的文件的信息 |
返回值:如果调用成功, 返回 True,否则为False,可进一步调用GetLastError查询错误代码,如果为 ERROR_NO_MORE_FILES表明再没有文件存在了。边查找,边可以从lpFindFileData提取文件名/目录名。 |
⑤FtpGetFile——下载文件到本地磁盘
参数 |
含义 |
HINTERNET hConnect |
由InternetConnect返回的FTP会话句柄 |
LPCTSTR lpszRemoteFile |
FTP服务器上的文件名 |
LPCTSTR lpszNewFile |
本地机上创建的文件 |
BOOL fFailIfExists |
0——替换本地文件 1——如果本地文件已经存在则取消 |
DWORD dwFlagsAndAttributes |
用来指定本地文件的文件属性(详细参考CreateFile函数) FILE_ATTRIBUTE_NORMAL、FILE_ATTRIBUTE_HIDDEN、 FILE_ATTRIBUTE_READONLY、FILE_ATTRIBUTE_ARCHIVE等 |
DWORD dwFlags |
FTP_TRANSFER_TYPE_ASCII(1):用ASCII传输文件 FTP_TRANSFER_TYPE_BINARY(2):是用二进制传输文件 |
DWORD dwContext |
当使用回叫信号时, 用来识别应用程序的前后关系。 一般为0 |
返回值:有效句柄表示成功。NULL表示失败,可用GetLastError返回错误代码。 |