用VB创建FTP组件(get)

创建

基本步骤:

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。

时间: 2024-09-19 09:03:32

用VB创建FTP组件(get)的相关文章

用VB创建FTP组件(put)

创建 基本步骤是: 1.调用InternetOpen函数设置环境. 2.调用InternetConnect 函数连接主机. 3.调用FtpPutFile 函数得到文件. 4.用InternetCloseHandle 函数关闭第1.2步的句柄. 当使用FtpGetFile 时与上面的步骤看起来完全一样.事实上唯一的区别是在第3步中调用了FtpPutFile .VB特定调用这一函数的声明是: Private Declare Function FtpPutFile Lib "wininet.dll&q

创建ASP组件修改《SERV-U》FTP 的密码

serv-u|创建 新建一<SERV-U>FTP服务器,在ASP中修改指定帐户的密码,写了一ASP组件来修改<SERV-U>  FTP密码.启动<Vb6.0>,选择新建ActiveX DLL,更改工程属性中的工程名称为"Ftpcommand",将CLASS名改为XJNFTP,源程序如下: Private Const scUserAgent = "vb wininet"Private Const INTERNET_OPEN_TYPE

手把手教你使用VB来创建ASP组件

创建 一.什么是组件 组件是包含可以更改的数据形式的代码的对象,是可用代码的封装,这些代码可以用来执行应用程序的一些功能,如从数据库中检索某些信息等功能.现在经常听人说起COM,其使它的意思是组件对象模型(Component Object Model),是由微软开发的可以在Windows平台上执行的对象模型,COM定义了组件之间的交互能力.为COM编写的组件可以重复使用,并不依赖于编写所用的语言,比如说,一个组件可以用VB,VC++甚至是Java来编写,总之,只要遵守COM规范就可以了. 二.为

使用VB创建ASP服务器端组件

创建|服务器 使用VB创建ASP服务器端组件 本篇文章通过与传统的设计方法相比较,介绍了如何在ASP代码中调用VB组件的方法.在本篇文章中,我们假设读者具有VB和ASP的相关入门知识. 服务器端组件和客户端组件的比较 服务器端组件和客户端组件有许多不同之处.服务器端组件是在计算机服务器上注册的DLL文件,客户端组件则在浏览器运行的计算机上注册,在IE中,这些客户端组件被称作ActiveX浏览器插件组件. ActiveX客户端组件可以使用VB编写,并通过互联网或内联网发送给浏览器,生成很精彩的效果

VS调用VB.NET函数连接SAP,无法创建ActiveX组件

问题描述 求助各位大神,我是用C#2012开发了一个软件,调用了一个使用VB.NET来连接SAP的函数,在本机上面测试的时候没有问题,放到Server2003服务器上面测试页没有问题,但是放到Server2008服务器上面却老是提示无法创建ActiveX组件.后来有放到装了VS2012开发软件的云服务器上面,也是Server2008服务器但是没有安装SAP,一样提示无法创建ActiveX组件.又因为我的电脑是双系统-(XP+Win7),后面我又在我的电脑上面的XP系统测试,也是无法创建Activ

【求助】Vb.net编程遇到问题(无法创建 ActiveX 组件),谢谢!

问题描述 求助事情:部分人(目前发现2台电脑出问题---也是在正常运行一段时间后突然出问题的,其余还正常)在使用我编写的软件时,无法生成word文件,提示是System.Exception:无法创建ActiveX组件.找不到原因了.说明1:根据前辈的一个程序(FORTRAN编的,DOS版的),用VB2008编写了一个小程序,功能其实很简单:根据输入参数做一些代数和逻辑运算,然后用Word输出结果.说明2:由于功能不多,我全部给集成到一个可执行文件里,大家拷贝这个可执行文件就可以使用,不需要再安装

Win7下的内置FTP组件的设置详解

在局域网中共享文件,FTP是比较方便的方案之一.Win7内部集成了FTP,只是设置起来颇费一番功夫.着文以记之. 一.安装FTP组件 由于Win7默认没有安装FTP组件.故FTP的设置第一步就是安装FTP组件 点击:控制面板->程序和功能->打开或关闭Windows功能.勾选"FTP服务器"及"FTP服务""FTP扩展性",点击"确定",安装FTP组件.如下图所示 二.添加FTP站点 点击:控制面板->管理工

已调试好的asp程序在VB中转换为组件的技巧(转)好象也有不少人问过类似的问题

程序|技巧|问题|转换 已调试好的asp程序在VB中转换为组件的技巧 2001年2月3日 在网易虚拟社区的"VB和Basic区"里有一篇<使用VB编写纯ASP程序 [转][Technology] >,其实我认为最好的方法应该这样: 原文中的定义如下: Dim m_objResponse As Response 其实对于我们写过.dll的来说,并不是很好,就是如果要将该程序拿到.asp程序中进行调试时,尤其是我们将已经调试通过的.asp程序做成.dll时,.asp程序里用的是

如何编写一个创建FTP站点的函数?_编程10000问

如何编写一个创建FTP站点的函数? Function ASTCreateFtpSite(IPAddress, RootDirectory, ServerComment, HostName, PortNum, Computer, Start,LogFileDirectory)    Dim MSFTPSVC, FtpServer, NewFtpServer, NewDir    Dim Bindings, BindingString, NewBindings, Index, SiteObj, bD