C#毕业设计——基于C#+asp.net+FTP的FTP客户端设计与实现(毕业论文+程序源码)——FTP客户端

基于C#+asp.net+FTP的FTP客户端设计与实现(毕业论文+程序源码)

大家好,今天给大家介绍基于C#+asp.net+FTP的FTP客户端设计与实现,文章末尾附有本毕业设计的论文和源码下载地址哦。需要下载开题报告PPT模板及论文答辩PPT模板等的小伙伴,可以进入我的博客主页查看左侧最下面栏目中的自助下载方法哦

文章目录:

1、项目简介

  1. FTP客户端软件是在了解FTP工作原理后,利用C#语言来设计和开发的。FTP客户端分为连接模块、文件管理模块、文件传输模块和辅助管理模块。连接模块实现主机与服务器的连接的功能;文件管理模块实现新建文件、删除文件等功能;文件传输模块实现主机与服务器连接成功后上传和下载文件功能。辅助管理模块实现一些相关功能如:读写配置INI文件。该FTP客户端软件达到了使用方便的目标,希望开发软件的经验能为使用.NET设计开发Windows应用程序FTP客户端软件的初学者提供一些帮助。

2、资源详情

项目难度:中等难度
适用场景:相关题目的毕业设计
配套论文字数:9898个字24页
包含内容:整套源码+完整毕业论文


3、关键词:

.NET;C#;文件传输协议;客户端

4、毕设简介

提示:以下为毕业论文的简略介绍,项目源码及完整毕业论文下载地址见文末。

1 引言
1.1 课题背景
FTP是Internet上最早也是最广的应用,直到今天它仍是最重要和最基本的应用之一。用FTP将信息下载到本地是一件十分普遍的事。也随之出现了许多下载软件。尽管远程登录(Telnet)提供了访问远程文件的极好方法,但怎么也比不上使用自己计算机中的文件方便。如果用户想使用其它计算机上的文件,最理想的方法就是把它COPY到自己的计算机中,以便在本地计算机上操作。FTP正是完成这项工作的工具,你可以在任意一个经过文件传输协议(FTP)访问的公共有效的联机数据库或文档中找到你想要的任何东西。

1.2 国内外研究现状
省略

1.3 本课题研究的意义
进一步熟悉.net开发环境,掌握一定开发Windows应用程序技术。对提高自己的C#语言编程能力,熟悉ftp工作过程。制作一个界面友好,快速,稳定的下在软件。对信息的快速共享起着一定的作用。让用户能第一时间和别人共同分享信息资源。并希望能给FTP客户端编写初学者一些帮助。

1.4 本课题的研究方法
用Visual Studio.NET2003开发FTP客户端软件。根据现有的FTP软件进行设计与实现。综合以前所学的相关知识:包括计算机网络技术、TCP/IP详解、信息安全相关知识等;查阅Windows应用程序开发资料,学习C#语言,FTP通信过程。

2 技术背景
2.1 .NET技术简介
.NET技术是2000年微软公司推出的全新概念,它代表了一个集合、一个环境、一个编程的基础结构。其目的是将互联网本身作为构建新一代操作系统的基础,对互联网和操作系统的设计思想进行延伸。具体地说,.NET技术就是要在不同的网站之间建立起协定,促进网站之间的协同合作,实现信息的自动交流,从而帮助用户最大限度地获取信息、并对他们的数据进行简单、高效的管理。

2.2 Visual Studio.NET简介
Visual Studio .NET是Microsoft为实现其.NET技术而开发的一整套工具组件。它把开发功能强大、性能可靠的企业网络解决方案进行了简化。通过提供终端到终端的网络开发能力以及可伸缩、可复用的服务器端组件。Visual Studio .NET的主要作用在于:第一、提供加速开发过程的高效工具;第二、提供对各种各样的网络应用程序的快速设计能力,即程序员可以借助于Web Forms在开发基于窗体的桌面应用程序时所使用的技巧来创建跨平台、跨浏览器的网络应用程序;第三、利用XML和Web Services来简化分布式。

2.3 开发语言选择
C#是一种现代的面向对象的程序开发语言,它使得程序员能够在新的微软.NET平台上快速开发种类丰富的应用程序。.NET平台提供了大量的工具和服务,能够最大限度地发掘和使用计算及通信能力。
由于其一流的面向对象的设计,从构建组件形式的高层商业对象到构造系统级应用程序你都会发现C#将是最合适的。选择使用C#语言设计的组件能够用于Web服务,这样通过Internet可以被运行于任何操作系统上任何编程语言所调用。C#还能为C++程序员提供快捷的开发方式又没有丢掉C和C++的基本特征强大的控制能力,C#与C和C++有着很大程度上的相似性,熟悉C和C++的开发人员很快就能精通C#。

正如前文所述,C#是专门为.NET应用而开发出的语言,这从根本上保证了C#与.NET框架的完美结合。在.NET运行库的支持下,.NET框架的各种优点在C#中表现得淋漓尽致。让我们来看看C#的一些突出的特点,相信了解了这些特点以及本项目后你将会深深体会到“#”──“SHARP”的真正含义:简洁的语法;精心的面向对象设;与Web的紧密结合;完整的安全性与错误处理;版本处理技术;灵活性与兼容性。

2.4 FTP简介
FTP 是 TCP/IP 协议组中的协议之一,是英文File Transfer Protocol的缩写。该协议是Internet文件传送的基础,它由一系列规格说明文档组成,目标是提高文件的共享性,提供非直接使用远程计算机,使存储介质对用户透明和可靠高效地传送数据。简单的说,FTP就是完成两台计算机之间的拷贝,从远程计算机拷贝文件至自己的计算机上,称之为“下载(download)”文件。若将文件从自己计算机中拷贝至远程计算机上,则称之为“上载(upload)”文件。在TCP/IP协议中,FTP标准命令TCP端口号为21,Port方式数据端口为20。

从根本上说,FTP协议就是在网络中各种不同的计算机之间按照TCP/IP协议来传输文件。FTP协议采用客户机/服务器 (Client/Sever)模式,由FTP客户端程序和FTP服务器端程序组成。使用时,先启动FTP客户端程序与远程主机建立连接,然后向远程主机发出传输命令,远程主机在收到命令后就给予响应,并执行正确的命令。但是FTP有一个根本的限制,那就是,如果用户在某个主机上没有注册获得授权,即没有用户名和口令,就不能与该主机进行文件传输。但匿名FTP服务器除外,它能够使用户与远程主机建立连接并以匿名身份从远程主机上拷贝文件,而不必是该远程主机的注册用户。用户使用特殊的用户名“Anonymous”或“guest”就可有限制地访问远程主机上公开的文件。现在许多系统要求用户将Emai1地址作为口令,以便更好地对访问者进行跟踪。出于安全的目的,大部分匿名FTP主机一般只允许远程用户下载(download)文件,而不允许上载(upload)文件。也就是说,用户只能从匿名FTP主机拷贝其需要的文件而不能把文件拷贝到匿名FTP主机。另外,匿名FTP主机还采用了其他一些保护措施以保护自己的文件不至于被用户修改和删除,并防止计算机病毒的侵入。匿名FTP一直是Internet上获取信息资源的最主要方式,在Internet成千上万的匿名FTP主机中存储着无以计数的文件,这些文件包含了各种各样的信息、数据和软件。人们只要知道特定信息资源的主机地址,就可以用匿名FTP登录。

2.5 FTP工作模式
FTP支持两种模式,一种方式叫做Standard(也就是 PORT方式,主动方式),一种是Passive(也就是PASV,被动方式)。Standard模式FTP的客户端发送PORT命令到FTP服务器。Passive模式FTP的客户端发送PASV命令到FTP Server。

1.主动方式的FTP工作过程:Port模式FTP客户端首先和FTP服务器的TCP 21端口建立连接,通过这个通道发送命令,客户端需要接收数据的时候在这个通道上发送PORT命令。PORT命令包含了客户端用什么端口接收数据。在传送数据的时候,服务器端通过自己的TCP20端口连接至客户端的指定端口发送数据。FTP server必须和客户端建立一个新的连接用来传送数据。

针对FTP服务器前面的防火墙来说,必须允许以下通讯才能支持主动方式FTP:
1).任何端口到FTP服务器的21端口(客户端初始化的连接SC)。
2).FTP服务器的21端口到大于1023的端口(服务器响应客户端的控制端口SC)。
3).FTP服务器的20端口到大于1023的端口(服务器端初始化数据连接到客户端的数据端口SC)。
4).大于1023端口到FTP服务器的20端口(客户端发送ACK响应到服务器的数据端口SC)。

连接过程如下图1:
在这里插入图片描述

图1 FTP主动模式连接过程图
在第1步中,客户端的命令端口与FTP服务器的命令端口建立连接,并发送命令“PORT 1027”。然后在第2步中,FTP服务器给客户端的命令端口返回一个"ACK"。在第3步中,FTP服务器发起一个从它自己的数据端口(20)到客户端先前指定的数据端口(1027)的连接,最后客户端在第4步中给服务器端回一个"ACK"。

主动方式FTP的主要问题实际上在于客户端。FTP的客户端并没有实际建立一个到服务器数据端口的连接,它只是简单的告诉服务器自己监听的端口号,服务器再回来连接客户端这个指定的端口。对于客户端的防火墙来说,这是从外部系统建立到内部客户端的连接,这是通常会被阻塞的。

2.被动方式的FTP是这样的:在被动方式FTP中,命令连接和数据连接都由客户端,这样就可以解决从服务器到客户端的数据端口的进入方向连接被防火墙过滤掉的问题。当开启一个FTP连接时,客户端打开两个任意的非特权本地端口(N>1024和N+1)。第一个端口连接服务器的21端口,但与主动方式的FTP不同,客户端不会提交PORT命令并允许服务器来回连它的数据端口,而是提交PASV命令。这样做的结果是服务器会开启一个任意的非特权端口(P>1024),并发送PORT P命令给客户端。然后客户端发起从本地端口N+1到服务器的端口P的连接用来传送数据。

对于服务器端的防火墙来说,必须允许下面的通讯才能支持被动方式的FTP:
1).从任何端口到服务器的21端口(客户端初始化的连接SC)。
2).服务器的21端口到任何大于1023的端口(服务器响应到客户端的控制端口的连接SC)。
3).从任何端口到服务器的大于1023端口(入;客户端初始化数据连接到服务器指定的任意端口SC)。
4).服务器的大于1023端口到远程的大于1023的端口(出;服务器发送ACK响应和数据到客户端的数据端口SC)。
被动方式的FTP连接过程如下图2:
在这里插入图片描述

图2 FTP主动模式连接过程图
在第1步中,客户端的命令端口与服务器的命令端口建立连接,并发送命令“PASV”。然后在第2步中,服务器返回命令"PORT 2024",告诉客户端(服务器)用哪个端口侦听数据连接。在第3步中,客户端初始化一个从自己的数据端口到服务器端指定的数据端口的数据连接。最后服务器在第4步中给客户端的数据端口返回一个"ACK"响应。

被动方式的FTP解决了客户端的许多问题,但同时给服务器端带来了更多的问题。最大的问题是需要允许从任意远程终端到服务器高位端口的连接。幸运的是,许多FTP守护程序,包括流行的WU-FTPD允许管理员指定FTP服务器使用的端口范围。

第二个问题是客户端有的支持被动模式,有的不支持被动模式,必须考虑如何能支持这些客户端,以及为他们提供解决办法。例如,Solaris提供的FTP命令行工具就不支持被动模式,需要第三方的FTP客户端,比如ncftp。

随着WWW的广泛流行,许多人习惯用web浏览器作为FTP客户端。大多数浏览器只在访问ftp://这样的URL时才支持被动模式。这到底是好还是坏取决于服务器和防火墙的配置。

很多防火墙在设置的时候都是不允许接受外部发起的连接的,所以许多位于防火墙后或内网的FTP服务器不支持PASV模式,因为客户端无法穿过防火墙打开FTP服务器的高端端口;而许多内网的客户端不能用PORT模式登录FTP服务器,因为从服务器的TCP20无法和内部网络的客户端建立一个新的连接,造成无法工作。

下面是主动与被动FTP优缺点的简要总结:
主动FTP对FTP服务器的管理有利,但对客户端的管理不利。因为FTP服务器企图与客户端的高位随机端口建立连接,而这个端口很有可能被客户端的防火墙阻塞掉。被动FTP对FTP客户端的管理有利,但对服务器端的管理不利。因为客户端要与服务器建立两个连接,其中一个连到一个高位随机端口,而这个端口很有可能被服务器端的防火墙阻塞掉。

FTP服务器的管理员需要他们的服务器有最多的客户连接,那么必须得支持被动FTP。我们可以通过为FTP服务器指定一个有限的端口范围来减小服务器高位端口的暴露。这样,不在这个范围的任何端口会被服务器的防火墙阻塞。虽然这没有消除所有针对服务器的危险,但它大大减少了危险。

3 FTP软件需求分析
3.1 需要完成目标
本系统的开发要求采用C/S结构,选用所熟悉的开发工具及开发环境进行本系统的设计与开发。

设计开发一个多功能FTP软件,本设计要求实现部分功能——站点的连接、文件的上传与下载、文件的重命名、及站点连接功能;能实现站点的添加与管理;能实现相关个人的设置保存(比如站点名及用户登录口令等)。

本毕业设计要求提供能实现文件传输及站点连接等功能的软件,要求软件具有操作简便、界面友好等特性;形成一个真正实用的、功能完善的FTP软件。

3.2 功能需求
从用户的角度来分析本软件应具有以下功能:主机的连接包括直接连接和连接,直接连接主要是针对偶尔一次登录的主机,连接是针对常用的主机需要记录多个登录信息;对常用的主机地址及基本配置信息需要进行保存;文件能上传和下载,判断文件名是否重复进行询问是否覆盖,在断电的情况下能对文件进行断点续传,传输时进度显示(获取文件大小和传输速率估计完成时间);通过该软件能新建文件夹,文件名的修改,文件的删除;能搜索文件名为指定的文件;界面需要友好,简洁。

3.3 环境需求
操作系统:Windows XP(or Windows 2000Advance Server)
网络服务器:FTP
开发平台:Visual Studio .NET 2003

4 FTP软件详细设计与实现
4.1 软件总体分析与设计
根据需求分析,按照系统开发的基本观点对功能进行分解,从功能上可对模块作如下划分:
1.连接管理模块:主要完成主机与服务器之间的连接与关闭操作。
2.文件管理模块:主要完成文件的显示、新建文件、删除文件等。
3.文件传输模块:主要完成主机与服务器连接成功以后文件的上传与下载。
4.辅助功能模块:主要是保存一些登录信息和一些简单的配置信息。

4.2 各模块具体设计
4.2.1 连接管理设计
该Ftp客户端工具用一个Winsocket连接上Ftp服务器,然后向其发送命令。在这个过程中,我们依靠发送——响应的机制。即发送Ftp命令——接收返回的响应信息——分析该信息——执行相关操作——发送下一条命令。在一般意义上,有一个socket用来连接Ftp服务器的相关端口(如默认的21),它负责Ftp命令的发送和接收返回的响应信息。一些操作如“进入目录”、“删除文件”,依靠这个socket发送一条命令就可完成了。

1.客户端与服务器连接
FTP是建立在TCP之上的连接,端口号使用21。若客户端与服务器之间成功连接,服务器将返回字符串,如:220 GMS (Version 5.0)。
前三个字符220表示客户端与服务器成功连接,后面的字符会因服务器的不同而不同,但我们只关心前三个字符。

2.用户名和密码认证
客户端发送用户名给服务器,如:USER he,如果服务器找到用户名he,将返回字符串,如:331 User name okay, need password。
接着客户端应发送密码给服务器,如:PASS 123,密码正确,返回如:230 User logged in, proceed,如果用户名或密码认证没有通过,返回如:530 Not logged in。
用户名也可以使用匿名,如:USER anonymous,返回如:331 Anonymous access allowed, send identity (e-mail name) as password。

3.应答码及其含义
110:重新启动标记应答。在这种情况下文本是确定的,它必须是:MARK yyyy=mmmm其中yyyy是用户进程标记,mmmm是服务器标记。
120:服务在nnn分钟内准备好。
125:数据连接已打开,准备传送。
150:文件状态良好,打开数据连接。
200:命令成功。
202:命令未实现。
211:系统状态或系统帮助响应。
212:目录状态。
213:文件状态。
214:帮助信息,信息仅对人类用户有用。
215:名字系统类型。
220:对新用户服务准备好。
221:服务关闭控制连接,可以退出登录。
225:数据连接打开,无传输正在进行。
226:关闭数据连接,请求的文件操作成功。
227:进入被动模式。
230:用户登录。
250:请求的文件操作完成。
257:创建“PATHNAME”。
331:用户名正确,需要口令。
332:登录时需要账户信息。
350:请求的文件操作需要进一步命令。
421:不能提供服务,关闭控制连接。
425:不能打开数据连接。
426:关闭连接,中止传输。
450:请求的文件操作未执行。
451:中止请求的操作:有本地错误。
452:未执行请求的操作:系统存储空间不足。
500:格式错误,命令不可识别。
501:参数语法错误。
502:命令未实现。
503:命令顺序错误。
504:此参数下的命令功能未实现。
530:未登录。
532:存储文件需要账户信息。
550:未执行请求的操作。
551:请求操作中止:页类型未知。
552:请求的文件操作中止,存储分配溢出。
553:未执行请求的操作:文件名不合法。

4.2.2 文件管理设计
文件管理具有文件的主要是新建文件夹、删除文件,使用DirectoryInfo类的Delete()方法和CreateDirectory()方法来实现。文件属性的设置包括:是否只读、是否隐藏、是否归档,用File类和Directory类来完成对文件和文件夹的属性设置。

4.2.3 文件传输设计
FTP协议用两个连接来达到客户机与服务器之间交换数据的目的如图3。先建立第一个连接——控制连接,它用于传送命令和响应。在建立第二个连接——数据连接,用于数据传输。FTP提供了两种方式来建立数据连接,一种用PORT命令,一种用PASV命令。我们使用后者。客户端发送PASV命令给服务器,服务器返回IP地址和端口号,用来提供给客户端进行数据连接。如:227 Entering Passive Mode (10,175,125,49,9,17)括号里6个数字中前4个数字表示IP地址10.175.125.49,后2个数字表示端口号,这2个数字按如下公式计算端口号:9*256+17=2321这样,客户端就可用IP地址10.175.125.49和端口号2321连接服务器,建立数据连接。
在这里插入图片描述

图3 文件传输中的处理过程

4.2.4 辅助功能设计
根据需求功能需要完成文件的上传及下载必须要完成一些相关的辅助功能:
1.获取本地主机的系统驱动器信息功能,需要在项目引用中添加COM标签中的Microsoft Scripting Runtime组件,来获取系统驱动器信息。
2.目录选择功能:在目录输入框中可以根据目录来显示所选定的文件夹下所有文件及文件夹信息,信息包括文件路径、文件创建日期、文件大小,利用GetFileSystemEntries()方法来完成。
3.信息保存功能:信息的保存利用读写INI文件来实现,INI文件读写操作由调用系统API函数来完成。具体调用WritePrivateProfileString()方法实现写入操作,用GetPrivateProfileString()方法实现读操作。

4.3 模块的程序实现
4.3.1 连接管理的程序实现
在用户打开软件后进入主窗体(MFFTP.cs),在连接服务器输入框中输入IP地址、用户名及密码后。先发送IP地址和端口号到服务器,然后对其应答分析,如果应答码为220表示对新用户服务准备好,继续发送用户名返回应答码331表示用户名正确需要口令。最后发送密码直到返回应答码230表示用户登录成功。其主要代码程序如下:

public void Connect()
{
	socketControl = new Socket(AddressFamily.InterNetwork,SocketType.Stream,ProtocolType.Tcp);
	IPEndPoint ep = new IPEndPoint(IPAddress.Parse(RemoteHost), strRemotePort);
	// 链接
	try
	{
		socketControl.Connect(ep);
	}
	catch(Exception)
	{
		throw new IOException("Couldn't connect to remote server");
	}
	// 获取应答码
	ReadReply();
	if(iReplyCode != 220)
	{
		DisConnect();
		throw new IOException(strReply.Substring(4));
	}
	// 登录
	SendCommand("USER "+strRemoteUser);
	if( !(iReplyCode == 331 || iReplyCode == 230) )
	{
		CloseSocketConnect();//关闭连接
		throw new IOException(strReply.Substring(4));
	}
	if( iReplyCode != 230 )
	{
		SendCommand("PASS "+strRemotePass);
		if( !(iReplyCode == 230 || iReplyCode == 202) )
		{
			CloseSocketConnect();//关闭连接
			throw new IOException(strReply.Substring(4));
		}
	}
	bConnected = true;
	// 切换到目录
	ChDir(strRemotePath);
}

4.3.2 文件管理的程序实现
对文件的管理有新建、删除、及属性设置。这里只对文件夹的删除操作做介绍,先实例化DirectoryInfo类并传入参数path,然后判断是文件还是文件夹用Delete()方法来删除文件。其主要代码程序如下:

private void MyDeleteFile(string path)
{//删除本地文件
	try
	{
		if(path==null)
			return;
		DirectoryInfo MyDir=new DirectoryInfo(path);
		if(MessageBox.Show("是否删除文件夹:"+path+"及其所有内容?","提示信息",MessageBoxButtons.YesNo,MessageBoxIcon.Question)==DialogResult.Yes)
		{
			MyDir.Delete(true);
    
		}
		else if(MessageBox.Show("是否删除文件:"+path+"及其所有内容?","提示信息",MessageBoxButtons.YesNo,MessageBoxIcon.Question)==DialogResult.Yes)
		{
			FileInfo fi=new FileInfo(path);
			fi.Delete();
		}
	}
	catch
	{
		MessageBox.Show("该文件不存在","信息提示",MessageBoxButtons.OK,MessageBoxIcon.Information);
	}
}

4.3.3 文件传输的程序实现
先进行判断是否与主机连接成功,获取要下载的文件名、保存到本机的路径、保存到本机时的文件名。在进行设置传输模式:二进制Binary传输或ACSII传输,在创建数据连接发送PASV被动模式进行传输然后对应答命令进行判断。最后进行数据传输以流方式传输。其主要代码程序如下:

public void Get(string strRemoteFileName,string strFolder,string strLocalFileName)
		{
			if(!bConnected)
			{
				Connect();
			}
			SetTransferType(TransferType.Binary);
			if (strLocalFileName.Equals(""))
			{
				strLocalFileName = strRemoteFileName;
			}
			if(!File.Exists(strLocalFileName))
			{
				Stream st = File.Create(strLocalFileName);
				st.Close();
			}
			FileStream output = new 
				FileStream(strFolder + "\\" + strLocalFileName,FileMode.Create);
			Socket socketData = CreateDataSocket();
			SendCommand("RETR " + strRemoteFileName);
			if(!(iReplyCode == 150 || iReplyCode == 125
				|| iReplyCode == 226 || iReplyCode == 250))
			{
				throw new IOException(strReply.Substring(4));
			}
			while(true)
			{
				int iBytes = socketData.Receive(buffer, buffer.Length, 0);
				output.Write(buffer,0,iBytes);
				if(iBytes <= 0)
				{
					break;
				}
			}
			output.Close();
			if (socketData.Connected)
			{
				socketData.Close();
			}
			if(!(iReplyCode == 226 || iReplyCode == 250))
			{
				ReadReply();
				if(!(iReplyCode == 226 || iReplyCode == 250))
				{
					throw new IOException(strReply.Substring(4));
				}
			}
		}

4.3.4 辅助功能的程序实现
当需要返回上级目录时,先检查当前目录字符串是否小于3,如果小于了3则表示已经是跟目录了,不能在返回上级目录了。其他情况直接用Substring来去掉最后一个目录。具体办法是每次取字符串从0到最后一个“\”。然后把该字符串赋值给ComboBox。程序代码如下:其主要代码程序如下:

private void but_Fa_Click(object sender, System.EventArgs e)
		{//返回上级目录
			string path=this.comboBox1.Text;
			string newpath;
			if(path.EndsWith("\\"))
			{
				if(path.Length<=3)
				{
					MessageBox.Show("根目录了!","系统提示",MessageBoxButtons.OK,MessageBoxIcon.Information);
					return;
				}
				newpath=path.Substring(0,path.LastIndexOf("\\"));
				this.comboBox1.Text=newpath.Substring(0,newpath.LastIndexOf("\\"));
			}
			else
			{
				if(path.LastIndexOf("\\")!=2)
				{
					newpath=path.Substring(0,path.LastIndexOf("\\"));
					this.comboBox1.Text=newpath;
				}
				else
				{
					newpath=path.Substring(0,path.LastIndexOf("\\")+1);
					this.comboBox1.Text=newpath;
					return;
				}
			}
		}

当在第一次登录主机时,为方便以后在次登录该主机则需要保存其登录信息。先把所有的输入框中的值赋给有代表意思的字符串。如果主机别名为空则主机别名与主机地址相同。
然后通过IniWriteValue方法来写入mfftp.ini文件中,其主要代码程序如下:

private void but_Ok_Click(object sender, System.EventArgs e)
		{//添加登录主机信息
			string hostname=this.text_Name.Text.Trim();
			string hostip=this.text_SerIp.Text.Trim();
			string loginname=this.loginName.Text.Trim();
			string loginpwd=this.login_Pwd.Text.Trim();
			string mydir=this.text_add.Text.Trim();
			if(hostname=="")
			{
				hostname=hostip;
			}
			IniFile inf=new IniFile();
			inf.path=".\\mfftp.ini";	
			int i=Convert.ToInt32(inf.IniReadValue("MFFTP_Options","HostNum"));
			//string serAdd=inf.IniReadValue("MFFTP_OptionsHost0","HostIp");
			string ServerName= "MFFTP_OptionsHost"+i;
			inf.IniWriteValue(ServerName,"HostName",hostname);
			inf.IniWriteValue(ServerName,"HostIp",hostip);
			inf.IniWriteValue(ServerName,"LoginName",loginname);
			inf.IniWriteValue(ServerName,"LoginPwd",loginpwd);
			inf.IniWriteValue(ServerName,"MyDir",mydir);
			i=i+1;
			inf.IniWriteValue("MFFTP_Options","HostNum",i.ToString());
			this.standm.sername(hostname);
			this.Close();
		}	

5 软件测试
5.1 测试前分析
本FTP软件测试,从详细设计来看,分4部分进行测试:首先必须连接到某网络,在网络连接成功后,进行第一步测试连接测试,在输入IP地址和登录名和密码后能成功连接到主机;第二步对文件操作测试,能新建文件、删除文件等操作;第三步在于服务器连接成功后测试上传和下载操作,第四步检测文件在选择目录后能显示根据路径来显示此路径下所有文件和信息保存入INI文件。

5.2 测试的过程与分析
第一步测试的是连接操作。连接一般有两种情况,一种是连接他是用户经常用要访问的FTP服务器,需要进行保存登录信息的。另一种是不常访问只是偶尔访问一下的只需要当次连接的是快速连接。连接前如下图4,输入IP地址为10.0.0.7(IP为本机地址);以及用户名密码为“anonymous”,连接成功后如图5。
在这里插入图片描述

图4登录服务器前
在这里插入图片描述

图5登录服务器后
第二步测试在文件或文件夹操作,进行了新建文件夹,删除文件和文件夹。对文件夹的属性设置即修改是否读写,是否隐藏、是否存档。都能成功的进行操作。
第三步测试文件上传和下载功能,以下载11.jpg为例下载前本地主机没有该文件如图6,当下载成功后主机这边显示有11.jpg文件出来在本地主机上如图7。
在这里插入图片描述

图6下载前目录下所有文件
在这里插入图片描述

图7下载后目录下所有文件
第四步只要测试了对主机登录信息的保存,是否成功读写INI文件。都能成功的进行读写操作。

5.3 测试小结
通过以上的测试可以出来,该软件实现了服务器的连接操作。能完成新建文件、删除文件以及文件的上传和下载等操作。由于对断点续传过程用程序设计未能全部了解,所以未完成该功能。还有就是在获取系统驱动器时未能筛选掉软驱磁盘和光驱磁盘。希望如果有人继续开发能完成这里。

结 论
此次FTP软件的设计与开发,从其功能上讲没有任何新的功能。实现了FTP的基本功能。能获取系统驱动器信息,能根据路径来显示你文件夹信息。能在软件中对文件进行添加和删除操作,及文件的上传和下载操作。能将登录名和密码保存到INI文件中去。能根据别名读取INI,新建连接能写入INI文件中去,外观基本上算是比较美观。完成了基本的FTP软件功能。FTP下载软件开发不管是在国内外都已经了十分成熟的技术,功能都比较齐全和不错。但是此次毕业设计的对我的最大收获是了解了.NET开发Windows应用程序开发,对新的开发语言C#有了了解。对FTP工作过程也有了一定的了解。也可以给一些初学FTP客户端软件开发一些帮助。

参考文献
[1] TOM Archer[美].C#技术内幕[M].候晓霞,柴洪辉[译].北京:清华大学出版社,2002。
[2] 微软公司[美].MCAD/MCSD制胜宝典用Visual Basic.NET和Visual C#.NET开发Windows应用程序[M].郑宇红,徐泓[译].北京:清华大学出版社,2003。
[3] 吴财军.C#经典范例50讲[M].北京:北京希望电子出版社,2003。
[4] 罗斌.Visual C#.NET精彩编程实例集锦[M].北京:中国水利水电出版社,2005。
[5] W.Richard Stevens[美].TCP/IP详解卷1:协议[M].范建华,胥光辉,张涛[译].北京:机械工业出版社,2005。
[6] 李勇平,陈峰波.ASP.NET(C#)基础教程[M].北京:清华大学出版社,2006。
[7] Xin Chen[美].应用框架的设计与实现-.NET平台[M].温昱,靳向阳[译].北京:电子工业出版社,2005。

致 谢
省略


5、资源下载

本项目源码及完整论文如下,有需要的朋友可以点击进行下载。如果链接失效可点击下方卡片扫码自助下载。

序号毕业设计全套资源(点击下载)
本项目源码基于C#+asp.net+FTP的FTP客户端设计与实现(源码+文档)_C#_asp.net_FTP_FTP客户端.zip
  • 3
    点赞
  • 31
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

毕业设计方案专家

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值