VC++的FTP客户端设计与开发(含源文件)(5)

2019-03-06 08:24

{

MessageBox.Show(\该文件不存在\信息提示\ } }

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 + \ Socket socketData = CreateDataSocket(); SendCommand(\ 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) {

第 17 页 共 21 页

}

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(\根目录了!\系统提示\ return; }

newpath=path.Substring(0,path.LastIndexOf(\

this.comboBox1.Text=newpath.Substring(0,newpath.LastIndexOf(\ } else {

if(path.LastIndexOf(\ {

第 18 页 共 21 页

} }

newpath=path.Substring(0,path.LastIndexOf(\ this.comboBox1.Text=newpath; } else {

newpath=path.Substring(0,path.LastIndexOf(\ 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=\

int i=Convert.ToInt32(inf.IniReadValue(\ //string serAdd=inf.IniReadValue(\ string ServerName= \

inf.IniWriteValue(ServerName,\ inf.IniWriteValue(ServerName,\

inf.IniWriteValue(ServerName,\ inf.IniWriteValue(ServerName,\ inf.IniWriteValue(ServerName,\ i=i+1;

inf.IniWriteValue(\ this.standm.sername(hostname); this.Close();

第 19 页 共 21 页

4.3.5 ftp传输过程加密实现

当你在FTP服务器上收发文件的时候,你面临两个风险。第一个风险是在上载文件的时候为文件加密。第二个风险是,这些文件在你等待接收方下载的时候将停留在FTP服务器上,这时你如何保证这些文件的安全。你的第二个选择(创建一个支持SSL的FTP服务器)能够让你的主机使用一个FTPS连接上载这些文件。这包括使用一个在FTP协议下面的SSL层加密控制和数据通道。一种替代FTPS的协议是安全文件传输协议(SFTP)。这个协议使用SSH文件传输协议加密从客户机到服务器的FTP连接。

然而,你遇到的FTPS和SFTP的问题是,虽然这些文件安全地传送到了你的服务器,但是,这些文件一旦上载,访问这个服务器的任何人都可以看到这些文件,因为这些文件没有加密。因此,我建议你采用第一个解决方案,就是让你的主机使用接收方的公共PGP密钥为文件加密。这个选择不仅能够让文件在传输过程中保持加密状态,而且在文件停留在服务器上的时候只有指定的接收方才能解密和阅读文件。然而,你的问题的最佳的解决方案是把PGP加密加密文件与一个安全的FTP连接结合在一起。因为即使你的PGP加密的文件是安全的,如果你的主机使用不加密的FTP向你的服务器上载文件,用来访问这台服务器的用户名和口令就都是以不加密的方式传送的。攻击者可能窃取这些信息并且利用这种信息访问这台FTP服务器并且上载恶意文件或者删除现有的文件

5 软件测试

5.1 测试前分析

本FTP软件测试,从详细设计来看,分4部分进行测试:首先必须连接到

某网络,在网络连接成功后,进行第一步测试连接测试,在输入IP地址和登录名和密码后能成功连接到主机;第二步对文件操作测试,能新建文件、删除文件等操作;第三步在于服务器连接成功后测试上传和下载操作,第四步检测文件在选择目录后能显示根据路径来显示此路径下所有文件和信息保存入INI文件。

5.2 测试的过程与分析

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

第 20 页 共 21 页

登录前

图4登录服务器前

登录后

图5登录服务器后

第二步测试在文件或文件夹操作,进行了新建文件夹,删除文件和文件夹。对文件夹的属性设置即修改是否读写,是否隐藏、是否存档。都能成功的进行操作。

第三步测试文件上传和下载功能,以下载11.jpg为例下载前本地主机没有该文件如图6,当下载成功后主机这边显示有11.jpg文件出来在本地主机上如图7。

第 21 页 共 21 页


VC++的FTP客户端设计与开发(含源文件)(5).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:独立光伏发电系统及其MPPT的研究

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: