网络程序课程设计FTP客户端_第1页
网络程序课程设计FTP客户端_第2页
网络程序课程设计FTP客户端_第3页
网络程序课程设计FTP客户端_第4页
网络程序课程设计FTP客户端_第5页
已阅读5页,还剩21页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、网络程序开发课程设计报告使用.NET技术编写FTP客户端学 院(系):计算机科学与工程学院专 业 : 网络工程指导老师: 傅由甲 学生姓名: 刘凡 学号:11303090122时间:从2016年1月11日到2016年1月15日网络程序开发课程设计 使用.NET技术编写FTP客户端目 录1 课题任务及要求11.1 课题任务及要求12 组员任务分工22.1 组员任务及分工24 课题相关算法及实现步骤44.1用户登录服务器,列表更新44.2双击事件功能的实现64.3登录失败获得服务器的响应信息74.4删除指定文件及文件夹84.5浏览上传文件94.6上传文件94.7下载文件114.8实现步骤135 实

2、现功能及操作简介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地址,用户名,密码登陆FTP服务器。(2)客户端上显示服务器响应信息。(3)登陆成功

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

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

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

6、结构体WebRequestMethods.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

7、(); try ftpServerIp = txtIp.Text; 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

8、= WebRequestMethods.Ftp.ListDirectoryDetails; req.UseBinary = true; FtpWebResponse response = GetFtpResponse(req); listBoxInfo.Items.Add("服务器返回:" + response.StatusDescription); StreamReader reader = new StreamReader(response.GetResponseStream();/ string s = reader.ReadToEnd(); string ftpDi

9、r = s.Split(Environment.NewLine.ToCharArray(), StringSplitOptions.RemoveEmptyEntries); listBoxInfo.Items.AddRange(ftpDir); listBoxInfo.Items.Add("服务器返回:" + response.StatusDescription); ftpFileBox.Items.Add("返回上级目录"); for (int i = 0; i < ftpDir.Length; i+) string fileinfo = ftp

10、Diri.Split(' '); string type = null; string filename = fileinfofileinfo.Length - 1; if (filename = "." | filename = ".") continue; else if (fileinfo0.IndexOf('d') != -1) type = "<目录>" else type = "<文件>" ftpFileBox.Items.Add(type + &

11、quot; " + filename); reader.Close(); response.Close(); btnDenglu.Enabled = false; catch (Exception ex) MessageBox.Show("登陆失败!"); MessageBox.Show(ex.ToString(); 4.2双击事件功能的实现 private void ftpFileBox_MouseDoubleClick(object sender, MouseEventArgs e) try String item = ftpFileBox.SelectedI

12、tem.ToString().Split(' '); string type = item0; if (type.Equals("<目录>") string file = item1; FileList += (file + "/");/进入目录 ftp:/ ServerIp/ 目录名/ ftpFileBox.Items.Clear(); connect(); else if (ftpFileBox.SelectedItem.ToString() = "返回上级目录") FileList = "

13、" 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; catch (WebException err)

14、 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

15、) listBoxInfo.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.Equa

16、ls("<文件>") 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.DeleteFile; FtpWebRes

17、ponse response = (FtpWebResponse)req.GetResponse(); MessageBox.Show("删除文件成功!"); else req = (FtpWebRequest)FtpWebRequest.Create(new Uri("ftp:/" + ftpServerIp + "/" + file); req.Credentials = new NetworkCredential(ftpUserID, ftpPassword); req.KeepAlive = false; req.UseBin

18、ary = true; req.Method = WebRequestMethods.Ftp.RemoveDirectory; FtpWebResponse response = (FtpWebResponse)req.GetResponse(); MessageBox.Show("删除成功!"); ftpFileBox.Items.Clear(); connect(); catch (Exception ex) MessageBox.Show(ex.Message); 4.5浏览上传文件 private void btnLiulan_Click(object sender

19、, EventArgs e) if (btnDenglu.Enabled = true) MessageBox.Show("请?登?陆?FTP服务?器÷!?"); else openFileDialog1.ShowDialog(); txtShangchuan.Text = openFileDialog1.FileName; /获取文件路径和文件名 4.6上传文件 private void btnShangchuan_Click(object sender, EventArgs e) if (txtShangchuan.Text = "") M

20、essageBox.Show("没?有瓺选?择?要癮上?传?的?文?件t!?"); else string FileSites = txtShangchuan.Text; FileInfo fileInf = new FileInfo(FileSites); req = (FtpWebRequest)FtpWebRequest.Create(new Uri("ftp:/" + ftpServerIp + "/" + fileInf.Name); req.Credentials = new NetworkCredential(ftpUs

21、erID, ftpPassword); req.KeepAlive = false; req.Method = WebRequestMethods.Ftp.UploadFile; req.UseBinary = true; byte buff = new byte1024;/1024为缓冲区大小 int ContentLen; /打开一个文件流上传文件 FileStream fs = fileInf.OpenRead(); try Stream strm = req.GetRequestStream(); ContentLen = fs.Read(buff, 0, 1024); /流内容没有结

22、束 while (ContentLen != 0) /把内容从file stream写入upload stream strm.Write(buff, 0, ContentLen); ContentLen = fs.Read(buff, 0, 1024); strm.Close();/关闭流 fs.Close(); txtShangchuan.Text = "" MessageBox.Show("上传成功!"); ftpFileBox.Items.Clear(); connect(); catch (Exception ex) MessageBox.Sho

23、w(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 = FileList + item1; if (type.Equals("<文件>") try req = (FtpWebR

24、equest)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(); save.FileName = file; if (s

25、ave.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; readCount = ftpStream.Read(buffer, 0,

26、 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.Show(ex.ToString

27、(); 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进入目录和返回上级目录图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

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论