FTP客户端的设计
FTP服务器的工作模式及流程

FTP服务器的⼯作模式及流程FTP协议FTP(File transfer Protocol)是⼀种在互联⽹中进⾏⽂件传输的协议,基于客户端/服务器模式,默认使⽤20、21号端⼝,其中端⼝20(数据端⼝)⽤于进⾏数据传输,端⼝21(命令端⼝)⽤于接受客户端发出的相关FTP命令与参数。
FTP服务器⼀般部署于内⽹中,具有容易搭建、⽅便管理的特点。
⽽且有些FTP客户端⼯具还可以⽀持⽂件的多点下载以及断点续传技术,因此FTP服务得到了⼴⼤⽤户的青睐。
Ftp有两种⼯作模式:主动模式(PORT):服务器主动向客户端发起连接请求.被动模式(PAVS):FTP服务器等待客户端发起连接请求(FTP的默认⼯作模式).Ftp协议需要⽤到两个TCP连接:命令连接:⽤来在FTP客户端与服务器之间传递命令。
数据连接:⽤来在服务器和客户端进⾏⽂件传输。
⽆论是主动模式还是被动模式,其要进⾏⽂件传输都必须依次建⽴两个连接,分别为命令连接与数据连接。
⽽主动模式与被动模式的差异主要体现在数据连接通道上。
命令连接:当FTP客户端需要登陆到FTP服务器上的时候,服务器与客户端需要进⾏⼀系列的⾝份验证过程,这个过程就叫做命令连接。
如在客户端向服务器发起连接请求的时候,客户端会随即的选择某个TCP端⼝来跟FTP服务器的21号端⼝进⾏连接,这主要是通过TCP三⽅握⼿来实现的。
当三⽅握⼿完成之后,客户端与服务器之间便建⽴了命令连接通道。
不过这个通道的⽤途是⾮常有限的,其主要⽤来传输FTP的相关指令。
如查看⽂件列表、删除⽂件等等,⽽不能够⽤来在客户端与服务端进⾏⽂件传输数据连接:在命令连接通道建⽴以后,如果想要在ftp服务器和客户端之间传输⽂件,则需要建⽴数据连接通道。
根据建⽴数据连接是由谁发起的可以分为主动模式(PORT)和被动模式(PAVS)主动模式:主动模式优点:服务端配置简单,利于服务器安全管理,服务器只需要开放21端⼝缺点:如果客户端开启了防⽕墙,或客户端处于内⽹(NAT⽹关之后),那么服务器对客户端端⼝发起的连接可能会失败被动模式:被动模式通常⽤在处于防⽕墙之后的FTP客户访问外界FTp服务器的情况,因为在这种情况下,防⽕墙通常配置为不允许外界访问防⽕墙之后主机,⽽只允许由防⽕墙之后的Ftp客户端发起的连接请求通过。
计算机网络课程设计题目

计算机网络课程设计一. 中小型千兆网吧组建内容及要求:用BOSON软件实现小规模网络的模拟。
熟悉对路由器和交换机的配置命令,调通网络,并通过实例深入理解网络基本工作原理及实现方法。
学会网络构建、日常维护以及管理的方法,使学生掌握在信息化社会建设过程中所必须具备的计算机网络组网和建设所需的基本知识与操作技能,网吧包含100-200台上网的计算机。
二.小型网络的组建通过对网络的具体规划和组建,掌握网络互连设备的使用及工作原理;掌握IP 地址的配置及数据传输过程和路由的选择。
具体要求如下:1.使用模拟仿真软件,构建一个小型网络。
要求使用路由器、交换机等网络互连设备。
根据设计要求,选择网络类型。
2.分配和配置IP地址,要求配置内部网络地址。
3.对交换机、路由器等进行配置。
4.通过使用模拟仿真软件,模拟局域网间的数据通信过程。
5.分析通信过程中出现的问题,并加以解决。
6. 写出课程设计报告:设计目的、设计内容、设计方案、拓扑图、设备选型、方案报价、子网划分等内容。
(1)企业网络工程(2)银行网络工程(3)医院网络工程(4)校园网网络工程(5)大型机场信息网络工程(6)邮电综合管理信息网(7)某航空公司网络系统建设(8)某市宽带信息网络(9)证券交易网络系统(10)学校以太网网络建设三.Ping程序的设计与实现设计的目的是使学生掌握网络层协议的原理及实现方法。
设计内容,在给定的Ping程序的基础上做如下功能扩充:●-h 显示帮助信息●-b 允许ping一个广播地址,只用于IPv4●-t 设置ttl值,只用于IPv4●-q 安静模式。
不显示每个收到的包的分析结果,只在结束时,显示汇总结果Ping命令的基本描述Ping的操作是向某些IP地址发送一个ICMP Echo消息,接着该节点返回一个ICMP Echo reply消息。
ICMP消息使用IP头作为基本控制。
IP头的格式如下0 1 2 30 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+|Version| IHL |Type of Service| Total Length |+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+| Identification |Flags| Fragment Offset |+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+| Time to Live | Protocol | Header Checksum |+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+| Source Address |+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+| Destination Address |+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+Version=4IHL Internet头长Type of Service = 0Total Length IP包的总长度Identification, Flags, Fragment Offset 用于IP包分段Time to Live IP包的存活时长Protocol ICMP = 1Addresses 发送Echo消息的源地址是发送Echo reply消息的目的地址,相反,发送Echo 消息的目的地址是发送Echo reply消息的源地址。
北京理工大学-计算机网络实践-FTP客户端实验报告

实验五 FTP客户端程序1.实验目的文件传送协议FTP是Internet中广泛使用的服务协议之一,FTP协议是客户/服务器之间进行文件传递的协议。
●理解FTP协议的工作原理●掌握FTP客户程序的编程方法●理解在FTP传输过程中建立的两个连接2.实验内容利用WinSock编程接口编写FTP客户程序,在用户界面中给出必要的FTP 服务器信息:FTP服务器的IP地址、用户名、口令等,通过FTP协议实现指定文件的上载和下载操作。
3.实验环境程序运行环境为以太网,采用TCP/IP协议栈,网络操作系统为Windows,具有Internet连接能力。
程序开发环境为vs2012。
4.实验步骤步骤1 需求分析FTP客户程序功能为:(1) FTP客户程序首先显示用户界面,可以指定FTP服务器的地址、用户名和口令等信息(2)通过FTP协议接收FTP服务器的当前目录列表,并显示本地和远程目录列表信息(3)可以实现本地和远程目录的切换(4)可以实现文件的上载和下载操作步骤2 FTP客户程序开发用Visual C++编写FTP客户程序,利用WinSock编程接口实现FTP协议通信。
FTP客户程序首先显示用户界面,使用户可以指定FTP服务器和用户、口令信息(可以采用匿名方式),点击连接按钮后,向FTP服务器的TCP 21号端口建立TCP连接,在控制连接上发送FTP命令,首先获得本地和远程系统的目录列表并显示,可以进行目录切换等操作,指定上、下载的文件建立数据连接进行文件传送。
步骤3 编译和执行程序将FTP客户程序编译、连接成执行程序,运行FTP客户程序。
填写校园网的FTP服务器IP和用户、口令信息,进行各种FTP操作(文件上载、下载)。
5.具体实现(1)数据结构分析定义FileItem结构来保存文件信息typedef struct FileItem{int nItem; // 在列表框中的索引BOOL bDir; // 判断是否为文件夹CString strFileName; // 文件名}FILEITEM;主对话框类完成FTP的大部分功能其中:ID_control成员变量:CListCtrl m_ctrlRemoteFiles; // IDC_LIST_REMOTE 映射的列表型变量CListCtrl m_ctrlLocalFiles; // IDC_LIST_LOCAL 映射的列表型变量CString m_strPassword; // IDC_PASSWORD 映射的CString型变量CString m_strServer; // IDC_SERVER 映射的CString型变量CString m_strUserName; // IDC_USER 映射的CString型变量其他添加功能所需成员变量:CInternetSession* m_pInetSession; // 会话对象CFtpConnection* m_pFtpConnection; // 连接对象CFtpFileFind* m_pRemoteFinder; // 远程查找文件对象CFileFind m_LocalFinder; // 本地查找文件对象CString m_strLocalParentRoot; // 本地文件目录的上上一层目录CString m_strRemoteParentRoot; // 远程文件目录的上上一层目录CArray<FILEITEM,FILEITEM&>m_arrLocalFiles; // 保存本地文件信息CArray<FILEITEM,FILEITEM&>m_arrRemoteFiles; // 保存远程文件信息 成员函数:/* 初始化程序 */BOOL CMyFtpDlg::OnInitDialog()/* 给列表控件CListCtrl增加标题头 */void CMyFtpDlg::AddHeaders(CListCtrl* pLstCtrl)/* 给列表框增加一条记录 */void CMyFtpDlg::AddItem(CListCtrl* pLstCtrl,int nIndex,BOOL bDir,CString strText)/* 响应“download”按钮 */void CMyFtpDlg::OnDownload()/* 响应“Upload”按钮 */void CMyFtpDlg::OnUpload()/* 下载单个文件 */void CMyFtpDlg::DownFile(FILEITEM fileItem)/* 上传单个文件 */void CMyFtpDlg::UpFile(FILEITEM fileItem)/* 连接ftp服务器 */void CMyFtpDlg::OnConnect()/* 获得指定目录下的所有文件,并在列表框中显示 */void CMyFtpDlg::BrowseDir(CString strDir,CListCtrl* pLstCtrl,CFileFind* pFinder,CArray<FILEITEM,FILEITEM&>* pFilesArr)/* 本地文件目录中向上一层 */void CMyFtpDlg::OnLocalUp()/* 远程文件目录中向上一层 */void CMyFtpDlg::OnRemoteUp()主要函数1.在OnInitDialog()函数中进行对话框、列表的初始化,并且设定本地文件目录的默认路径为C盘为根目录。
如何设置IIS、 FTP的设置是选主动模式还是被动模式

如何设置IIS、FTP的设置是选主动模式还是被动模式首选被动模式,因为主动模式server要连接client的端口,一般会被client的防火墙阻塞。
在win 2003 中配置被动模式被动模式 FTP 连接是有时称为到 " 服务器管理 ", 因为与之一瞬态端口用作数据连接的服务器端端口服务器响应客户端发出 pasv 命令后,。
由客户端, 数据连接命令发出后服务器连接到客户立即使用端口上面控制连接的客户端端口。
与端口范围 1024 - 65535 内默认模式 Passive - IIS FTP 中随机选择到响应。
要进一步限制这些巨大端口范围, 系统管理员可配置命名 PassivePortRange 元数据库属性关键字,此属性关键字仅存在于 IIS 6.0, for IIS 5.0 在 Windows 2000,系统管理员需要安装Service Pack 4,在系统注册表中 PassivePortRange 项中添加。
更改 PassivePortRange for IIS, 执行过程之一下面部分中所述。
用于 Windows Server 2003要启用直接编辑元数据库)1 . 打开 IIS Microsoft 管理控制台 (MMC)。
2 . 右击本地计算机节点。
3 . 选择属性。
4 请确保启用直接编辑元数据库复选框。
通过 ADSUTIL 脚本配置 PassivePortRange b)1 . 单击开始、运行,键入 cmd, 和然后确定。
2 . 键入 cd Inetpub\AdminScripts,然后按 Enter。
3 . 键入以下命令从命令提示符。
CSCRIPT.exe C:\Inetpub\AdminScripts\adsutil.vbs set/MSFTPSVC/PassivePortRange "5500-5515"4 重新启动 FTP 服务。
通过 ADSUTIL 脚本配置时您会看到以下输出:Microsoft (R) Windows Script Host 版本 5.6版权所有 (C) Microsoft Corporation 1996 - 2001。
基于ftp的网络编程课程设计

基于ftp的网络编程课程设计一、课程目标知识目标:1. 学生理解FTP(文件传输协议)的基本概念和工作原理;2. 学生掌握FTP客户端与服务器的建立、连接、数据传输和断开过程;3. 学生掌握基于FTP协议的网络编程基本方法;4. 学生了解网络编程中异常处理和资源管理的重要性。
技能目标:1. 学生能够运用所学知识,独立编写简单的FTP客户端和服务器程序;2. 学生能够通过实际操作,熟练使用网络编程工具和调试技巧;3. 学生能够分析并解决网络编程过程中遇到的问题。
情感态度价值观目标:1. 学生培养对网络编程的兴趣,激发学习主动性和探究精神;2. 学生树立正确的网络安全意识,遵循网络道德规范,尊重他人知识产权;3. 学生在团队协作中,培养沟通、交流和合作能力。
课程性质:本课程为高中信息技术课程,旨在帮助学生掌握网络编程的基本知识和技能,提高实践操作能力。
学生特点:高中学生具备一定的编程基础,对网络编程有一定的好奇心和求知欲,喜欢动手实践。
教学要求:结合学生特点和课程性质,注重理论与实践相结合,以学生为主体,充分调动学生的积极性和主动性,培养其解决问题和团队协作的能力。
通过本课程的学习,使学生能够达到上述课程目标,为后续相关课程打下坚实基础。
二、教学内容1.FTP基本概念:介绍FTP的定义、作用及其在网络通信中的应用。
- 理解FTP的工作原理,包括控制连接和数据连接。
- 学习FTP的命令集和响应码。
2.FTP客户端与服务器的建立与连接:- 掌握FTP客户端与服务器的通信过程。
- 学习如何使用编程语言实现FTP客户端与服务器的连接。
3.FTP数据传输:- 学习FTP上传和下载文件的方法。
- 掌握二进制和ASCII传输模式的区别及使用场景。
4.网络编程中的异常处理和资源管理:- 介绍网络编程中可能遇到的异常及其处理方法。
- 学习如何正确管理网络编程中的资源,如文件句柄、网络连接等。
5.基于FTP的网络编程实践:- 编写简单的FTP客户端和服务器程序,实现文件的上传和下载。
FTP介绍

最近一段时间,因为公司项目的需要,对HTTP协议以及FTP 协议都有所了解,并且在基于网络开放源代码基础上,能够完成项目的要求。
今天给大家分享下,怎样建立属于我们自己的FTP服务器以及FPT客户端,同时非常非常感谢这些开源软件及其作者为IT行业做出的贡献,最大程度上至少解放了我们这些IT码农。
且看正文。
本文主要内容:1、FTP服务端部署---- 基于Android中SwiFTP开源软件介绍;2、FTP客户端部署--- 基于ftp4j开源jar包的客户端开发;3、使用步骤--- 如何测试我们搭建的FTP可操作性。
本文所涉及到的知识、文档、源代码照旧会在文章末尾列出。
欢迎大家一起学习。
一、 FTP服务端部署SwiFTP开源软件是为Android系统开发,也就是说我们可以将其源代码嵌入到我们的项目中。
当然,对其进行一定改造还是必不可少的。
这儿只是从感官上对SwiFTP的运行效果图进行一下说面,以便帮助大家有初步认识:SwiFTP 资料信息:Google Download 介绍:/p/swiftp/downloads/listGitHub 介绍:https:///ppareit/swiftpAndroid版本SwiFTP截图界面其实很简单,但是从设计角度分析,SwiFTP框架系统还是值得我们研究的,当然如果你想改造成属于自己的FTP服务器(一般就是改改用户名、密码、PWD(起始工作目录))等,那更得花时间去钻研了。
二、 FTP客户端部署接下来,重点介绍我们的主角ftp4j开源jar包,该jar包就是开发我们FTP客户端核心了。
ftp4j官网地址:http://www.sauronsoftware.it/projects/ftp4j/。
对比与AndroidSDK而言,也就是ftp4jSDK了,一切的一切(文档、源代码、示例)都可以在官网查询。
想要了解的同学,至少得保证把首页给整明白吧。
1、ftp4j概要官网描述如下:The ftp4j libraryimplementsa Java full-features FTP client. With ftp4j embedded in yourapplication you can : FTP site (directory listing included), cre ate, delete, transfer files(upload and download) , browse the remoteFTP site (directory listing included), create, delete,rename and move remote directories and files.关于FTP连接主要有如下几种方式:The ftp4j library can connect the remote FTP server:·Througha direct TCP/IPconnection. 一般就是直接连接了。
VisualC++网络编程案例实战之FTP客户端

4.1.6 FTP常用命令
• 在实际编程中,有些复杂的操作,只是需要客 户端发送相关的指令到服务器执行即可。所以, 对于用户来说掌握常用的FTP命令是非常重要 的。下面列举了一些常用的FTP命令,如表4.3 所示。
表4.3 常用FTP命令及意义
FTP命令 LIST PWD RETR STOR STOU STRU MODE ABORT 意 义 发送当前工作目录下的文件名列表到客户端 显示服务器的当前工作目录名 从服务器下载一个文件 上传文本文件到服务器,如果文件存在会被覆盖 上传文本文件到服务器,但不会覆盖已经存在的文件 设置文件的结构 指定数据的传输模式 通知服务器关闭连接
第4章 FTP客户端
• 本章将带领大家编写一个简单的FTP客户端程 序,实现简单的功能:登录FTP服务器,处理 服务器上的文件,如上传、下载,最后安全退 出服务器。先弄清楚原理,然后我们再考虑怎 样去实现。
4.1 FTP工作原理
• FTP的工作原理跟TCP一样,客户端需要先与 服务器连接,等待服务器的应答,最后再建立 数据通道。所以,FTP浏览器在和服务器建立 连接时也需要经过“三次握手”的过程。这表 示客户端与服务器之间的连接是可靠、安全的, 这也为数据传输提供了可靠的保证。FTP的工 作原理如图4.1所示。
图 4.1 FTP工作原理图
4.1.1 FTP数据结构
• 进行FTP编程之前,用户首先需要知道FTP有哪些 数据结构。由于在某些主机上保存的文件是面向 字节的,某些是面向记录的。所以在FTP中,除 了有不同的数据类型以外,还有几种不同的文件 结构类型。这样做的目的是为了在不同的主机之 间传送文件时能够相互识别。 • 二进制结构:文件中没有内部结构,一般被看作 二进制流。 • 文件式结构:由许多记录组成的文件。 • 页面结构:由不同的索引页组成文件。 • 注意:一般情况下,如果没有使用FTP命令去 设置文件的结构,则默认的结构是文件式结构。
支持共享的Ftp客户端的设计

De in o ha es p o td Ft Cle sg fS r - u p r e p int LI Ge gS i Z AO in Hu ZHENG oLin N n - h H Ja - a Gu - a g
是 : 充 分 利 用 局 域 网 内部 或 局 域 网之 间 的 资 源 , 大 限 度 地 能 最
( tt yL bfrNo e S f r eh oo y e at n f o ue ce c n c n lg ,Naj gUnvri ,N ig2 0 9 ) SaeKe a vl ot eT cn lg ,D p rme t mp tr i eadTeh oo y o wa oC S n ni iest n y n 10 3
摘 要 本 文介 绍 了一种 新 型 F p客 户 端 的设 计 。 它 可 以充 分 利 用 本 地 网络 资 源 , t 实现 共 享 与 方便 快速 的文 件 下栽 。
这个客户端主要 适用于具有共 同的兴趣 并在 同一个局域 网 内或 者邻近 网络 内工作 的使 用者 , 比如某个研 究方向上的
sa c ie t n e r h d r c i .Th ss fwa eb s d o h P t c n l g n t e h o o y c nd wn o d fl ih rf o Ft ew— o i o t r a e n t eP2 e h o o y a d F p t c n lg a o l a i et e r m p s l e
e o o ohr er ln t h a AN o e dae t ew r t l a rv e isfr te erce t t r r rm te e i t e me f p ce a t s L r h jcn t ok I as cnpo i l hr e lns O t a n o d fe o o p i
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
下载
命令按钮button
IDC_UPLOAD
上传
命令按钮button
IDCANCLE
退出
列表框listbox
IDC_LIST_FILE
(sort不选)
3.定义控件的成员变量
按照表3.12,用类向导(Class Wizard)为对话框中的控件对象定义相应的成员变量。
}
5.为对话框中的控件对象添加事件响应函数
按照表3.13,用类向导(Class Wizard )为对话框中的控件对象添加事件响应函数。
表3.13对话框控件的事件响应函数
控件类型
对象标识ObjectID
消息Message
函数Member functions
命令按钮
IDOK
BN_CLICKED
OnQuery
{
//禁用用来输入的文本框控件
m_editFtp.EnableWindow(FALSE); //服务器域名输入文本框
m_editName.EnableWindow(FALSE); //登录用户名输入文本框
m_editPwd.EnableWindow(FALSE); //口令输入文本框
m_staFtp.EnableWindow(FALSE);
pConnection=NULL; //初始化
pFileFind=NULL;
首先输入服务器域名“localhost”,登录用户名和口令,然后点击查询按钮:
如图表示登陆成功后,查询到目录下的文件。
//查询以后,当用户在列表框中选择了一个文件时,执行此函数。
void CFtpDlg::OnSelchangeListFile()
m_staName.EnableWindow(FALSE);
m_staPwd.EnableWindow(FALSE);
//禁用查询和上传按钮
m_btnUpload.EnableWindow(FALSE); //上传按钮
m_btnQuery.EnableWindow(FALSE); //查询按钮
//激活下载按钮
客户端程序提示“上传成功!”
实验总结
在本次实验过程中,通过上机基本掌握了winlnet类的编程,学会使用MFC WinInet类编程程序;学会使用MFC类向导添加事件处理函数和成员变量。
指导教师意见
签名:年月日
实验仪器
VC++ 6.0
实验内容
1.使用MFC AppWizard创建应用程序框架
工程名是Ftp,应用程序的类型是基于对话框的,其它部分接受系统的默认设置就可以。应用程序包括两个类:
应用程序类:CFtpApp,对应的文件是Ftp.h和Ftp.cpp。
对话框类:CFtpDlg,对应的文件是FtpDlg.h和FtpDlg.cpp。
表3.12控件对象的成员变量
控件ID
Control IDs
变量名称
Member Variable Name
变量类别
Category
变量类型
Variable Type
IDC_STATIC_FTP
m_staFtp
Control
CStatic
IDC_STATIC_NAME
m_staName
Control
CStatic
{
CInternetSession* pSession; //定义会话对象指针变量
CFtpConnection* pConnection; //定义连接对象指针变量
CFtpFileFind* pFileFind; //定义文件查询对象指针变量
CString strFileName;
BOOL bContinue;
贵州大学实验报告
学院:计算机科学与技术专业:XXX班级:XXX
姓名
XXX
学号
XXX
实验组
实验时间
2015、5、11
指导教师
XXX
成绩
实验项目名称
FTP客户端的设计
实验目的
1.学会使用MFC WinInet类编程程序;
2.学会使用MFC类向导添加事件处理函数和成员变量。
实验要求
程序能实现基本的FTP客户端功能,能登陆FTP服务器,显示登录客户目录下的文件和目录名,能从该目录中选择下载服务器的文件,也能向服务器上传文件。
//当用户点击“上传”按钮时,执行此函数
void CFtpDlg::OnUpload()
{
//获得当前输入
UpdateData(TRUE);
//禁用用于输入的文本框控件
m_editFtp.EnableWindow(FALSE); //服务器域名输入文本框
m_editName.EnableWindow(FALSE); //登录客户名输入文本框
BOOL CFtpDlg:: Upload (CString strSName, CString strDName);
分别用于文件的下载和上传。
7.手工添加包含语句
在CFtpDlg类的FtpDlg.cpp文件中添加对于Afxinet.h的包含命令,来获得对于MFC WinInet类的支持。
8.添加事件函数和成员函数的代码
m_listFile
Control
CListBox
4.添加成员变量的初始化代码
在FtpDlg.cpp文件的OnInitDialog()函数中添加成员变量的初始化代码。对服务器名,登录用户名,登录口令的控件变量赋初值。
BOOL CFtpDlg::OnInitDialog()
{
................. //前面是MFC应用程序向导和类向导自动生成的代码
静态文本static text
IDC_STATIC_PWD
登录口令
静态文本static text
IDC_STATIC_FILE
目录文件列表
编辑框edit box
IDC_EDIT_FTP
编辑框edit box
IDC_EDIT_NAME
编辑框edit box
IDC_EDIT_PWD
命令按钮button
IDOK
2.为对话框添加控件
在程序的主对话框界面中按照图3-11添加相应的可视控件对象,并按照表3.11修改控件的属性。
表3.11对话框中的控件属性
控件类型
控件ID
Caption
静态文本static text
IDC_STATIC_FTP
服务器域名
静态文本static text
IDC_STATIC_NAME
用户登录名
m_editPwd.EnableWindow(FALSE); //口令输入文本框
m_staFtp.EnableWindow(FALSE);
m_staName.EnableWindow(FALSE);
m_staPwd.EnableWindow(FALSE);
点击“上传”按钮,在弹出的对话框中选择要上传的文件,然后点击“打开”:
实验数据
界面实现
编译源程序,通过后运行程序对程序的基本界面进行测试,结果图如下:
1查询并显示FTP服务器的当前目录内容
当用户输入了服务器名、登录用户名和口令后,点击‘查询’按钮,会产生BN_CLICKED事件,导致执行对应的函数OnQuery()。代码如下:
void CFtpDlg::OnQuery()
m_btnDownload.EnableWindow(TRUE);
}
//当用户点击“下载”按钮时,执行此函数
void CFtpDlg::OnDownload()
{
//获得当前输入
在查询完成后,在列表框中选择要下载的文件,点击“下载”按钮:
在弹出的对话框中选择下载位置,并重命名下载文件,点击保存。如下图,表示下载成功:
// TODO: Add extra initialization here
m_strFtp=_T(""); //初始化服务器域名
m_strName=_T(""); //初始化登录用户名
m_strPwd=_T(""); //初始化登录口令
UpdateData(FALSE); //更新界面
return TRUE; // return TRUE unless you set the focus to a control
m_strPwd
Value
CString
m_editPwd
Control
CEdit
IDOK
m_btnQuery
Control
CBotton
IDC_DOWNLOAD
m_btnDownload
Control
CBotton
IDC_UPLOAD
m_btnUpload
Control
CBotton
IDC_LIST_FILE
IDC_STATIC_PWD
m_staPwd
Control
CStatic
IDC_EDIT_FTP
m_strFtp
Value
CString
m_editFtp
Control
CEdit
IDC_EDIT_NAME
m_strName
Value
CString
m_editName
Control
CEdit
IDC_EDIT_PWD
命令按钮
IDC_DOWNLOAD
BN_CLICKED
OnDownload
命令按钮
IDC_UPLOAD
BN_CLICKED
OnUpload
列表框
IDC_LIST_FILE
LBN_SELCHANGE