FTP WinApi 函数详解
FTP 各函数间的关系
各FTP函数工作时需要用到InternetConnect创建的FTP会话句柄。而InternetConnect函数需要用到由InternetOpen创建的HINTERNET句柄。下面这个图可以表示他们间的关系。
而对那些在线操作的一些命令来说,他们的关系可以用下面这个图表示。例如用于枚举当前目录下文件的两个命令FtpFindFirstFile和InternetFindNextFile,之间就是InternetFindNextFile需要用到FtpFindFirstFile返回的一个句柄。
WinINet函数
函数 | 说明 |
连接 | |
InternetOpen | 初始化WinINet,返回HINTERNET handles |
InternetConnect | 建立Internet连接,打开FTP、Gopher或者HTTP会话。返回HINTERNET handles |
InternetCloseHandle | 关闭Internet连接 |
目录操作 | |
FtpCreateDirectory | 在FTP服务器上建立目录, 需要InternetConnect返回的会话句柄 |
FtpRemoveDirectory | 在FTP服务器上删除目录, 需要InternetConnect返回的会话句柄 |
FtpGetCurrentDirectory | 获取当前在FTP服务器上的工作目录, 需要InternetConnect返回的会话句柄 |
FtpSetCurrentDirectory | 设置在FTP服务器上的工作目录, 需要InternetConnect返回的会话句柄 |
文件操作 | |
FtpFindFirstFile | 在FTP服务器上查找符合条件的文件或目录, 需要InternetConnect返回的会话句柄 |
InternetFindNextFile | 在FTP服务器上继续查找下一个符合条件的文件或目录,需要FtpFindFirstFile返回的会话句柄 |
FtpPutFile | 上传一个文件到FTP服务器上, 需要InternetConnect返回的会话句柄 |
FtpGetFile | 从FTP服务器上下载一个文件, 需要InternetConnect返回的会话句柄 |
FtpDeleteFile | 在FTP服务器上删除一个文件, 需要InternetConnect返回的会话句柄 |
FtpRenameFile | 在FTP服务器上更改一个文件的名字, 需要InternetConnect返回的会话句柄 |
FtpOpenFile | 在FTP服务器上打开一个文件, 需要InternetConnect返回的会话句柄 |
InternetReadFile | 直接在FTP服务器上读取文件, 需要FtpOpenFile返回的会话句柄 |
InternetWriteFile | 直接在FTP服务器上写入文件, 需要FtpOpenFile返回的会话句柄 |
InternetOpen
功能:
初始化WinINet,返回HINTERNET handles
结构:
HINTERNET InternetOpen(
IN LPCSTR lpszAgent,
IN DWORD dwAccessType,
IN LPCSTR lpszProxyName,
IN LPCSTR lpszProxyBypass,
IN DWORD dwFlags
);
参数:
lpszAgent :调用WinINet的应用程序名
dwAccessType :设置网络访问类型
常量 | 值 | 说明 |
INTERNET_OPEN_TYPE_DIRECT | 1 | 直接连接到网络 |
INTERNET_OPEN_TYPE_PRECONFIG | 0 | 从注册表或直接连接到网络 |
INTERNET_OPEN_TYPE_PRECONFIG_WITH_NO_AUTOPROXY | 4 |
|
INTERNET_OPEN_TYPE_PROXY | 3 | 使用代理 |
lpszProxyName :指定代理服务器的名字,访问类型设置为INTERNET_OPEN_TYPE_PROXY才有效
lpszProxyBypass :指定代理服务器的名字或地址,有设置此项时lpszProxyName指定的将失效
dwFlags
常量 | 值 | 说明 |
INTERNET_FLAG_ASYNC | 0x10000000 | 使用异步连接 |
INTERNET_FLAG_FROM_CACHE | 0x01000000 | 从缓存中返回 |
INTERNET_FLAG_OFFLINE | INTERNET_FLAG_FROM_CACHE | 与FROM_CACHE相同 |
VB调用声明:
Public Declare Function InternetOpen Lib "wininet.dll" Alias "InternetOpenA" _
(ByVal sAgent As String, ByVal lAccessType As Long, ByVal sProxyName As String, _
ByVal sProxyBypass As String, ByVal lFlags As Long) As Long
InternetConnect
功能:
结构:
参数:
VB调用声明:
Public Declare Function InternetConnect Lib "wininet.dll" Alias "InternetConnectA" _
(ByVal hInternetSession As Long, ByVal sServerName As String, ByVal nServerPort As Integer, _
ByVal sUsername As String, ByVal sPassword As String, ByVal lService As Long, _
ByVal lFlags As Long, ByVal lContext As Long) As Long
调用实例:
InternetCloseHandle
功能:
结构:
参数:
VB调用声明:
Public Declare Function InternetCloseHandle Lib "wininet.dll" _
(ByVal hInet As Long) As Integer
调用实例:
FtpCreateDirectory
功能:
结构:
参数:
VB调用声明:
Public Declare Function FtpCreateDirectory Lib "wininet.dll" Alias "FtpCreateDirectoryA" _
(ByVal hFtpSession As Long, ByVal lpszDirectory As String) As Boolean
调用实例:
FtpGetCurrentDirectory
功能:
结构:
参数:
VB调用声明:
Public Declare Function FtpGetCurrentDirectory Lib "wininet.dll" Alias "FtpGetCurrentDirectoryA" _
(ByVal hFtpSession As Long, lpszCurrentDirectory As String, ByRef lpdwCurrentDirectory As Long) As Boolean
调用实例:
FtpSetCurrentDirectory
功能:
结构:
参数:
VB调用声明:
Public Declare Function FtpSetCurrentDirectory Lib "wininet.dll" Alias "FtpSetCurrentDirectoryA" _
(ByVal hFtpSession As Long, ByVal lpszCurrentDirectory As String) As Boolean
调用实例:
FtpDeleteFile
功能:
结构:
参数:
VB调用声明:
Public Declare Function FtpDeleteFile Lib "wininet.dll" _
Alias "FtpDeleteFileA" (ByVal hFtpSession As Long, _
ByVal lpszFileName As String) As Boolean
调用实例:
FtpGetFile
功能:
结构:
参数:
VB调用声明:
Public Declare Function FtpGetFile Lib "wininet.dll" Alias "FtpGetFileA" _
(ByVal hFtpSession As Long, ByVal lpszRemoteFile As String, _
ByVal lpszNewFile As String, ByVal fFailIfExists As Boolean, ByVal dwFlagsAndAttributes As Long, _
ByVal dwFlags As Long, ByVal dwContext As Long) As Boolean
调用实例:
FtpPutFile
功能:
结构:
参数:
VB调用声明:
Public Declare Function FtpPutFile Lib "wininet.dll" Alias "FtpPutFileA" _
(ByVal hFtpSession As Long, ByVal lpszLocalFile As String, _
ByVal lpszRemoteFile As String, _
ByVal dwFlags As Long, ByVal dwContext As Long) As Boolean
调用实例:
FtpRemoveDirectory
功能:
结构:
参数:
VB调用声明:
调用实例:
FtpRenameFile
功能:
结构:
参数:
VB调用声明:
Public Declare Function FtpRenameFile Lib "wininet.dll" _
Alias "FtpRenameFileA" (ByVal hFtpSession As Long, _
ByVal lpszExisting As String, ByVal lpszNew As String) As Boolean
调用实例:
FtpFindFirstFile
功能:
结构:
参数:
VB调用声明:
Public Declare Function FtpFindFirstFile Lib "wininet.dll" Alias "FtpFindFirstFileA" _
(ByVal hFtpSession As Long, ByVal lpszSearchFile As String, _
lpFindFileData As WIN32_FIND_DATA, ByVal dwFlags As Long, ByVal dwContent As Long) As Long
调用实例:
InternetFindNextFile
功能:
结构:
参数:
VB调用声明:
Public Declare Function InternetFindNextFile Lib "wininet.dll" Alias "InternetFindNextFileA" _
(ByVal hFind As Long, lpvFindData As WIN32_FIND_DATA) As Long
调用实例:
FtpOpenFile
功能:
结构:
参数:
VB调用声明:
Public Declare Function FtpOpenFile Lib "wininet.dll" Alias _
"FtpOpenFileA" (ByVal hFtpSession As Long, _
ByVal sFileName As String, ByVal lAccess As Long, _
ByVal lFlags As Long, ByVal lContext As Long) As Long
调用实例:
InternetReadFile
功能:
结构:
参数:
VB调用声明:
Public Declare Function InternetReadFile Lib "wininet.dll" _
(ByVal hFile As Long, _
ByVal lpBuffer As String, _
ByVal dwNumberOfBytesToRead As Long, _
lpNumberOfBytesRead As Long) As Long
调用实例:
InternetGetLastReponseInfo
功能:
结构:
参数:
VB调用声明:
Public Declare Function InternetGetLastResponseInfo Lib "wininet.dll" Alias "InternetGetLastResponseInfoA" ( _
lpdwError As Long, _
ByVal lpszBuffer As String, _
lpdwBufferLength As Long) As Boolean
调用实例: