第 八 章 使 用 FTP 控 件

第 八 章 使 用 FTP 控 件 - 图1第 八 章 使 用 FTP 控 件 - 图2第 八 章 使 用 FTP 控 件 - 图3第 八 章 使 用 FTP 控 件 - 图4第 八 章 使 用 FTP 控 件 - 图5第 八 章 使 用 FTP 控 件 - 图6第 八 章 使 用 FTP 控 件 - 图7第 八 章 使 用 FTP 控 件 - 图8第 八 章 使 用 FTP 控 件 - 图9第 八 章 使 用 FTP 控 件 - 图10第 八 章 使 用 FTP 控 件 - 图11第 八 章 使 用 FTP 控 件 - 图12第 八 章 使 用 FTP 控 件 - 图13第 八 章 使 用 FTP 控 件 - 图14第 八 章 使 用 FTP 控 件 - 图15第 八 章 使 用 FTP 控 件 - 图16第 八 章 使 用 FTP 控 件 - 图17FT P 是 F ile T ra n s fe r P ro toc o l的 缩 写 意 为 文 件 传 输 协 议 用 于 在 In te rn e t上 传输 文 本 和 二 进 制 文 件 由 于 FT P 的 应 用 非 常 广 泛 现 在 流 行 的 W W W 浏 览 器如 IE N e ts c a p e 都 支 持 FT P 协 议 也 就 是 说 浏 览 器 就 是 一 个 简 单 的 FT P 客户 程 序 此 外 专 业 的 FT P 客 户 程 序 也 很 多 比 较 著 名 的 是 Cu te F T P G e t R ight 等 更 值 得 一 提 的 是 W ind ow s 95 已 经 把 FT P 作 为 一 项 标 准 的 功 能 集 成 到 操作 系 统 中 用 户 只 要 运 行 FT P 命 令 就 可 以 得 到 FT P > 提 示 符 然 后 就 可 以象 使 用 DOS 命 令 那 样 进 行 FT P 的 操 作

第 八 章 使 用 FTP 控 件 - 图18第 八 章 使 用 FTP 控 件 - 图19第 八 章 使 用 FTP 控 件 - 图20第 八 章 使 用 FTP 控 件 - 图21第 八 章 使 用 FTP 控 件 - 图22第 八 章 使 用 FTP 控 件 - 图23第 八 章 使 用 FTP 控 件 - 图24第 八 章 使 用 FTP 控 件 - 图25第 八 章 使 用 FTP 控 件 - 图26第 八 章 使 用 FTP 控 件 - 图27第 八 章 使 用 FTP 控 件 - 图28第 八 章 使 用 FTP 控 件 - 图29第 八 章 使 用 FTP 控 件 - 图30第 八 章 使 用 FTP 控 件 - 图31第 八 章 使 用 FTP 控 件 - 图32不 过 本 章 并 不 是 教 您 如 何 使 用 这 些 现 成 的 工 具 软 件 而 是 要 讲 述 怎 样 在应 用 程 序 中 实 现 FT P 协 议 换 句 话 说 就 是 自 己 写 FT P 客 户 程 序 FT P 协 议本 身 是 很 复 杂 的 幸 运 的 是 C+ + Bu ild e r 3 引 进 了 N e t M a n a g e 公 司 的 一 个A c tiv e X 控 件 C+ + 的 类 名 叫 TN M F T P 下 面 我 们 将 详 细 介 绍 TN M F TP 的 特性 方 法 和 事 件 读 者 重 点 要 掌 握 如 何 登 录 到 FT P 服 务 器 上 如 何 得 到 和 显示 FT P 服 务 器 上 的 目 录 如 何 从 FT P 服 务 器 下 载 文 本 文 件 和 二 进 制 文 件 如何 把 本 地 磁 盘 中 的 文 本 文 件 和 二 进 制 文 件 上 载 到 FT P 服 务 器

1 FT P 控 件 的 特 性

B y te s R ecv d 特 性

第 八 章 使 用 FTP 控 件 - 图33声 明 prope r ty B y te s R e c vd: long in t;

第 八 章 使 用 FTP 控 件 - 图34第 八 章 使 用 FTP 控 件 - 图35第 八 章 使 用 FTP 控 件 - 图36这 个 特 性 返 回 已 收 到 的 字 节 数 与 B y te s T o ta l特 性 配 合 使 用 可 以 显 示 文 件 下载 的 进 度 程 序 示 例 如 下

v o id _ fa s tc a ll T F o rm 1 ::N M F T P 1 P a c k e tR e c v d ( T O b je c t * S e n d e r )

{

S ta tu s B a r1 -> S im p le T e x t = In t T o S tr(N M F T P 1 -> B y te s R e c v d )+ " b y te s o f " + In tT o S tr( N M F T P 1 -> B y te s T o ta l)+ " re c e iv e d " ;

}

By te s S e n t 特 性

第 八 章 使 用 FTP 控 件 - 图37声 明 prope r ty B y te s S e n t: long in t;

第 八 章 使 用 FTP 控 件 - 图38第 八 章 使 用 FTP 控 件 - 图39第 八 章 使 用 FTP 控 件 - 图40这 个 特 性 返 回 已 发 出 的 字 节 数 与 B y te s T o ta l特 性 配 合 使 用 可 以 显 示 文 件 上载 的 进 度 程 序 示 例 如 下

v o id _ fa s tc a ll T F o rm 1 ::N M F T P 1 P a c k e tS e n t( T O b je c t * S e n d e r )

{

S ta tu s B a r1 -> S im p le T e x t = In t T o S tr(N M F T P 1 -> B y te s S e n t)+ " by te s of " + In tT oS tr ( N M F T P 1-> B y te s T o ta l)+ " s e n t" ;

}

B y te s Tota l 特 性

第 八 章 使 用 FTP 控 件 - 图41声 明 prope r ty B y te s T o ta l : long in t;

第 八 章 使 用 FTP 控 件 - 图42这 个 特 性 返 回 此 次 下 载 或 上 载 总 共 要 传 输 的 字 节 数 与 B y te s R ecv d 特 性 或

第 八 章 使 用 FTP 控 件 - 图43B y te s S e n t特 性 配 合 使 用 可 以 显 示 传 输 的 进 度

C u rren t D ir 特 性

第 八 章 使 用 FTP 控 件 - 图44声 明 prope r ty C u r re n tD ir : s tr ing;

第 八 章 使 用 FTP 控 件 - 图45第 八 章 使 用 FTP 控 件 - 图46这 个 特 性 返 回 FT P 服 务 器 上 的 当 前 目 录 程 序 示 例 如 下

vo id _ fa s tc a l l T F orm 1 : : N M F T P 1 S uc c e ss ( T C m dT y p e T ra n s _ T y p e )

{

s w i tc h ( T ra n s _T y p e ) {

c a s e c m dC ha nge D ir :

S ta tus B a r 1 -> S im p le T e xt = " C ha ng e D ir s u c c e ss " ; F o rm 1 . C a p tio n = N M F T P 1 -> C u r re n tD ir;

bre a k;

cas e c m d M a k eD ir : S tatu s B a r 1 -> S im p le T e x t = " M ak eD ir su cc es s " ; b reak ; cas e c m d D e lete: S tatu s B a r 1 -> S im p le T e x t = " D elete su cc es s " ; b reak ;

c a s e c m dR e m ove D ir : S ta tus B a r 1 -> S im p le T e xt = " R e m ove D ir s u c c e s s " ; b re a k ; c a s e c m d L is t: S ta tu s B a r 1 -> S im p le T e x t = " L is t s u c c e s s " ; b re a k ;

cas e c m d R en am e: S tatu s B a r 1 -> S im p le T e x t = " R en am e s u cc es s " ; b reak ;

cas e c m d U p R es to re : S tatu s B a r 1 -> S im p le T e x t = " U p lo a d R e s to re su cc es s " ; b rea k ; cas e c m d D o w n R es to re :

S tatu s B a r 1 -> S im p le T e x t= " D o w n lo ad R e s to re s u c cess " ; bre a k;

c a s e c m dD ow n loa d: S ta tus B a r 1 -> S im p le T e xt = " D ow n lo a d su c c e s s " ; b re a k; c a s e c m dU p lo a d: S ta tus B a r 1 -> S im p le T e xt = " U p loa d s u c c e s s " ; bre a k;

c a s e c m dA pp e n d: S ta tus B a r 1 -> S im p le T e xt = " U p loa d A p p e nd su c c e s s " ; b re a k; c a s e c m d R e In it: S ta tu s B a r 1 -> S im p le T e x t = " R e In it s u c c e s s " ; b re a k ;

cas e c m d A l lo ca te: S tatu s B a r 1 -> S im p le T e x t = " A l lo c a te s u cce ss " ; b re a k ; cas e c m d N L is t : S tatu s B a r 1 -> S im p le T e x t = " N L is t s u cce s s " ; b re a k ;

c a s e c m dD oC o m m a nd: S ta tus B a r 1 -> S im p le T e xt = " D oC om m a nd s u c c e s s" ; b re a k; d e fa u lt: S h o w M e s sa g e (" U n re c o g n iz e d c o m m a n d su c c e s s ." ) ; b re a k ;

}

}

H o s t 特 性

第 八 章 使 用 FTP 控 件 - 图47声 明 prope r ty H o s t: S tr ing;

第 八 章 使 用 FTP 控 件 - 图48第 八 章 使 用 FTP 控 件 - 图49第 八 章 使 用 FTP 控 件 - 图50这 个 特 性 用 于 指 定 FT P 服 务 器 的 主 机 名 或 IP 地 址 如 127 .0 .0 .1 程 序 示 例 如下

v o id _ fa s tc a ll T F o rm 1 ::B u tto n 1 C lic k ( T O b je c t * S e n d e r )

{

N M F T P 1 -> R e port L e v e l = S ta tus _B a s ic ;

if (C h e c k B o x 1 -> C h e c k e d )

{

N M FT P1 -> P roxy = E d i t 6 -> T e x t ;

N M FT P1 -> P roxy Po r t = S tr T o In t( E d it 7 -> T e x t) ;

}

NM F T P 1 -> H o s t = H o s t T x t-> T e x t ;

N M FT P1 -> Po r t = S tr T o In t( P o r t T x t-> T e x t) ; NM F T P 1 -> U s e r ID = U s e r T x t-> T e x t ;

N M FT P1 -> Pa s s w o rd = Pa s s T x t-> T e x t ; N M FT P1 -> C o n n e c t( ) ;

}

第 八 章 使 用 FTP 控 件 - 图51第 八 章 使 用 FTP 控 件 - 图52第 八 章 使 用 FTP 控 件 - 图53第 八 章 使 用 FTP 控 件 - 图54这 个 程 序 用 一 个 复 选 框 让 用 户 选 择 是 否 要 使 用 代 理 服 务 器 如 需 要 用 代 理服 务 器 就 把 P ro x y 特 性 设 为 代 理 服 务 器 的 IP 地 址 P rox y P ort特 性 设 为 代 理服 务 器 的 端 口 号

Lo c a l I P 特 性

第 八 章 使 用 FTP 控 件 - 图55声 明 prope r ty : L o c a l IP : S tr ing;

第 八 章 使 用 FTP 控 件 - 图56第 八 章 使 用 FTP 控 件 - 图57第 八 章 使 用 FTP 控 件 - 图58第 八 章 使 用 FTP 控 件 - 图59第 八 章 使 用 FTP 控 件 - 图60第 八 章 使 用 FTP 控 件 - 图61这 个 只 读 的 特 性 以 点 分 法 的 形 式 返 回 本 地 计 算 机 的 IP 地 址 如 果 本 地计 算 机 有 多 个 IP 地 址 这 个 特 性 返 回 其 中 的 第 一 个 程 序 示 例 如 下

v o id _ fa s tc a ll T F o rm 1 ::B u tto n 1 C lic k ( T O b je c t * S e n d e r )

{

S h o w M e s sag e(" 您的计算 机的 IP 地址是 " + N M F T P 1 -> L o c a l IP );

}

Pa s sw o r d 特 性

第 八 章 使 用 FTP 控 件 - 图62声 明 prope r ty P a s s w ord: s tr ing;

第 八 章 使 用 FTP 控 件 - 图63登 录 到 FT P 服 务 器 的 时 候 需 要 给 出 用 户 名 和 口 令 ( 通 常 是 您 的 E

  • m a il地 址 )

第 八 章 使 用 FTP 控 件 - 图64这 个 特 性 用 于 给 出 口 令

Po r t 特 性

第 八 章 使 用 FTP 控 件 - 图65声 明 prope r ty P o r t: in te ge r ;

第 八 章 使 用 FTP 控 件 - 图66第 八 章 使 用 FTP 控 件 - 图67第 八 章 使 用 FTP 控 件 - 图68这 个 特 性 用 于 指 定 FT P 服 务 器 的 端 口 号 默 认 是 21 因 为 FT P 是 标 准 服 务

P ro x y 特 性

第 八 章 使 用 FTP 控 件 - 图69声 明 prope r ty P roxy : S tr ing;

第 八 章 使 用 FTP 控 件 - 图70第 八 章 使 用 FTP 控 件 - 图71第 八 章 使 用 FTP 控 件 - 图72这 个 特 性 用 于 指 定 代 理 服 务 器 的 主 机 名 或 IP 地 址 如 果 不 需 要 用 代 理 服 务器 这 个 特 性 必 须 空 着

P rox y P or t 特 性

第 八 章 使 用 FTP 控 件 - 图73声 明 prope r ty P roxy P o r t : in te ge r ;

第 八 章 使 用 FTP 控 件 - 图74第 八 章 使 用 FTP 控 件 - 图75第 八 章 使 用 FTP 控 件 - 图76这 个 特 性 用 于 指 定 代 理 服 务 器 的 端 口 号 如 果 不 用 代 理 服 务 器 这 个 特 性必 须 空 着

R e m o te I P 特 性

第 八 章 使 用 FTP 控 件 - 图77声 明 prope r ty R e m o te IP : s tr ing ;

第 八 章 使 用 FTP 控 件 - 图78第 八 章 使 用 FTP 控 件 - 图79第 八 章 使 用 FTP 控 件 - 图80第 八 章 使 用 FTP 控 件 - 图81这 个 特 性 返 回 以 点 分 法 表 示 的 FT P 服 务 器 的 IP 地 址 程 序 示 例 如 下

v o id _ fa s tc a ll T F o rm 1 ::B u tto n 1 C lic k ( T O b je c t * S e n d e r )

{

S h o w M e s sag e(" 当前连接 的是 : " + N M F T P 1 -> R e m o te IP );

}

R e p ly N u m be r 特 性

第 八 章 使 用 FTP 控 件 - 图82声 明 p ro p e r ty R e p ly N u m b e r : S m a llin t;

第 八 章 使 用 FTP 控 件 - 图83第 八 章 使 用 FTP 控 件 - 图84这 个 只 读 的 特 性 返 回 FT P 服 务 器 响 应 客 户 请 求 的 应 答 代 码 程 序 示 例 如 下

vo id _ fa s tc a l l T F orm 1 : : N M F T P 1 S ta tu s ( T C om pon e n t *S e n d e r , A n s i S tr in g S ta tus )

{

if ( S ta tu s B a r 1 ) S ta tu s B a r 1 -> S im p le T e x t = S ta tu s ; if ( N M F T P 1 ->R e p ly N u m b e r = = 53 0 )

S how M e s sa g e (" R e q u e s te d a c t ion no t ta k e n " ) ;

}

R e p o r t L e v e l 特 性

第 八 章 使 用 FTP 控 件 - 图85声 明 prope r ty R e po r t L e ve l : in te ge r ;

第 八 章 使 用 FTP 控 件 - 图86第 八 章 使 用 FTP 控 件 - 图87第 八 章 使 用 FTP 控 件 - 图88第 八 章 使 用 FTP 控 件 - 图89第 八 章 使 用 FTP 控 件 - 图90第 八 章 使 用 FTP 控 件 - 图91第 八 章 使 用 FTP 控 件 - 图92这 个 特 性 用 于 指 定 状 态 信 息 的 详 细 程 度 可 以 设 为 以 下 值 S ta tu s _N one S ta tu s _In form a t iona l S tatu s _ B as ic S ta tus _R ou tin e s S ta tu s _D e bug

第 八 章 使 用 FTP 控 件 - 图93S ta tu s _ T ra c e

S ta tu s 特 性

第 八 章 使 用 FTP 控 件 - 图94声 明 prope r ty S ta tus : S tr ing;

第 八 章 使 用 FTP 控 件 - 图95这 个 特 性 返 回 当 前 的 状 态 信 息

T im e o u t 特 性

第 八 章 使 用 FTP 控 件 - 图96声 明 prope r ty T im e O u t: In te ge r ;

第 八 章 使 用 FTP 控 件 - 图97第 八 章 使 用 FTP 控 件 - 图98这 个 特 性 用 于 指 定 一 个 毫 秒 数 如 果 超 过 规 定 的 时 间 S o ck et没 有 响 应 就 触 发异 常

Tra n s a c tio n R e p ly 特 性

第 八 章 使 用 FTP 控 件 - 图99声 明 prope r ty T ra n s a c tionR e p ly : S tr ing;

第 八 章 使 用 FTP 控 件 - 图100第 八 章 使 用 FTP 控 件 - 图101这 个 特 性 返 回 上 一 次 命 令 的 执 行 结 果 程 序 示 例 如 下

v o id _ fa s tc a ll T F o rm 1 ::B u tto n 1 C lic k ( T O b je c t * S e n d e r )

{

NM F T P 1 -> D o C o m m a n d (" S YS T " ) ;

S h o w M e s sag e( N M F T P 1 -> T ran s a ctio n R e p ly ) ;

}

U s erI d 特 性

第 八 章 使 用 FTP 控 件 - 图102声 明 prope r ty U s e r ID : s tr ing;

第 八 章 使 用 FTP 控 件 - 图103第 八 章 使 用 FTP 控 件 - 图104这 个 特 性 用 于 给 出 用 户 名 因 为 有 的 FT P 服 务 器 需 要 给 出 用 户 名

  1. 2 F T P 控 件 的 方 法

Ab o r t 函 数

第 八 章 使 用 FTP 控 件 - 图105声 明 proc e dure A bort;

第 八 章 使 用 FTP 控 件 - 图106第 八 章 使 用 FTP 控 件 - 图107这 个 函 数 用 于 中 止 本 次 下 载 或 上 载 但 不 断 开 与 FT P 服 务 器 的 连 接

A llo c a te 函 数

第 八 章 使 用 FTP 控 件 - 图108声 明 proc e dure A llo c a te ( F i le S iz e : in te ge r ) ;

第 八 章 使 用 FTP 控 件 - 图109第 八 章 使 用 FTP 控 件 - 图110第 八 章 使 用 FTP 控 件 - 图111第 八 章 使 用 FTP 控 件 - 图112第 八 章 使 用 FTP 控 件 - 图113这 个 函 数 其 实 很 少 用 到 用 于 预 先 分 配 一 些 空 间 用 来 存 放 文 件 F ile S iz e 参数 指 定 空 间 的 大 小 以 字 节 数 为 单 位 程 序 示 例 如 下

v o id _ fa s tc a ll T F o rm 1 ::B u tto n 1 C lic k ( T O b je c t * S e n d e r )

{

in t F ile H a n d le ;

if ( F ile H a n d le = o p e n (" C :\\W IN N T \\S o u th P a rk .b m p " ,O _ R DONL Y | O _ B INA R Y ) != - 1 ) N M F T P 1 -> A llo c a te ( file le n g th ( F ile H a n d le ) ) ;

}

C h an ge D ir 函 数

第 八 章 使 用 FTP 控 件 - 图114声 明 proc e dure C h a nge D ir ( D ir N a m e : s tr ing);

第 八 章 使 用 FTP 控 件 - 图115这 个 函 数 请 求 FT P 服 务 器 改 变 当 前 目 录 为 D ire c to ry 参 数 指 定 的 目 录

C o n n ec t 函 数

第 八 章 使 用 FTP 控 件 - 图116声 明 proc e dure C o n n e c t;

第 八 章 使 用 FTP 控 件 - 图117第 八 章 使 用 FTP 控 件 - 图118第 八 章 使 用 FTP 控 件 - 图119第 八 章 使 用 FTP 控 件 - 图120这 个 函 数 很 重 要 用 于 登 录 到 FT P 服 务 器 H o s t Po r t U s e r ID 和 Pa ss w o rd

第 八 章 使 用 FTP 控 件 - 图121特 性 必 须 预 先 已 设 置

D e le te 函 数

第 八 章 使 用 FTP 控 件 - 图122声 明 proc e dure D e le te ( F ile N a m e : s tr ing);

第 八 章 使 用 FTP 控 件 - 图123这 个 函 数 在 FT P 服 务 器 上 删 除 由 F ile N a m e 参 数 指 定 的 文 件

D is c o n n ec t 函 数

第 八 章 使 用 FTP 控 件 - 图124声 明 proc e dure D is c onne c t;

第 八 章 使 用 FTP 控 件 - 图125这 个 函 数 断 开 与 FT P 服 务 器 的 连 接

D o C o m m a n d 函 数

第 八 章 使 用 FTP 控 件 - 图126声 明 proc e dure D o C o m m a nd( C o m m a ndS tr : s tr ing);

第 八 章 使 用 FTP 控 件 - 图127第 八 章 使 用 FTP 控 件 - 图128第 八 章 使 用 FTP 控 件 - 图129这 个 函 数 用 于 在 FT P 服 务 器 上 执 行 一 条 命 令 ( 由 C o m m a ndS tr参 数 指 定 ) 调 用了 这 个 函 数 后 一 般 要 访 问 T ran s a ctio n R ep ly 或 R e ply N u m be r特 性 取 得 执 行 的结 果

D o w n loa d 函 数

第 八 章 使 用 FTP 控 件 - 图130声 明 p ro c e d u re D o w n lo ad ( R em o teF ile, L o c a l F ile: s tr in g ) ;

第 八 章 使 用 FTP 控 件 - 图131第 八 章 使 用 FTP 控 件 - 图132第 八 章 使 用 FTP 控 件 - 图133第 八 章 使 用 FTP 控 件 - 图134第 八 章 使 用 FTP 控 件 - 图135这 个 函 数 用 于 从 FT P 服 务 器 下 载 由 R e m o te F ile 参 数 指 定 的 文 件 然 后 在 本 地以 L o c a l F ile 参 数 指 定 的 名 称 保 存 如 果 L o c a l F ile 参 数 设 为 空 表 示 名 称 不 变程 序 示 例 如 下

v o id _ fa s tc a ll T F o rm 1 ::B u tto n 6 C lic k ( T O b je c t * S e n d e r )

{

NM F T P 1 -> M o d e ( M ODE _ IM AGE ) ;

N M F T P 1 -> D o w n lo a d (" file .z ip " , " c :\\d o w n lo a d \ file .z ip " ) ;

}

D o w n load R e s tore 函 数

第 八 章 使 用 FTP 控 件 - 图136声 明 proc e dure D o w n lo a d R e s tore ( R e m o te F ile , L o c a l F ile : s tr ing);

第 八 章 使 用 FTP 控 件 - 图137第 八 章 使 用 FTP 控 件 - 图138TN M F TP 控 件 支 持 断 点 续 传 这 个 函 数 能 够 接 着 上 次 中 断 的 地 方 继 续 下 载

L is t 函 数

第 八 章 使 用 FTP 控 件 - 图139声 明 proc e dure L is t;

第 八 章 使 用 FTP 控 件 - 图140第 八 章 使 用 FTP 控 件 - 图141第 八 章 使 用 FTP 控 件 - 图142这 个 函 数 用 于 返 回 FT P 服 务 器 中 当 前 目 录 下 的 文 件 列 表 列 表 中 的 每 一 项 将触 发 O n L is t I te m 事 件 程 序 示 例 如 下

v o id _ fa s tc a ll T F o rm 1 ::N M F T P 1 L is tIte m ( A n s i S tr in g L is tin g )

{

M e m o1-> L in e s -> A d d( L is t ing);

}

M a k e D ir ecto r y 函 数

第 八 章 使 用 FTP 控 件 - 图143声 明 proc e dure M a ke D ire c to r y ( D ire c tory N a m e : s tr ing);

第 八 章 使 用 FTP 控 件 - 图144第 八 章 使 用 FTP 控 件 - 图145这 个 函 数 在 FT P 服 务 器 上 创 建 一 个 目 录 目 录 名 由 D ire c to ry 参 数 指 定

M o d e 函 数

第 八 章 使 用 FTP 控 件 - 图146声 明 proc e dure M ode ( T he M ode : in te ge r ) ;

第 八 章 使 用 FTP 控 件 - 图147第 八 章 使 用 FTP 控 件 - 图148第 八 章 使 用 FTP 控 件 - 图149这 个 函 数 用 于 设 置 传 输 模 式 设 为 M ODE _ A S C I I 表 示 按 文 本 块 的 方 式 传 输设 为 M ODE _ IM A GE 表 示 按 一 个 字 节 一 个 字 节 地 传 输 ( 图 像 )

N lis t 函 数

第 八 章 使 用 FTP 控 件 - 图150声 明 proc e dure N lis t;

第 八 章 使 用 FTP 控 件 - 图151这 个 函 数 用 于 返 回 当 前 目 录 中 的 文 件 名 列 表 列 表 中 的 每 一 项 将 触 发 O n L is t

第 八 章 使 用 FTP 控 件 - 图152事 件

第 八 章 使 用 FTP 控 件 - 图153第 八 章 使 用 FTP 控 件 - 图154第 八 章 使 用 FTP 控 件 - 图155第 八 章 使 用 FTP 控 件 - 图156R e in itia liz e 函 数

声 明

proc e dure R e in it ia l iz e ;

如 果 您

要 以 另 一 个 用 户 名 或 口 令 登 录 到 FT P 服 务 器

就 调 用 这 个 函 数

这 个

函 数 将

向 FT P 服 务 器 发 出 重 新 初 始 化 的 请 求

R e m o v e D ir 函 数

第 八 章 使 用 FTP 控 件 - 图157声 明 proc e dure R e m o v e D ir ( D ire c to r y N a m e : s tr ing);

第 八 章 使 用 FTP 控 件 - 图158这 个 函 数 在 FT P 服 务 器 中 删 除 由 D ire c to ry 参 数 指 定 的 目 录

R e n a m e 函 数

第 八 章 使 用 FTP 控 件 - 图159声 明 proc e dure R e na m e ( F ile n a m e , F ile na m e 2 : s tr ing);

第 八 章 使 用 FTP 控 件 - 图160第 八 章 使 用 FTP 控 件 - 图161第 八 章 使 用 FTP 控 件 - 图162这 个 函 数 把 FT P 服 务 器 当 前 目 录 中 的 一 个 文 件 换 名 F ile n a m e 参 数 是 原 来 的名 称 F ile n a m e 2 参 数 是 新 的 名 称

U p loa d 函 数

第 八 章 使 用 FTP 控 件 - 图163声 明 proc e dure U p lo a d ( L oc a l F i le , R e m o te F i le : s tr ing);

第 八 章 使 用 FTP 控 件 - 图164第 八 章 使 用 FTP 控 件 - 图165第 八 章 使 用 FTP 控 件 - 图166第 八 章 使 用 FTP 控 件 - 图167这 个 函 数 用 于 把 本 地 磁 盘 上 由 L o c a lF ile 参 数 指 定 的 文 件 上 载 到 FT P 服 务 器 的当 前 目 录 并 且 以 R e m o te F ile 参 数 指 定 的 名 称 保 存 如 果 R e m o te F ile 参 数 指定 的 文 件 已 存 在 原 先 的 文 件 将 被 覆 盖

U p load A p p e n d 函 数

第 八 章 使 用 FTP 控 件 - 图168声 明 proc e dure U p lo a d A ppe nd( L o c a l F ile , R e m o te F i le : s tr ing);

第 八 章 使 用 FTP 控 件 - 图169第 八 章 使 用 FTP 控 件 - 图170第 八 章 使 用 FTP 控 件 - 图171第 八 章 使 用 FTP 控 件 - 图172这 个 函 数 与 U p lo a d 函 数 相 似 不 同 的 是 如 果 R e m o te F ile 参 数 指 定 的 文 件 已存 在 上 载 的 文 件 将 添 加 在 原 先 这 个 文 件 的 后 面

U p load R e s tore 函 数

第 八 章 使 用 FTP 控 件 - 图173声 明 proc e dure U p lo a d R e s tore ( L o c a l F ile , R e m o te F ile : s tr ing; P o s ition: in te g e r ) ;

第 八 章 使 用 FTP 控 件 - 图174第 八 章 使 用 FTP 控 件 - 图175第 八 章 使 用 FTP 控 件 - 图176第 八 章 使 用 FTP 控 件 - 图177第 八 章 使 用 FTP 控 件 - 图178TN M F TP 控 件 支 持 断 点 续 传 这 个 函 数 能 够 接 着 上 次 中 断 的 地 方 继 续 上 载 P o s itio n 参 数 指 定 从 什 么 地 方 开 始 续 传 假 设 已 传 输 了 80 个 字 节 P o s itio n 参数 就 设 为 81

3 F T P 控 件 的 事 件

第 八 章 使 用 FTP 控 件 - 图179第 八 章 使 用 FTP 控 件 - 图180第 八 章 使 用 FTP 控 件 - 图181第 八 章 使 用 FTP 控 件 - 图182FT P 控 件 的 事 件 往 往 是 与 调 用 某 个 方 法 相 关 联 的 如 果 事 件 被 触 发 通 常 表示 调 用 成 功 您 可 以 在 处 理 事 件 的 句 柄 中 得 到 FT P 服 务 器 的 返 回 信 息

O n A u th e n tic a tio n F a ile d 事 件

第 八 章 使 用 FTP 控 件 - 图183声 明 prope r ty O n A u th e n tic a t ionF a i le d : T H a nd le r E v e n t;

第 八 章 使 用 FTP 控 件 - 图184第 八 章 使 用 FTP 控 件 - 图185其 中 T H an d ler E v en t是 这 样 声 明 的

T H a nd le r E v e n t = P roc e dure ( va r ha nd le d : boo le a n ) o f O b je c t ;

第 八 章 使 用 FTP 控 件 - 图186第 八 章 使 用 FTP 控 件 - 图187第 八 章 使 用 FTP 控 件 - 图188第 八 章 使 用 FTP 控 件 - 图189第 八 章 使 用 FTP 控 件 - 图190第 八 章 使 用 FTP 控 件 - 图191第 八 章 使 用 FTP 控 件 - 图192登 录 到 FT P 服 务 器 时 如 果 没 有 事 先 给 出 用 户 名 和 口 令 或 者 用 户 名 和 口 令是 非 法 的 将 会 触 发 这 个 事 件 更 正 了 错 误 后 如 果 把 H a nd le d 参 数 设 为 T ru e 将 再 登 录 一 遍

O n C o n n ec t 事 件

第 八 章 使 用 FTP 控 件 - 图193声 明 prope r ty O n C onne c t: T N o tif y E v e n t;

第 八 章 使 用 FTP 控 件 - 图194当 客 户 已 经 成 功 地 登 录 到 FT P 服 务 器 时 将 触 发 这 个 事 件

O n C o n n ectio n F a ile d 事 件

第 八 章 使 用 FTP 控 件 - 图195声 明 prope r ty O n C onne c tionF a ile d: T N o tify E ve n t;

第 八 章 使 用 FTP 控 件 - 图196当 客 户 试 图 登 录 到 FT P 服 务 器 失 败 时 将 触 发 这 个 事 件

O n C o n n e c tio n R e q u ire d 事 件

第 八 章 使 用 FTP 控 件 - 图197声 明 prope r ty O n C onne c tionR e q u ire d : T H a nd le r E v e n t;

第 八 章 使 用 FTP 控 件 - 图198第 八 章 使 用 FTP 控 件 - 图199第 八 章 使 用 FTP 控 件 - 图200第 八 章 使 用 FTP 控 件 - 图201第 八 章 使 用 FTP 控 件 - 图202第 八 章 使 用 FTP 控 件 - 图203第 八 章 使 用 FTP 控 件 - 图204FT P 控 件 的 大 部 分 函 数 只 能 在 已 连 接 到 FT P 服 务 器 上 时 才 是 有 意 义 的 如 果调 用 函 数 时 没 有 连 接 到 FT P 服 务 器 将 触 发 这 个 事 件 在 处 理 这 个 事 件 的 句柄 中 您 应 当 调 用 C onne c t 函 数 连 接 FT P 服 务 器 然 后 把 H a nd le d 参 数 设 为T ru e 程 序 示 例 如 下

vo id _ fa s tc a l l T F orm 1 : : N M E c h o1C o n ne c t io nR e q u ire d ( bo ol & h a nd le d )

{

A n s i S tr ing B o xC a p t ion; A n s i S tr ing B o xM s g ;

B oxC a p t ion = " C o n n e c t io n R e q u ire d " ;

B oxM s g = " C o n n e c t io n R e q u ire d . C o nn e c t? " ;

if ( M e s s a ge B o x ( 0, & B ox M sg [ 1 ], & B ox C a p tio n [ 1 ], M B _Y E S N O + M B _ IC ONE XC L A M A T IO N ) = = ID Y E S )

{

ha n d le d = true ;

N M FT P1 -> C o n n e c t( ) ;

}

}

O n D is c o nne c t 事 件

第 八 章 使 用 FTP 控 件 - 图205声 明 prope r ty O n D is c onne c t: T N o tif y E v e n t;

第 八 章 使 用 FTP 控 件 - 图206第 八 章 使 用 FTP 控 件 - 图207第 八 章 使 用 FTP 控 件 - 图208第 八 章 使 用 FTP 控 件 - 图209第 八 章 使 用 FTP 控 件 - 图210第 八 章 使 用 FTP 控 件 - 图211当 客 户 断 开 与 FT P 服 务 器 的 连 接 时 将 触 发 这 个 事 件 注 意 在 处 理 这 个 事 件的 句 柄 中 如 果 需 要 访 问 VC L 元 件 的 话 最 好 先 判 断 VC L 元 件 是 否 存 在程 序 示 例 如 下

v o id _ fa s tc a ll T F o rm 1 ::N M F T P 1 D is c o n n e c t( T O b je c t * S e n d e r )

{

if ( S ta tu s B a r 1 != 0 )

S tatu s B a r 1 -> S im p le T e x t = " D is co n n ecte d " ;

}

O n E r ro r 事 件

第 八 章 使 用 FTP 控 件 - 图212声明 property O n E rror: T O nE rrorE vent;

第 八 章 使 用 FTP 控 件 - 图213第 八 章 使 用 FTP 控 件 - 图214其中 T O nE rrorE vent是这样声明的

第 八 章 使 用 FTP 控 件 - 图215第 八 章 使 用 FTP 控 件 - 图216第 八 章 使 用 FTP 控 件 - 图217第 八 章 使 用 FTP 控 件 - 图218T O nE r ro r E ve nt = proc e dure ( S e nde r : T C om p one n t; E r rno: w o rd ; E r rm s g : s tr ing ); 如 果 连 接 或 传 输 数 据 时 出 错 将 触 发 这 个 事 件 其 中 E rrn o 参 数 和 E rrm s g 参数 分 别 返 回 错 误 编 号 和 错 误 的 简 短 描 述 程 序 示 例 如 下

vo id _ fa s tc a l l T F orm 1 : : N M F T P 1 E r ro r ( T C o m pon e n t *S e n d e r , W O R D E r rno, A n s i S trin g E rrm s g )

{

S h o w M e s sa g e (" E rro r " + In t T o S tr(E rrn o )+ " : " + E rrm s g );

}

O n F a ilu re 事 件

第 八 章 使 用 FTP 控 件 - 图219声 明 prope r ty O n F a ilure : T F a i lu re E v e n t;

第 八 章 使 用 FTP 控 件 - 图220第 八 章 使 用 FTP 控 件 - 图221其 中 T F ailu re E v en t是 这 样 声 明 的

T F a ilu re E v e n t = P roc e dure ( va r ha n d le d : boo le a n ; T ra n s _ T y pe : T C m d T y p e ) of O b ject;

第 八 章 使 用 FTP 控 件 - 图222当 调 用 TN M F TP 控 件 的 某 个 函 数 失 败 时 将 触 发 这 个 事 件 Cm d T y p e 参 数 表

第 八 章 使 用 FTP 控 件 - 图223第 八 章 使 用 FTP 控 件 - 图224明 调 用 的 是 哪 个 函 数 程 序 示 例 如 下

vo id _ fa s tc a l l T F orm 1 : : N M F T P 1 F a i lu re ( b ool & h a n d le d , T C m d T y pe T ra n s _ T y pe )

{

s w i tc h ( T ra n s _T y p e ) {

c a s e c m dC ha nge D ir : S ta tus B a r 1 -> S im p le T e xt = " C ha ng e D ir fa i lu re " ; bre a k; cas e c m d M a k eD ir : S tatu s B a r 1 -> S im p le T e x t = " M ak eD ir fa i lu re " ; b re a k ;

cas e c m d D e lete: S tatu s B a r 1 -> S im p le T e x t = " D elete fa i lu re " ; b re a k ;

d e fa u lt: S h o w M e s sa g e (" U n re c o g n iz e d c o m m a n d fa ile d ." ) ; b re a k ;

}

}

O n H o s t R e s o lv e d 事 件

第 八 章 使 用 FTP 控 件 - 图225声 明 prope r ty O n H o s t R e s o lv e d : T O nH os t R e s o lve d;

第 八 章 使 用 FTP 控 件 - 图226第 八 章 使 用 FTP 控 件 - 图227第 八 章 使 用 FTP 控 件 - 图228当 FT P 服 务 器 的 主 机 名 已 找 到 ( 域 名 解 析 ) 就 触 发 这 个 事 件 如 果 解 析 没 有 成功 将 触 发 O n Inva lidH os t事 件

O n I n v a lid H o s t 事 件

第 八 章 使 用 FTP 控 件 - 图229声 明 prope r ty O n Inva l idH os t: T H a nd le r E v e n t;

第 八 章 使 用 FTP 控 件 - 图230第 八 章 使 用 FTP 控 件 - 图231当 H o s t特 性 所 指 定 的 主 机 名 是 非 法 的 就 触 发 这 个 事 件

O n L ist Ite m 事 件

第 八 章 使 用 FTP 控 件 - 图232声 明 p ro p e r ty O n L is t I te m : T N M L is tIte m ;

第 八 章 使 用 FTP 控 件 - 图233第 八 章 使 用 FTP 控 件 - 图234其 中 T N M L is t Ite m 是 这 样 声 明 的

T N M L is t I te m = P roc e dure ( L is tin g : s tr ing) of O b je c t;

第 八 章 使 用 FTP 控 件 - 图235第 八 章 使 用 FTP 控 件 - 图236当 程 序 调 用 L is t函 数 或 NL is t函 数 时 每 检 索 到 一 个 文 件 就 会 触 发 这 个 事 件

第 八 章 使 用 FTP 控 件 - 图237第 八 章 使 用 FTP 控 件 - 图238第 八 章 使 用 FTP 控 件 - 图239第 八 章 使 用 FTP 控 件 - 图240第 八 章 使 用 FTP 控 件 - 图241第 八 章 使 用 FTP 控 件 - 图242第 八 章 使 用 FTP 控 件 - 图243L is tin g 参 数 就 是 检 索 到 的 项 对 于 L is t函 数 来 说 L is tin g 参 数 中 包 括 文 件 名长 度 修 改 日 期 和 文 件 属 性 对 于 NL is t 函 数 来 说 L is tin g 参 数 中 只 包 括 文件 名

O n P a ck et R e c v d 事 件

第 八 章 使 用 FTP 控 件 - 图244声 明 prope r ty O n P a c k e t R e c vd: T N o tif y E ve n t ;

第 八 章 使 用 FTP 控 件 - 图245第 八 章 使 用 FTP 控 件 - 图246第 八 章 使 用 FTP 控 件 - 图247第 八 章 使 用 FTP 控 件 - 图248在 文 件 下 载 过 程 中 每 收 到 一 个 数 据 块 就 会 触 发 这 个 事 件 在 处 理 这 个 事件 的 句 柄 中 您 可 以 用 B y te s T o ta l特 性 和 B y te s R e c v d 特 性 显 示 下 载 的 进 度

O n P a ck et S e n t 事 件

第 八 章 使 用 FTP 控 件 - 图249声 明 prope r ty O n P a c k e t S e n t: T N o tify E ve n t;

第 八 章 使 用 FTP 控 件 - 图250第 八 章 使 用 FTP 控 件 - 图251第 八 章 使 用 FTP 控 件 - 图252第 八 章 使 用 FTP 控 件 - 图253在 文 件 上 载 过 程 中 每 发 出 一 个 数 据 块 就 会 触 发 这 个 事 件 在 处 理 这 个 事件 的 句 柄 中 您 可 以 用 B y te s T o ta l特 性 和 B y te s R e c v d 特 性 显 示 上 载 的 进 度

O nS ta tu s 事 件

第 八 章 使 用 FTP 控 件 - 图254声 明 prope r ty O n S ta tus : T O nS ta tu s ;

第 八 章 使 用 FTP 控 件 - 图255第 八 章 使 用 FTP 控 件 - 图256其 中 TO n S ta tu s 是 这 样 声 明 的

T O nS ta tu s = proc e dure ( S e nde r : T C o m pone n t; S ta tu s : s tr ing ) of O b je c t;

第 八 章 使 用 FTP 控 件 - 图257第 八 章 使 用 FTP 控 件 - 图258每 次 当 FT P 服 务 器 返 回 状 态 信 息 时 将 触 发 这 个 事 件 S ta tu s 参 数 就 是 当 前 的状 态

O nSuc c e s s 事 件

第 八 章 使 用 FTP 控 件 - 图259声 明 prope r ty O n S u c c e s s : T S uc c e s s E ve n t;

第 八 章 使 用 FTP 控 件 - 图260第 八 章 使 用 FTP 控 件 - 图261其 中 T S uc c e s s E ve n t是 这 样 声 明 的

T S uc c e s s E ve nt = P roc e dure ( T ra n s _ T y pe : T C m d T y pe ) of O b je c t;

第 八 章 使 用 FTP 控 件 - 图262第 八 章 使 用 FTP 控 件 - 图263当 某 个 命 令 被 成 功 执 行 后 将 触 发 这 个 事 件 T ra n s _ T y p e 参 数 就 是 被 执 行 的 命令

O n Tr an s a c tio n S tar t 事 件

第 八 章 使 用 FTP 控 件 - 图264声 明 prope r ty O n T ra n s a c tionS ta r t : T N o tif y E v e n t;

第 八 章 使 用 FTP 控 件 - 图265第 八 章 使 用 FTP 控 件 - 图266第 八 章 使 用 FTP 控 件 - 图267第 八 章 使 用 FTP 控 件 - 图268第 八 章 使 用 FTP 控 件 - 图269当 程 序 调 用 诸 如 L is t D o w n lo a d D o w n lo a d R e s to re U p lo a d U p lo a d U n iq u e

第 八 章 使 用 FTP 控 件 - 图270第 八 章 使 用 FTP 控 件 - 图271U p lo a d A ppe nd U p lo a d R e s to re 等 函 数 开 始 传 输 数 据 时 将 触 发 这 个 事 件

O n Tr an s a c tio n S to p 事 件

第 八 章 使 用 FTP 控 件 - 图272声 明 prope r ty O n T ra n s a c tionS to p : T N o tif y E ve n t ;

第 八 章 使 用 FTP 控 件 - 图273第 八 章 使 用 FTP 控 件 - 图274第 八 章 使 用 FTP 控 件 - 图275第 八 章 使 用 FTP 控 件 - 图276第 八 章 使 用 FTP 控 件 - 图277第 八 章 使 用 FTP 控 件 - 图278第 八 章 使 用 FTP 控 件 - 图279当 程 序 调 用 了 诸 如 L is t D o w n lo a d D o w n lo a d R e s to re U p lo a d U p lo a d U n iq u e U p lo a d A ppe nd U p lo a d R e s to re 等 函 数 并 且 数 据 已 传 输 完 毕 时 将 触 发 这 个 事件

O n U nSup po r te d F u n c tio n 事 件

第 八 章 使 用 FTP 控 件 - 图280声 明 prope r ty O n U n S upporte dF unc tion: T U ns upporte dE ve n t;

第 八 章 使 用 FTP 控 件 - 图281第 八 章 使 用 FTP 控 件 - 图282当 程 序 调 用 某 个 函 数 而 FT P 服 务 器 不 支 持 该 项 命 令 时 就 会 触 发 这 个 事 件