ImageVerifierCode 换一换
格式:DOCX , 页数:23 ,大小:344.46KB ,
资源ID:29222404      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/29222404.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(网络程序课程设计FTP客户端.docx)为本站会员(b****8)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

网络程序课程设计FTP客户端.docx

1、网络程序课程设计FTP客户端河南理工大学万方科技学院课程设计报告2015 2016学年第二学期课程名称 计算机网络 设计题目 使用.NET技术编写FTP客户端 姓 名 学 号 1516353004 专业班级 计科15升-1班 指导教师 李静 2016 年 06 月 23 日目 录1 课题任务及要求 11.1 课题任务及要求 12 组员任务分工 22.1 组员任务及分工 24 课题相关算法及实现步骤 44.1用户登录服务器,列表更新 44.2双击事件功能的实现 64.3登录失败获得服务器的响应信息 74.4删除指定文件及文件夹 84.5浏览上传文件 94.6上传文件 94.7下载文件 114.8

2、实现步骤 135 实现功能及操作简介 145.1连接服务器 145.2服务器响应信息 145.3浏览 145.4上传 155.5下载 155.6删除 165.7进入目录和返回上级目录 165.8退出 166 实验结果及分析 176.1用户登录结果 176.2服务器响应信息结果 176.3浏览结果 186.4上传结果 186.5下载结果 196.6删除结果 206.7进入目录及返回上级目录结果 216.8退出 217 心得体会 228 参考文献 231 课题任务及要求1.1 课题任务及要求课题:使用.NET技术编写FTP客户端设计要求:FTP客户端:(1)根据服务器的IP地址,用户名,密码登陆F

3、TP服务器。(2)客户端上显示服务器响应信息。(3)登陆成功后,客户端上显示服务器FTP目录及文件(目录和文件显示加以区别)。(4)用户双击目录后可以进入该目录中,也可以双击“返回上级目录”,返回到上层目录。(5)用户将本地文件上传至FTP服务器,以及采用多线程技术从服务器上下载文件。(6)实现删除服务器上指定的文件和文件夹。课题组人数:限1人。2 组员任务分工2.1 组员任务及分工刘凡 11303090122 任务分工:完成程序源码,编写实验文档和PPT3 相关知识简介3.1 FTPFTP是File Transfer Protocol(文件传输协议)的英文简称,而中文简称为“文传协议”。用于

4、Internet上的控制文件的双向传输。同时,它也是一个应用程序(Application)。基于不同的操作系统有不同的FTP应用程序,而所有这些应用程序都遵守同一种协议以传输文件。在FTP的使用当中,用户经常遇到两个概念:下载(Download)和上传(Upload)。下载文件就是从远程主机拷贝文件至自己的计算机上;上传文件就是将文件从自己的计算机中拷贝至远程主机上。用Internet语言来说,用户可通过客户机程序向(从)远程主机上传(下载)文件。3.2 Serv-U软件Serv-U 是当前众多的FTP服务器软件之一。通过使用Serv-U,用户能够将任何一台PC 设置成一个FTP 服务器,这样

5、,用户或其他使用者就能够使用FTP 协议,通过在同一网络上的任何一台PC与FTP 服务器连接,进行文件或目录的复制,移动,创建,和删除等。这里提到的FTP 协议是专门被用来规定计算机之间进行文件传输的标准和规则,正是因为有了像FTP 这样的专门协议,才使得人们能够通过不同类型的计算机,使用不同类型的操作系统,对不同类型的文件进行相互传递。3.4 相关FTP操作命令FtpWebRequest类用于实现文件传输协议(Ftp)客户端的操作,用该类的Create方法初始化新的WebRequest对象,然后用该类的Method属性指定当前请求的命令是什么,这个值定义在结构体WebRequestMetho

6、ds.ftp中,本次程序用到的命令有ListDirectoryDetails获取文件详细列表、DeleteFile删除文件、RemoveDirectory删除目录、DownloadFile下载文件、UploadFile上传文件等。4 课题相关算法及实现步骤4.1用户登录服务器,列表更新 private void btnDenglu_Click(object sender, EventArgs e) FileList = ; connect(); public void connect() listBoxInfo.Items.Clear(); try ftpServerIp = txtIp.Te

7、xt; ftpUserID = txtUsername.Text; ftpPassword = txtPwd.Text; req = (FtpWebRequest)FtpWebRequest.Create(new Uri(ftp:/ + ftpServerIp + / +FileList); req.Credentials = new NetworkCredential(ftpUserID, ftpPassword); req.KeepAlive = false; req.Method = WebRequestMethods.Ftp.ListDirectoryDetails; req.UseB

8、inary = true; FtpWebResponse response = GetFtpResponse(req); listBoxInfo.Items.Add(服务器返回: + response.StatusDescription); StreamReader reader = new StreamReader(response.GetResponseStream();/ string s = reader.ReadToEnd(); string ftpDir = s.Split(Environment.NewLine.ToCharArray(), StringSplitOptions.

9、RemoveEmptyEntries); listBoxInfo.Items.AddRange(ftpDir); listBoxInfo.Items.Add(服务器返回: + response.StatusDescription); ftpFileBox.Items.Add(返回上级目录); for (int i = 0; i ftpDir.Length; i+) string fileinfo = ftpDiri.Split( ); string type = null; string filename = fileinfofileinfo.Length - 1; if (filename

10、= . | filename = .) continue; else if (fileinfo0.IndexOf(d) != -1) type = ; else type = ; ftpFileBox.Items.Add(type + + filename); reader.Close(); response.Close(); btnDenglu.Enabled = false; catch (Exception ex) MessageBox.Show(登陆失败!); MessageBox.Show(ex.ToString(); 4.2双击事件功能的实现 private void ftpFil

11、eBox_MouseDoubleClick(object sender, MouseEventArgs e) try String item = ftpFileBox.SelectedItem.ToString().Split( ); string type = item0; if (type.Equals() string file = item1; FileList += (file + /);/进入目录 ftp:/ ServerIp/ 目录名/ ftpFileBox.Items.Clear(); connect(); else if (ftpFileBox.SelectedItem.To

12、String() = 返回上级目录) FileList = ; ftpFileBox.Items.Clear(); connect(); catch (Exception ex) MessageBox.Show(ex.Message); 4.3登录失败获得服务器的响应信息 private FtpWebResponse GetFtpResponse(FtpWebRequest request) FtpWebResponse response = null; try response = (FtpWebResponse)request.GetResponse(); return response;

13、 catch (WebException err) listBoxInfo.Items.Add(出现异常,FTP返回状态: + err.Status.ToString(); FtpWebResponse e = (FtpWebResponse)err.Response; listBoxInfo.Items.Add(Status Code : + e.StatusCode); listBoxInfo.Items.Add(Status Description : + e.StatusDescription); return null; catch (Exception err) listBoxIn

14、fo.Items.Add(err.Message); return null; 4.4删除指定文件及文件夹 private void btnShanchu_Click(object sender, EventArgs e) String item = ftpFileBox.SelectedItem.ToString().Split( ); string type = item0; string file = FileList + item1; if (ftpFileBox.SelectedIndex -1) try if (type.Equals() req = (FtpWebRequest)

15、FtpWebRequest.Create(new Uri(ftp:/ + ftpServerIp + / + file); req.Credentials = new NetworkCredential(ftpUserID, ftpPassword); req.KeepAlive = false; req.UseBinary = true; req.Method = WebRequestMethods.Ftp.DeleteFile; FtpWebResponse response = (FtpWebResponse)req.GetResponse(); MessageBox.Show(删除文件

16、成功!); else req = (FtpWebRequest)FtpWebRequest.Create(new Uri(ftp:/ + ftpServerIp + / + file); req.Credentials = new NetworkCredential(ftpUserID, ftpPassword); req.KeepAlive = false; req.UseBinary = true; req.Method = WebRequestMethods.Ftp.RemoveDirectory; FtpWebResponse response = (FtpWebResponse)re

17、q.GetResponse(); MessageBox.Show(删除成功!); ftpFileBox.Items.Clear(); connect(); catch (Exception ex) MessageBox.Show(ex.Message); 4.5浏览上传文件 private void btnLiulan_Click(object sender, EventArgs e) if (btnDenglu.Enabled = true) MessageBox.Show(请?登?陆?FTP服 务?器!?); else openFileDialog1.ShowDialog(); txtSh

18、angchuan.Text = openFileDialog1.FileName; /获取文件路径和文件名 4.6上传文件 private void btnShangchuan_Click(object sender, EventArgs e) if (txtShangchuan.Text = ) MessageBox.Show(没?有瓺选?择?要癮上?传?的?文?件t!?); else string FileSites = txtShangchuan.Text; FileInfo fileInf = new FileInfo(FileSites); req = (FtpWebRequest)

19、FtpWebRequest.Create(new Uri(ftp:/ + ftpServerIp + / + fileInf.Name); req.Credentials = new NetworkCredential(ftpUserID, ftpPassword); req.KeepAlive = false; req.Method = WebRequestMethods.Ftp.UploadFile; req.UseBinary = true; byte buff = new byte1024;/1024为缓冲区大小 int ContentLen; /打开一个文件流上传文件 FileStr

20、eam fs = fileInf.OpenRead(); try Stream strm = req.GetRequestStream(); ContentLen = fs.Read(buff, 0, 1024); /流内容没有结束 while (ContentLen != 0) /把内容从file stream写入upload stream strm.Write(buff, 0, ContentLen); ContentLen = fs.Read(buff, 0, 1024); strm.Close();/关闭流 fs.Close(); txtShangchuan.Text = ; Mess

21、ageBox.Show(上传成功!); ftpFileBox.Items.Clear(); connect(); catch (Exception ex) MessageBox.Show(ex.ToString(); 4.7下载文件 private void btnXiazai_Click(object sender, EventArgs e) if (ftpFileBox.SelectedIndex -1) String item = ftpFileBox.SelectedItem.ToString().Split( ); string type = item0; string file =

22、 FileList + item1; if (type.Equals() try req = (FtpWebRequest)FtpWebRequest.Create(new Uri(ftp:/ + ftpServerIp + / + file); req.Credentials = new NetworkCredential(ftpUserID, ftpPassword); req.Method = WebRequestMethods.Ftp.DownloadFile; req.UseBinary = true; SaveFileDialog save = new SaveFileDialog

23、(); save.FileName = file; if (save.ShowDialog() = DialogResult.OK) FileStream outputStream = new FileStream(save.FileName, FileMode.Create); FtpWebResponse response = (FtpWebResponse)req.GetResponse(); Stream ftpStream = response.GetResponseStream(); int readCount; byte buffer = new byte1024; readCo

24、unt = ftpStream.Read(buffer, 0, 1024); while (readCount 0) outputStream.Write(buffer, 0, readCount); readCount = ftpStream.Read(buffer, 0, 1024); ftpStream.Close(); outputStream.Close(); response.Close(); MessageBox.Show(下载成功!); ftpFileBox.Items.Clear(); connect(); catch (Exception ex) MessageBox.Sh

25、ow(ex.ToString(); else MessageBox.Show(不能下载目录!); else MessageBox.Show(请选择文件进行下载!); 4.8实现步骤1.窗体UI布局设计。2.FTP服务器的搭建。3.连接FTP服务器,实现用户登录。4.双击事件。5.服务器响应。6.上传文件。7.下载文件。8.删除文件及目录。8.退出程序。5 实现功能及操作简介5.1连接服务器图5-1 连接服务器5.2服务器响应信息图5-2 服务器响应信息5.3浏览图5-3(a) 浏览图5-3(b) 浏览5.4上传图5-4 上传5.5下载图5-5 下载5.6删除图5-6 删除5.7进入目录和返回上

26、级目录图5-7 进入目录和返回上级目录5.8退出6 实验结果及分析6.1用户登录结果分析:通过连接FTP服务器,实现用户的登录图6-1 用户登录结果6.2服务器响应信息结果分析:通过FtpWebResponse获得服务器的响应信息图6-2(a) 服务器响应信息结果图6-2(b) 服务器相应信息结果6.3浏览结果分析:控件openFileDialog打开文件路径图6-3 浏览结果6.4上传结果分析:通过文件路径找到文件信息,用fs.stream文件流实现上传文件图6-4(a) 上传结果图6-4(b) 上传结果6.5下载结果分析:创建流outputStream输出文件图6-5(a) 下载结果图6-

27、5(b) 下载结果6.6删除结果分析:前缀type为”时删除文件;前缀type为”删除目录图6-6(a) 删除结果图6-6(b) 删除结果图6-6(c) 删除结果图6-6(d) 删除结果6.7进入目录及返回上级目录结果分析:当前缀type为”时进入列表,向ftpFileBox中添加项”返回上一层”,选中项为”返回上一层”时更新至根目录列表图6-7(a) 进入目录和返回上级目录结果图6-7(b) 进入目录和返回上级目录结果6.8退出7 心得体会此次我完成的课程设计题目是使用.NET技术编写FTP客户端。虽然程序与心里预期的结果有些差距,但是整体的功能基本实现了。虽然本学期主要学习的是C#网络编程

28、,但是仍然感觉到很累,课程设计是一个综合知识运用的过程,没有前面汗水的积累,就没有现在代码的信手拈来,所以说我们要想巩固知识的最好办法就是经常运用它。这次课程设计主要用的知识是FTP的相关知识。FTP程序开发由于是新知识,所以应用起来还是有一些难度的。首先要解决的就是数据传输的问题,在查阅相关资料后我知道了与FTP服务器进行数据传输的主要步骤包括:1.根据Uri创建FtpWebRequest对象2.获取与FTP服务器通信的凭据3.设置KeepAlive的值为false,请求完成后关闭与服务器的控制连接4.设置发送到FTP服务器的命令5.用FtpWebRequest封装FTP服务器对请求的响应6.传输二进制流和文件流。掌握了以上的步骤,这个程序实现起来就不难了。这次课程设计让我巩固掌握了FTP网络程序开发的相关知识,收获还是比较大的。更让我懂得了代码只有自己敲出来,才是你自己的,没有数量的积累是不会有质的飞跃的道理。今后我定会继续学习相关知识,写出更简便、好用的程序。8 参考文献1 何波、傅由甲.C#网络程序开发.2014年 北京 清华大学出版社2 明日科技.C#开发技术大全.2011年 北京 人民邮电出版社3 于国防、李剑.C#.NET网络程序设计实用教程.2013年 北京 清华大学出版社

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

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