VB编程FTP微软详实案例附带源程序.docx

上传人:b****7 文档编号:23579565 上传时间:2023-05-18 格式:DOCX 页数:49 大小:68.08KB
下载 相关 举报
VB编程FTP微软详实案例附带源程序.docx_第1页
第1页 / 共49页
VB编程FTP微软详实案例附带源程序.docx_第2页
第2页 / 共49页
VB编程FTP微软详实案例附带源程序.docx_第3页
第3页 / 共49页
VB编程FTP微软详实案例附带源程序.docx_第4页
第4页 / 共49页
VB编程FTP微软详实案例附带源程序.docx_第5页
第5页 / 共49页
点击查看更多>>
下载资源
资源描述

VB编程FTP微软详实案例附带源程序.docx

《VB编程FTP微软详实案例附带源程序.docx》由会员分享,可在线阅读,更多相关《VB编程FTP微软详实案例附带源程序.docx(49页珍藏版)》请在冰豆网上搜索。

VB编程FTP微软详实案例附带源程序.docx

VB编程FTP微软详实案例附带源程序

实例7FTP客户端程序

目标和要点

C实例目标

本实例将介绍创建FTP客户端程序并进行与FTP服务器连接的实例,程序运行的结果如图所示。

图启动窗体:

图7-1Ftp客户端程序运行时的启动窗体

主窗体:

图7-2Ftp客户端程序运行时的主窗体

本例中利用API函数实现与FTP服务器的连接与对话,可以根据主机服务器的地址和端口连接到Internet上任何一台FTP服务器上,对FTP服务器进行文件上载、文件下载等操作。

$技术要点

本实例的技术要点主要包括:

1.建立FTP连接的基本原理与步骤

2.建立FTP连接的要使用到的API函数

3.对FTP进行文件与目录操作

在本实例中,与FTP服务器的连接与对话是通过API函数来实现的,建立连接必须遵循一定的步骤和规则,才能正确地与FTP服务器取得连接和对话,总的说来,建立连接的步骤一般分为以下几步:

1打开Internet会话

2建立FTP类型的Internet连接

3设置FTP服务器的当前目录

4查看FTP服务器上指定目录下的文件

5从FTP服务器当前目录下载文件或上载文件

6在FTP服务器上进行目录或文件操作,如创建新目录,删除目录,删除文件等

7关闭与FTP服务器的连接

8关闭Internet对话

(其中步骤④、⑤、⑥可重复进行)

设计窗体时,设计窗体时为了便于了解建立连接的步骤,将打开Internet对话作为一个单独的启动时显示的窗体,在成功打开Internet对话后,显示进行FTP对话的主窗体,在主窗体中与FTP服务器交互对话。

对于实现连接与对话的每一个步骤,API函数至关重要,在整个交互对话过程中,我们只要熟悉了相应的API函数,就不难理解进行FTP操作的用法。

至于API函数怎么样通过Internet与FTP进行会话的底层细节,我们可不必去考虑。

实现步骤

F创建启动窗体frmFTPst

启动VB,新建一个标准EXE过程,在默认的窗体Form1中加载以下控件:

两个CommonButton控件、两个TextBox控件、两个Frame控件、两个Label控件。

F设定窗体和控件属性

首先适当调整窗体的尺寸大小,设置其标题为FTP客户端程序、窗体名称。

然后设置各个控件的属性值。

窗体及其主要控件的属性如表7-1所示:

 

表7-1frmFTPst窗体及其控件的主要属性

对象

属性

属性值

Form

Name

Caption

BorderStyle

MaxButton

MinButton

FrmFTPst

"FTP客户端程序"

2-Sizable

True

True

CommonButton

Name

Caption

CmdInternetOpen

"打开Internet会话"

CommonButton

Name

Caption

CmdInternetClose

"关闭Internet会话"

TextBox

Name

Appearance

TxtProxy

0'Flat

TextBox

Name

Appearance

TxtProxyPort

0'Flat

Label

Name

Caption

Label1

"端口:

"

Label

Name

Caption

Label2

"地址:

"

Frame

Name

Caption

Frame1

"打开及关闭会话"

Frame

Name

Caption

Frame1

"代理服务器"

设计窗体最终如图7-3所示:

图7-3设计的frmFTPst窗体

F创建主窗体frmFTP

在菜单“工程”下选择“添加窗体”,加入窗体Form2,将From2的大小调整到合适的尺寸,往窗体中添加以下控件:

七个CommonButton控件、四个TextBox控件、两个CheckBox控件、两个OptionBox控件、一个TreeView控件、一个DriveListbox控件、一个DirListBox控件、一个FileListBox控件、一个ImageList控件、五个Label控件、四个Frame控件。

F设定窗体和控件属性

首先适当调整窗体的尺寸大小,设置其标题为FTP客户端程序、窗体名称。

然后设置各个控件的属性值。

窗体及其主要控件的属性如表7-2所示:

 

表7-2frmFTP窗体及其控件的主要属性

对象

属性

属性值

Form

Name

Caption

BorderStyle

MaxButton

MinButton

FrmFTP

"FTP客户端程序"

2-Sizable

True

True

CommonButton

Name

Caption

CmdConnect

"连接"

CommonButton

Name

Caption

CmdClose

"断开"

CommonButton

Name

Caption

CmdGet

"下载"

CommonButton

Name

Caption

CmdPut

"上载"

CommonButton

Name

Caption

CmdMdDir

"新建目录"

CommonButton

Name

Caption

CmdDelDir

"删除目录"

CommonButton

Name

Caption

CmdDelFile

"删除文件"

TextBox

Name

Appearance

TxtServer

0'Flat

TextBox

Name

Appearance

TxtUser

0'Flat

TextBox

Name

Appearance

TxtPassword

0'Flat

TextBox

Name

Appearance

TxtPort

0'Flat

CheckBox

Name

Caption

Value

ChkAnon

"匿名登录"

0’Unchecked

CheckBox

Name

Caption

Value

ChkPassive

"FTP反向对话"

0’Unchecked

OptionButton

Name

Caption

Value

OptBin

"二进制"

False

OptionButton

Name

Caption

Value

OptAscii

"文本"

False

TreeView

Name

Style

Appearance

TreeView1

7

1

DriveListBox

Name

Drive1

DirListBox

Name

Dir1

FileListBox

Name

File1

ImageList

Name

ImageList1

Label

Name

Caption

Label1

"FTP服务器:

"

Label

Name

Caption

Label2

"用户名:

"

Label

Name

Caption

Label3

"口令:

"

Label

Name

Caption

Label4

"端口:

"

Label

Name

Caption

Label5

"传输方式:

"

Frame

Name

Caption

Frame1

"FTP服务器:

"

Frame

Name

Caption

Frame2

""

Frame

Name

Caption

Frame3

""

Frame

Name

Caption

Frame4

"本地计算机:

"

设计窗体最终如图7-4所示:

图7-4设计的frmFTP窗体

☞编写代码

1.模块modWinInet的代码:

在此模块中声明该程序用到的API函数及其常量:

OptionExplicit

PublicConstMAX_PATH=260

PublicConstNO_ERROR=0

'在WIN32_FIND_DATA结构中的文件查找属性常数

PublicConstFILE_ATTRIBUTE_READONLY=&H1'只读文件

PublicConstFILE_ATTRIBUTE_HIDDEN=&H2'隐含文件

PublicConstFILE_ATTRIBUTE_SYSTEM=&H4'系统文件

PublicConstFILE_ATTRIBUTE_DIRECTORY=&H10

'目录文件(所获取的文件类型是目录)

'在FtpFindFirstFile和FtpFindNextFile函数把文件和目录当作文件一同获取

PublicConstFILE_ATTRIBUTE_ARCHIVE=&H20'存档文件

PublicConstFILE_ATTRIBUTE_NORMAL=&H80'文件没有的其他属性值

PublicConstFILE_ATTRIBUTE_TEMPORARY=&H100'临时文件

PublicConstFILE_ATTRIBUTE_COMPRESSED=&H800'被压缩的文件和目录

PublicConstFILE_ATTRIBUTE_OFFLINE=&H1000

''直接从远程服务器中获得数据,而不使用本地缓冲的数据

PublicConstINTERNET_FLAG_RELOAD=&H80000000

'FTP服务器的文件打开标记:

只读或可写

PublicConstGENERIC_READ=&H80000000

PublicConstGENERIC_WRITE=&H40000000

'标示调用Internet会话的应用程序的名称

PublicConstscUserAgent="FTPCLIENT"

'按照预定义的方式打开连接Internet对话

PublicConstINTERNET_OPEN_TYPE_PRECONFIG=0

'直接连接Internet

PublicConstINTERNET_OPEN_TYPE_DIRECT=1

'通过代理服务器连接

PublicConstINTERNET_OPEN_TYPE_PROXY=3

'使用与连接协议相应的端口号

PublicConstINTERNET_INVALID_PORT_NUMBER=0

'与ftp服务器之间的文件传输采取ascii(文本)方式

PublicConstFTP_TRANSFER_TYPE_ASCII=&H1

'与ftp服务器之间的文件传输采取binary(二进制)方式

PublicConstFTP_TRANSFER_TYPE_BINARY=&H2

PublicConstINTERNET_FLAG_PASSIVE=&H8000000

'从服务器返回的一个附加错误

PublicConstERROR_INTERNET_EXTENDED_ERROR=12003

'在与Internet上的一些常用的服务器程序连接时,常用的端口号是.

'FTP协议服务器的端口号为21

PublicConstINTERNET_DEFAULT_FTP_PORT=21

'GOPHER协议服务器的端口号为70

PublicConstINTERNET_DEFAULT_GOPHER_PORT=70

'HTTP协议服务器的端口号为80

PublicConstINTERNET_DEFAULT_HTTP_PORT=80

'连接Internet服务的常数

PublicConstINTERNET_SERVICE_FTP=1

PublicConstINTERNET_SERVICE_GOPHER=2

PublicConstINTERNET_SERVICE_HTTP=3

'用于装载文件时间的结构

TypeFILETIME

dwLowDateTimeAsLong

dwHighDateTimeAsLong

EndType

'这个结构用于装载与找到的文件有关的具体信息

TypeWIN32_FIND_DATA

dwFileAttributesAsLong'文件的属性

ftCreationTimeAsFILETIME'文件的创建时间

ftLastAccessTimeAsFILETIME'文件的最后一次被读写的时间

ftLastWriteTimeAsFILETIME'文件的最后一次修改的时间

nFileSizeHighAsLong

nFileSizeLowAsLong

dwReserved0AsLong

dwReserved1AsLong

cFileNameAsString*MAX_PATH'用于存放文件名的字符串

cAlternateAsString*14

EndType

PublicConstERROR_NO_MORE_FILES=18

'连接FTP服务器的操作函数

'打开连接internet的会话

PublicDeclareFunctionInternetOpenLib"wininet.dll"Alias"InternetOpenA"_

(ByValsAgentAsString,ByVallAccessTypeAsLong,ByValsProxyNameAsString,_

ByValsProxyBypassAsString,ByVallFlagsAsLong)AsLong

'sAgent--要调用internet对话的应用程序名

'lAccessType--请求的访问的类型,包括:

'INTERNET_OPEN_TYPE_PRECONFIG-预配置(缺省)

'INTERNET_OPEN_TYPE_DIRECT-直接指向internet

'INTERNET_OPEN_TYPE_PROXY-通过代理服务器连接

'sProxyName--如果lAccessType被设置为INTERNET_OPEN_TYPE_PROXY,该参数

'为代理服务器的名字

'sProxyBypass--包含一系列代理服务器地址的字符串

'lFlags--会话的选项,可包括下列值:

'INTERNET_FLAG_DONT_CACHE--不对数据进行本地缓冲或通过网关服务器缓冲

'INTERNET_FLAG_ASYNC--

'当操作完成时,将同INTERNET_STATUS_REQUEST_COMPLETE一起进行一个状态

'回调

'INTERNET_FLAG_OFFLINE--只通过永久缓冲进行下载操作

'打开一个根据连接类型的Internet连接

PublicDeclareFunctionInternetConnectLib"wininet.dll"Alias"InternetConnectA"_

(ByValhInternetSessionAsLong,ByValsServerNameAsString,ByValnServerPortAsInteger,_

ByValsUsernameAsString,ByValsPasswordAsString,ByVallServiceAsLong,_

ByVallFlagsAsLong,ByVallContextAsLong)AsLong

'hInternetSession--函数InternetOpen()打开Internet对话返回的值

'sServerName--要连接的服务器的名称或IP

'nServerPort--该连接的Internet端口

'sUsername--登录的用户帐号

'sPassword--登录的口令

'lService--要连接的服务器类型(这里是连接FTP服务器,连接的类型为常数'INTERNET_SERVICE_FTP)

'关闭Internet连接

PublicDeclareFunctionInternetCloseHandleLib"wininet.dll"_

(ByValhInetAsLong)AsInteger

'hInet--InternetConnect()函数返回的值

'文件查找操作函数

'在FTP连接中查找一个文件。

在调用此函数后取得第一个文件后,可以接着调用FtpFindNextFile()

'获得下一个查到的FTP服务器上的文件。

PublicDeclareFunctionFtpFindFirstFileLib"wininet.dll"Alias"FtpFindFirstFileA"_

(ByValhFtpSessionAsLong,ByVallpszSearchFileAsString,_

lpFindFileDataAsWIN32_FIND_DATA,ByValdwFlagsAsLong,ByValdwContentAsLong)AsLong

'lpszSearchFile--指向要搜索的文件名。

可以通配符*.*的形式。

'lpFindFileData--用于装载与找到的文件有关的具体信息

'dwFlags--数据传输的方式,通常设置为0(ASCII方式)

'继续由FtpFindFirstFile()函数发起的文件搜索操作

PublicDeclareFunctionInternetFindNextFileLib"wininet.dll"Alias_

"InternetFindNextFileA"(ByValhFindAsLong,_

lpvFindDataAsWIN32_FIND_DATA)AsLong

'hFind--FtpFindFirstFile()函数的返回值

'lpvFindData--用于装载与找到的文件有关的具体信息

'目录操作函数

'改变FTP服务器的当前目录。

PublicDeclareFunctionFtpSetCurrentDirectoryLib"wininet.dll"Alias_

"FtpSetCurrentDirectoryA"(ByValhFtpSessionAsLong,_

ByVallpszDirectoryAsString)AsBoolean

'lpszDirectory--包含要到达的目录名。

可以是相对的或绝对的路径。

'在ftp服务器上创建目录

PublicDeclareFunctionFtpCreateDirectoryLib"wininet.dll"Alias"FtpCreateDirectoryA"

(ByValhFtpSessionAsLong,ByVallpszDirectoryAsString)AsBoolean

'lpszDirectory--包含要创建目录的字符串,可以是一个相对路径或绝对路径

'取得ftp当前的目录的名字

PublicDeclareFunctionFtpGetCurrentDirectoryLib"wininet.dll"Alias"FtpGetCurrentDirectoryA"_

(ByValhFtpSessionAsLong,lpszCurrentDirectoryAsString,lpdwCurrentDirectoryAsLong)AsBoolean

'lpszCurrentDirectory--存放目录名字的字符串

'lpdwCurrentDirectory--目录名字字符串的字节数

'删除ftp服务器的一个目录

PublicDeclareFunctionFtpRemoveDirectoryLib"wininet.dll"Alias"FtpRemoveDirectoryA"_

(ByValhFtpSessionAsLong,ByVallpszDirectoryAsString)AsBoolean

'lpszDirectory--要删除的目录名称,可以是相对路径或绝对路径

'文件操作函数

'从ftp服务器上取得一个文件并保存在本地机器上,此函数包括了与从一个FTP服务器中读取一个文件

'并在本地保存等操作有关的所有功能

PublicDeclareFunctionFtpGetFileLib"wininet.dll"Alias"FtpGetFileA"_

(ByValhFtpSessionAsLong,ByVallpszRemoteFileAsString,_

ByVallpszNewFileAsString,ByValfFailIfExistsAsBoolean,ByValdwFlagsAndAttributesAsLong,_

ByValdwFlagsAsLong,ByValdwContextAsLong)AsBoolean

'lpszRemoteFile--包含FTP服务器中要读的文件名

'lpszNewFile--在本地机器中要创建的文件名

'fFailIfExists--当为TRUE时,如果文件已经存在,则调用失败

'dwFlagsAndAttributes--文件的属性

'dwFlags--文件的传输方式可能包括下列值:

'FTP_TRANSFER_TYPE_ASCII--使用可以将控制和格式信息转换到本地对应文件的'ASCII传输方式

'FTP_TRANSFER_TYPE_BINARY--使用把文件作为一个连续数据流传输的FTP图象传

'输方式,这种方式

'不区别在文件内部数据结构之间的任何分界(如行结束的回车标记)

'dwContext--要取回的文件的描述表标识符

'把一个文件上栽到FTP服务器上。

其中包括了要将一个文件上载到FTP服务器上所有

'的有关操作

PublicDeclareFunctionFtpPutFileLib"wininet.dll"Alias"FtpPutFileA"_

(ByValhFtpSessionAsLong,ByVallpszLocalFileAsString,_

ByVallpszRemoteFileAsString,_

ByValdwFlagsAsLong,ByValdwContextAsLo

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 经管营销 > 人力资源管理

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1