谁可以介绍下FTP的API

simb 2004-05-09 12:17:39
我做FTP客户端程序效率和占用系统资源非常严重,不知道怎么可以开一个缓存增加传输速度
...全文
308 25 打赏 收藏 转发到动态 举报
写回复
用AI写文章
25 条回复
切换为时间正序
请发表友善的回复…
发表回复
xiaohuangtao 2004-08-18
  • 打赏
  • 举报
回复
HTTP://www.smartsoftcn.com
上将开放OUTLOOK等VB源码,请大家多多支持!正在放当中。。。。。。。。。。
zcm123 2004-08-17
  • 打赏
  • 举报
回复
http://www.vbip.com/wininet/wininet-ftp-command-01.asp
zcm123 2004-08-17
  • 打赏
  • 举报
回复
zcm821214@yahoo.com.cn
chenyu5188 2004-08-16
  • 打赏
  • 举报
回复
UP
zcm123 2004-08-16
  • 打赏
  • 举报
回复
用VB创建FTP组件(put)
(www.Jojoo.net) 2001-11-23 (请双击自动滚屏观看,单击停止,再击..)


基本步骤是:


1、调用InternetOpen函数设置环境。

2、调用InternetConnect 函数连接主机。

3、调用FtpPutFile 函数得到文件。

4、用InternetCloseHandle 函数关闭第1、2步的句柄。


  当使用FtpGetFile 时与上面的步骤看起来完全一样。事实上唯一的区别是在第3步中调用了FtpPutFile 。VB特定调用这一函数的声明是:


Private 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


  第一个参数hFtpSession 是InternetConnect 调用返回的句柄值。

  lpszNewFile 和lpszRemoteFile 分别是本地机上的文件名和将在远程主机上创建的文件名。

  参数dwFlags 指定为1时,用ASCII 传输文件(A类传输方法),指定为2是用二进制传输文件(1类传输方法)。由于DIRMAP.TXT 是ASCII 文本文件,我们传递值1。

  最后,当使用回叫信号时,lContext 用来识别应用程序前后关系。因为在我们的例子中不使用回叫信号,所以这个值为0。

  以下是得到DIRMAP.TXT文件并将其存在 C:\DIRMAP.TXT的调用。

blnRC = FtpPutFile(lngINetConn, “c::\dirmap.txt”, “dirmap.txt”, 1, 0)

  如果函数调用成功,blnRC为 True, 反之为False。

  你可以看到,把文件放到FTP服务器上与从FTP服务器上得到文件一样简单。有一点要注意,匿名用户无权在FTP服务器上创建文件。所以要确定用来与FTP服务器连接的用户帐号要有创建文件的权限。不然的话,FtpPutFile函数调用就会返回False,说明Put 失败了。

zcm123 2004-08-16
  • 打赏
  • 举报
回复

用VB创建FTP组件(get)
(www.Jojoo.net) 2001-11-23 (请双击自动滚屏观看,单击停止,再击..)


基本步骤:

1、用一个InternetOpen调用设置环境。

2、调用InternetConnect 函数与主机连接。

3、调用FtpGetFile 达到文件。

4、关闭第1、2步创建的句柄,用InternetCloseHandle 函数。

现在来仔细看看每一步:

1、通过调用InternetOpen 函数设置环境。下面是VB特定调用这一函数的声明:


Private 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


  参数sAgent 用来指定调用WinINet 函数的应用程序或实体。为了达到目的,可以设置FTP控制。


  参数lAccessType 指定我们是直接与某一主机相连还是使用代理服务器相连。如果传递值1,就直接与主机连接。如果传递3,就通过代理服务器。如果传递0,连接时就要基于

HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings下的注册表数值

ProxyEnable、ProxyServer和 ProxyOverride 。


  我们可以使用参数sProxyName和 sProxyBypass,而不是注册设置来提供代理服务器和不使用代理服务器的IP地址和名字。列出代理的基本格式是rotocol=protocol://proxy_name:access_port?。例如,要指定Proxy1 上的端口21为代理服务器,用Ftp=ftp://Proxy1:21?作为sProxyName。要饶过以ov? 开始的任何主机,sProxyBypass 字符串应为ov*? 。


  最后,lFlags 用来显示影响函数结果的不同选择。在我们的例子中,我们传递0。

  所以,不使用代理而打开一个Internet session 时,我们的调用是这样的:

lngINet = InternetOpen(“FTP Control”, 1, vbNullString, vbNullString, 0)

  如果函数调用失败,lngINet 为0。不然,lngINet 就保存在下一步中将要传递给InternetConnect

函数的句柄的值。

2、通过调用InternetConnect 函数与主机连接。VB特定调用这一函数的声明是:

Private 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


  第一个参数hInternetSession 是InternetOpen 调用返回的句柄值。

  sServerName 是我们即将连接的FTP服务器的IP地址或主机名。

  nServerPort 指示与哪一个端口连接。在我们的例子中使用的值为0,它指示的是默认的端口21。

  sUsername 和 sPassword 分别传递用户名和口令。

  lService 用来指示使用的服务类型,如HTTP, FTP等。通常传递值为1,表示FTP服务。

  如果将x8000000传递到 lFlags 参数,连接将使用被动FTP语义。或者,在我们的例子中,传递0来使用非被动语义。


  最后,当使用回叫信号时,lContext 用来识别应用程序的前后关系。因为在我们的例子中不使用回叫信号,所以这个值为0。


  现在使用匿名的电子邮件用户名与主机FTP.MICROSOFT.COM 相连接:

lngINetConn = InternetConnect(lngINet, “ftp.microsoft.com”, 0, _

  “anonymous”,”ally@wallyworld.com”, 1, 0, 0)


  如果函数调用失败,则lngINetConn 为0。反之,lngINetConn 就保存在下一步中将传递给FtpGetFile 的句柄的值。


3、现在我们已经实现了连接,然后就需要调用FtpGetFile 。这个函数完成从一个FTP服务器上读取文件并在本地存储时有关的所有管理功能。VB特定调用这一函数的声明是:


Private 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


  第一个参数hFtpSession 是InternetConnect 调用返回的句柄值。

  lpszRemoteFile和lpszNewFile 分别是FTP服务器上的文件名和将在本地机上创建的文件名。

  fFailIfExists 标志是0(替换本地文件)或1 (如果本地文件已经存在则取消)。

  dwFlagsAndAttributes 用来指定本地文件的文件属性。在我们的例子中忽略,只传递0。

  dwFlags 参数指定为1是用ASCII 传输文件(A类传输方法),指定为2是用二进制传输文件(1类传输方法)。由于DIRMAP.TXT 是ASCII 文本文件,我们传递值1。

  最后,当使用回叫信号时,lContext 用来识别应用程序前后关系。因为在我们的例子中不使用回叫信号,所以这个值为0。

  所以,以下是得到DIRMAP.TXT文件并将其存在 C:\DIRMAP.TXT的调用。如果本地文件已经存在,就覆盖它。

blnRC = FtpGetFile(lngINetConn, “dirmap.txt”,”c:\dirmap.txt”, 0, 0, 1, 0)

  如果函数调用成功,blnRC为 True, 反之为False。

4、现在文件已经被接收,使用InternetCloseHandle 调用来关闭连接和session 句柄。VB特定调用这一函数的声明是:


Private Declare Function InternetCloseHandle Lib "wininet.dll" (ByVal hInet As Long) As Integer.


  如同指明的一样,此函数只有一个参数hInet,是要关闭或抛弃的句柄的值。因为InternetConnection 和InternetOpen 中有句柄,就需要调用这个关闭函数两次。另外因为InternetConnection 句柄是由InternetOpen 句柄决定的,关闭他们时的顺序与创建时相反。

  以下是调用函数:

InternetCloseHandle lngINetConn

InternetCloseHandle lngINet


  用这短短的四步就完成了FTP GET。

danielinbiti 2004-07-18
  • 打赏
  • 举报
回复
用winsock开发比较好,比较稳定,也简单些
zhwyl 2004-07-16
  • 打赏
  • 举报
回复
我要

zhwyl@163.com
xiaohuangtao 2004-06-09
  • 打赏
  • 举报
回复
请大家到一下地址下载:
http://free.efile.com.cn/huangtao/ScreenShot.jpg

代码及安装盘:
http://free.efile.com.cn/huangtao/SmartmailSourceSetup.EXE

用了后可要为我作宣传阿!
flyingZFX 2004-06-09
  • 打赏
  • 举报
回复
我要,,我要!!1

flying_zfx@hotmail.com
xiaohuangtao 2004-06-09
  • 打赏
  • 举报
回复
给大家发了演示程序,最新代码还没有整理出来,到时一定发给大家.
Smart网站将再最近开通,届时请大家捧场阿!!!该网站将提供详细的代码下载!
wumy_ld 2004-06-08
  • 打赏
  • 举报
回复
我使用过的ftp下载模块:
'调用方式:
'FtpGet "210.26.53.171", "www", "wwwwww", "210.26.53.171", "运行环境.txt", "c:"
Option Explicit

Private 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
Private Declare Function FtpSetCurrentDirectory Lib "wininet.dll" Alias "FtpSetCurrentDirectoryA" (ByVal hFtpSession As Long, ByVal lpszDirectory As String) As Boolean
Private 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
Private Declare Function InternetCloseHandle Lib "wininet.dll" (ByVal hInet As Long) As Integer
Private 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
Private Declare Function InternetGetLastResponseInfo Lib "wininet.dll" Alias "InternetGetLastResponseInfoA" (lpdwError As Long, ByVal lpszBuffer As String, lpdwBufferLength As Long) As Boolean

Private Const scUserAgent = "vb wininet"

Private Const INTERNET_OPEN_TYPE_DIRECT = 1
Private Const INTERNET_OPEN_TYPE_PROXY = 3
Private Const INTERNET_INVALID_PORT_NUMBER = 0

Private Const FTP_TRANSFER_TYPE_ASCII = &H1
Private Const FTP_TRANSFER_TYPE_BINARY = &H1
Private Const INTERNET_FLAG_PASSIVE = &H8000000

Private Const ERROR_INTERNET_EXTENDED_ERROR = 12003

Private Const INTERNET_SERVICE_FTP = 1

Private Const INTERNET_FLAG_RELOAD = &H80000000

Private hOpen As Long, hConnection As Long

Private Const txtProxy = ""
Private Const chkPassive = 1

'打开ftp连接
Public Sub InternetOpening()
If Len(txtProxy) <> 0 Then
hOpen = InternetOpen(scUserAgent, INTERNET_OPEN_TYPE_PROXY, txtProxy, vbNullString, 0)
Else
hOpen = InternetOpen(scUserAgent, INTERNET_OPEN_TYPE_DIRECT, vbNullString, vbNullString, 0)
End If
If hOpen = 0 Then ErrorOut Err.LastDllError, "InternetOpen"
End Sub

'关闭ftp连接
Public Sub InternetClose()
If hConnection <> 0 Then InternetCloseHandle hConnection
If hOpen <> 0 Then InternetCloseHandle hOpen
hConnection = 0
hOpen = 0
End Sub

'建立ftp连接
Public Function FtpConnect(ftpServer As String, ftpUser As String, ftpPass As String) As Boolean
FtpConnect = False

Call InternetOpening

If hOpen <> 0 Then

Dim nFlag As Long
If chkPassive = 1 Then
nFlag = INTERNET_FLAG_PASSIVE
Else
nFlag = 0
End If
hConnection = InternetConnect(hOpen, ftpServer, INTERNET_INVALID_PORT_NUMBER, ftpUser, ftpPass, INTERNET_SERVICE_FTP, nFlag, 0)
If hConnection = 0 Then
' ErrorOut Err.LastDllError, "InternetConnect"
Else
FtpConnect = True
End If
End If
End Function

'获取ftp上的文件
Public Function FTPGET(ByVal ftpServer As String, ByVal ftpUser As String, ByVal ftpPass As String, ByVal szDirRemote As String, ByVal szFileRemote As String, ByVal szDirLocal As String, Optional ByVal szFileLocal As String) As Boolean
Dim bRet As Boolean

FTPGET = False

Call FtpConnect(ftpServer, ftpUser, ftpPass)

rcd szDirRemote, ftpServer
If szFileLocal = "" Then
'如果未传递本地文件名,则默认为远程文件名
szFileLocal = szFileRemote
Else
'可以检测后缀名是否一致
End If
bRet = FtpGetFile(hConnection, szFileRemote, szDirLocal & szFileLocal, False, INTERNET_FLAG_RELOAD, FTP_TRANSFER_TYPE_BINARY, 0)

DoEvents
Call InternetClose

If bRet = False Then
ErrorOut Err.LastDllError, "FtpGetFile"
Else
FTPGET = True
End If
End Function

'获取ftp错误信息
Public Sub rcd(pszDir As String, ftpServer As String)
Dim sPathFromRoot As String
Dim bRet As Boolean

If InStr(1, pszDir, ftpServer) Then
sPathFromRoot = Mid(pszDir, Len(ftpServer) + 1, Len(pszDir) - Len(ftpServer))
Else
sPathFromRoot = pszDir
End If
If sPathFromRoot = "" Then sPathFromRoot = "/"

bRet = FtpSetCurrentDirectory(hConnection, sPathFromRoot)

' If bRet = False Then ErrorOut Err.LastDllError, "rcd"
End Sub

'显示ftp错误
Public Function ErrorOut(dError As Long, szCallFunction As String)
Dim dwIntError As Long, dwLength As Long
Dim strBuffer As String

If dError = ERROR_INTERNET_EXTENDED_ERROR Then
InternetGetLastResponseInfo dwIntError, vbNullString, dwLength
strBuffer = String(dwLength + 1, 0)
InternetGetLastResponseInfo dwIntError, strBuffer, dwLength

MsgBox szCallFunction & " Extd Err: " & dwIntError & " " & strBuffer

End If
If MsgBox(szCallFunction & " Err: " & dError & _
vbCrLf & "要关闭ftp连接吗?", vbQuestion + vbYesNo) = vbYes Then
If hConnection Then InternetCloseHandle hConnection

If hOpen Then InternetCloseHandle hOpen

hConnection = 0
hOpen = 0
End If
End Function
quanyi 2004-06-08
  • 打赏
  • 举报
回复
quanyi1979@sina.com
fengyetianshi 2004-06-07
  • 打赏
  • 举报
回复
28719559@qq.com
xiaohuangtao 2004-05-12
  • 打赏
  • 举报
回复
这是我一年前业余时间开发的一个界面和功能和OUTLOOK一样的软件,开放主控代码!

运行效果图:
http://www.efile.com.cn/efile/huangtao/SmartMail.bmp

安装盘及其代码下载地址:
http://www.cnkernel.com/opensoft.asp?soft_id=3&url=4

本软件开始出售源代码

已经给您们发送了
online 2004-05-11
  • 打赏
  • 举报
回复
api有
不知道怎么可以开一个缓存增加传输速度,这个好像没有

simb 2004-05-11
  • 打赏
  • 举报
回复
给仔细介绍下的啊
  • 打赏
  • 举报
回复
passer_wave@tom.com


谢先了,帅哥 呵呵!



up
xiaohuangtao 2004-05-11
  • 打赏
  • 举报
回复
请大家给出邮件地址,本人将免费送一套Outlook主控代码.谢谢!
xiaohuangtao 2004-05-11
  • 打赏
  • 举报
回复
本人出售Outlook软件源代码 13062323245



Dim LngCurFileSize As Long

'********************************************************************************
'CFtpConnection类
'********************************************************************************
' 在该类里面使用了以下几个类和模块
' CFtpFile 类
' CFtpFiles 类
' CTimeout 类
' MFtpSupport 模块
'
' 同时在该类中使用到了winsock对象,因此在工程的REFERENCES中加入对该对象的引用

'********************************************************************************
'winsock对象的声明
'********************************************************************************
'声明进行控制连接的winsock对象
Private WithEvents wscControl As FrmWinsock


'声明进行数据连接的winsock对象
Private WithEvents wscData As FrmWinsock
'********************************************************************************
'定义类模块的内部属性变量
'********************************************************************************
Private m_strUserName As String '定义连接ftp服务器用户名
Private m_strPassword As String '定义连接ftp服务器密码
Private m_varFtpServer As Variant '定义连接ftp服务器地址
Private m_strCurrentDirectory As String '服务器当前工作目录
Private m_bPassiveMode As Boolean '定义连接模式
Private m_bBusy As Boolean '定义程序是否正在传输连接
Private m_intTimeout As Integer '定义连接超时限制
Private m_TransferMode As FtpTransferModes '定义传输模式
'********************************************************************************
'公共枚举变量
'********************************************************************************
'连接ftp服务器时的各种状态
Public Enum FTP_CONNECTION_STATES
FTP_CONNECTION_RESOLVING_HOST
FTP_CONNECTION_HOST_RESOLVED
FTP_CONNECTION_CONNECTED
FTP_CONNECTION_AUTHENTICATION
FTP_USER_LOGGED
FTP_ESTABLISHING_DATA_CONNECTION
FTP_DATA_CONNECTION_ESTABLISHED
FTP_RETRIEVING_DIRECTORY_INFO
FTP_DIRECTORY_INFO_COMPLETED
FTP_TRANSFER_STARTING
FTP_TRANSFER_COMLETED
End Enum
'ftp服务器各种返回的响应码
Private Enum FTP_RESPONSE_CODES
FTP_RESPONSE_RESTATRT_MARKER_REPLY = 110
FTP_RESPONSE_SERVICE_READY_IN_MINUTES = 120
FTP_RESPONSE_DATA_CONNECTION_ALREADY_OPEN = 125
FTP_RESPONSE_FILE_STATUS_OK = 150
FTP_RESPONSE_COMMAND_OK = 200
FTP_RESPONSE_COMMAND_NOT_IMPLEMENTED_SUPERFLUOUS_AT_THIS_SITE = 202 'superfluous at this site
FTP_RESPONSE_SYSTEM_STATUS_OR_SYSTEM_HELP_REPLY = 211
FTP_RESPONSE_DIRECTORY_STATUS = 212
FTP_RESPONSE_FILE_STATUS = 213
FTP_RESPONSE_HELP_MESSAGE = 214
FTP_RESPONSE_NAME_SYSTEM_TYPE = 215
FTP_RESPONSE_SERVICE_READY_FOR_NEW_USER = 220
FTP_RESPONSE_SERVICE_CLOSING_CONTROL_CONNECTION = 221
FTP_RESPONSE_DATA_CONNECTION_OPEN = 225
FTP_RESPONSE_CLOSING_DATA_CONNECTION = 226
FTP_RESPONSE_ENTERING_PASSIVE_MODE = 227
FTP_RESPONSE_USER_LOGGED_IN = 230
FTP_RESPONSE_REQUESTED_FILE_ACTION_OK_COMPLETED = 250
FTP_RESPONSE_PATHNAME_CREATED = 257
FTP_RESPONSE_USER_NAME_OK_NEED_PASSWORD = 331
FTP_RESPONSE_NEED_ACCOUNT_FOR_LOGIN = 332
FTP_RESPONSE_REQUESTED_FILE_ACTION_PENDING_FURTHER_INFO = 350
FTP_RESPONSE_SERVICE_NOT_AVAILABLE_CLOSING_CONTROL_CONNECTION = 421
FTP_RESPONSE_CANNOT_OPEN_DATA_CONNECTION = 425
FTP_RESPONSE_CONNECTION_CLOSED_TRANSFER_ABORTED = 426
FTP_RESPONSE_REQUESTED_FILE_ACTION_NOT_TAKEN = 450
FTP_RESPONSE_REQUESTED_ACTION_ABORTED = 451
FTP_RESPONSE_REQUESTED_ACTION_NOT_TAKEN = 452
FTP_RESPONSE_SYNTAX_ERROR_COMMAND_UNRECOGNIZED = 500
FTP_RESPONSE_SYNTAX_ERROR_IN_PARAMETERS_OR_ARGUMENTS = 501
FTP_RESPONSE_COMMAND_NOT_IMPLEMENTED = 502
FTP_RESPONSE_BAD_SEQUENCE_OF_COMMANDS = 503
FTP_RESPONSE_COMMAND_NOT_IMPLEMENTED_FOR_THAT_PARAMETER = 504
FTP_RESPONSE_NOT_LOGGED_IN = 530
FTP_RESPONSE_NEED_ACCOUNT_FOR_STORING_FILES = 532
FTP_RESPONSE_REQUESTED_ACTION_NOT_TAKEN_FILE_UNAVAILABLE = 550
FTP_RESPONSE_REQUESTED_ACTION_ABORTED_PAGE_TYPE_UNKNOWN = 551
FTP_RESPONSE_REQUESTED_FILE_ACTION_ABORTED_EXCEEDED_STORAGE_ALLOCATION = 552
FTP_RESPONSE_REQUESTED_ACTION_NOT_TAKEN_FILE_NAME_NOT_ALLOWED = 553
End Enum
'ftp传输模式
Public Enum FtpTransferModes
FTP_ASCII_MODE 'ASCII模式
FTP_IMAGE_MODE '二进制模式
End Enum
'********************************************************************************
'类错误
'********************************************************************************
Public Enum FtpErrors
ERROR_FTP_WINSOCK_AddressInUse
ERROR_FTP_WINSOCK_AddressNotAvailable
ERROR_FTP_WINSOCK_AlreadyComplete
ERROR_FTP_WINSOCK_AlreadyConnected
ERROR_FTP_WINSOCK_BadState
ERROR_FTP_WINSOCK_ConnectAborted
ERROR_FTP_WINSOCK_ConnectionRefused
ERROR_FTP_WINSOCK_ConnectionReset
ERROR_FTP_WINSOCK_GetNotSupported
ERROR_FTP_WINSOCK_HostNotFound
ERROR_FTP_WINSOCK_HostNotFoundTryAgain
ERROR_FTP_WINSOCK_InProgress
ERROR_FTP_WINSOCK_InvalidArg
ERROR_FTP_WINSOCK_InvalidArgument
ERROR_FTP_WINSOCK_InvalidOp
ERROR_FTP_WINSOCK_InvalidPropertyValue
ERROR_FTP_WINSOCK_MsgTooBig
ERROR_FTP_WINSOCK_NetReset
ERROR_FTP_WINSOCK_NetworkSubsystemFailed
ERROR_FTP_WINSOCK_NetworkUnreachable
ERROR_FTP_WINSOCK_NoBufferSpace
ERROR_FTP_WINSOCK_NoData
ERROR_FTP_WINSOCK_NonRecoverableError
ERROR_FTP_WINSOCK_NotConnected
ERROR_FTP_WINSOCK_NotInitialized
ERROR_FTP_WINSOCK_NotSocket
ERROR_FTP_WINSOCK_OpCanceled
ERROR_FTP_WINSOCK_OutOfMemory
ERROR_FTP_WINSOCK_OutOfRange
ERROR_FTP_WINSOCK_PortNotSupported
ERROR_FTP_WINSOCK_SetNotSupported
ERROR_FTP_WINSOCK_SocketShutdown
ERROR_FTP_WINSOCK_Success
ERROR_FTP_WINSOCK_Timedout
ERROR_FTP_WINSOCK_Unsupported
ERROR_FTP_WINSOCK_WouldBlock
ERROR_FTP_WINSOCK_WrongProtocol
ERROR_FTP_PROTOCOL_SERVICE_READY_IN_MINUTES
ERROR_FTP_PROTOCOL_USER_NAME_OK_NEED_PASSWORD
ERROR_FTP_PROTOCOL_NEED_ACCOUNT_FOR_LOGIN
ERROR_FTP_PROTOCOL_REQUESTED_FILE_ACTION_PENDING_FURTHER_INFO
ERROR_FTP_PROTOCOL_SERVICE_NOT_AVAILABLE_CLOSING_CONTROL_CONNECTION
ERROR_FTP_PROTOCOL_CANNOT_OPEN_DATA_CONNECTION
ERROR_FTP_PROTOCOL_CONNECTION_CLOSED_TRANSFER_ABORTED
ERROR_FTP_PROTOCOL_REQUESTED_FILE_ACTION_NOT_TAKEN
ERROR_FTP_PROTOCOL_REQUESTED_ACTION_ABORTED
ERROR_FTP_PROTOCOL_REQUESTED_ACTION_NOT_TAKEN
ERROR_FTP_PROTOCOL_SYNTAX_ERROR_COMMAND_UNRECOGNIZED
ERROR_FTP_PROTOCOL_SYNTAX_ERROR_IN_PARAMETERS_OR_ARGUMENTS
ERROR_FTP_PROTOCOL_COMMAND_NOT_IMPLEMENTED
ERROR_FTP_PROTOCOL_BAD_SEQUENCE_OF_COMMANDS
ERROR_FTP_PROTOCOL_COMMAND_NOT_IMPLEMENTED_FOR_THAT_PARAMETER
ERROR_FTP_PROTOCOL_NOT_LOGGED_IN
ERROR_FTP_PROTOCOL_NEED_ACCOUNT_FOR_STORING_FILES
ERROR_FTP_PROTOCOL_REQUESTED_ACTION_NOT_TAKEN_FILE_UNAVAILABLE
ERROR_FTP_PROTOCOL_REQUESTED_ACTION_ABORTED_PAGE_TYPE_UNKNOWN
ERROR_FTP_PROTOCOL_REQUESTED_FILE_ACTION_ABORTED_EXCEEDED_STORAGE_ALLOCATION
ERROR_FTP_PROTOCOL_REQUESTED_ACTION_NOT_TAKEN_FILE_NAME_NOT_ALLOWED
ERROR_FTP_USER_TIMEOUT
ERROR_FTP_USER_TRANSFER_IN_PROGRESS
End Enum

'********************************************************************************
'定义类事件
'********************************************************************************
Public Event StateChanged(State As FTP_CONNECTION_STATES)
Public Event DownloadProgress(lBytes As Long, lGetBytes As Long)
Public Event UploadProgress(lBytes As Long)
Public Event ReplyMessage(ByVal sMessage As String)
自己写吧,也不难
加载更多回复(5)

1,502

社区成员

发帖
与我相关
我的任务
社区描述
VB 网络编程
社区管理员
  • 网络编程
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧