FTP文件传输协议课程设计报告.doc
《FTP文件传输协议课程设计报告.doc》由会员分享,可在线阅读,更多相关《FTP文件传输协议课程设计报告.doc(23页珍藏版)》请在咨信网上搜索。
1、课 程 设 计课程名称_计算机网络 题目名称_文件传输协议的简单设计与实现学生学院_自动化学院 专业班级_13级物联网工程1班学 号_3113001554 学生姓名 梁建斌 指导教师 刘洪涛 2015年12月25日摘要文件传送是各种计算机网络都实现的基本功能,文件传送协议是一种最基本的应用层协议按照客户/服务器的模式进行工作,提供交互式的访问。本设计是基于Eclipse平台下使用Java实现的FTP文件传输。实现基本的文件传输操作。建立客户端和服务器、客户端基于TCP Socket进行数据传输,采用多线程进行数据传输,套接字来实现。在实现过程中采用类与对象的思想进行规划,体验了一个软件开发过程
2、的具体实现步骤。关键字:Java网络编程 FTP文件传输 文件上传下载 文件操作 目录一、 实验目的3二、 实验内容和要求31、实验内容32、具体要求3三、 实验主要仪器设备和材料3四、 基本原理31.FTP系统模型32. 系统功能设计42.1总体设计4 基本功能42.2系统实现4五、 实现结构流程图5六、 整体实现的逻辑、数据结构61.客户端的抽象数据类型61.1FTPClient用户界面61.2FTPClient控制连接线程71.3FTPClient数据连接线程72. 服务器的抽象数据类型82.1 FTPServer的控制连接线程82.2FTPServer的数据连接线程9七、 具体的一些方
3、法实现91. FTPClient用户界面102. FTPClient控制连接103. FTPClient数据传输124. FTPServer控制连接145. FTPServer数据传输14八、测试结果客户端结果.16服务端结果16九、 课程设计心得17十、 参考文献18一、 实验目的文件传送是各种计算机网络都实现的基本功能,文件传送协议是一种最基本的应用层协议按照客户/服务器的模式进行工作,提供交互式的访问,是INTERNET使用最广泛的协议之一。本实验的目的是,学会利用已有网络环境设计并实现简单应用层协议,掌握TCP/IP 网络应用程序基本的设计方法和实现技巧。二、 实验内容和要求1、实验内
4、容我们的计算机网络实验环境建立在TCP/IP 网络体系结构之上。各计算机除了安装TCP/IP 软件外,还安装了TCP/IP 开发系统。实验室各计算机具备Windows环境中套接字socket 的编程接口功能,可为用户提供全网范围的进程通信功能。本实验要求学生利用这些功能,设计和实现一个简单的文件传送协议。2、具体要求用socket 编程接口编写两个程序,分别为客户程序(client.c)和服务器程序(server.c),该程序应能实现下述命令功能:get:取远方的一个文件put:传给远方一个文件pwd:显示远主当前目录dir:列出远方当前目录cd :改变远方当前目录? :显示你提供的命令qui
5、t :退出返回这此命令的具体工作方式(指给出结果的形式)可以参照FTP 的相应命令,有余力的同学可以多实现几个命令。最后,写出实验报告。三、 实验主要仪器设备和材料联网计算机 Eclipse JDK1.7帮助文档四、 基本原理1.FTP系统模型FTP是Internet上传文件的应用层协议。FTP规定数据包的格式、数据包头部结构和命令结构等等。FTP应用TCP传输而不用UDP。由FTP提供的文件传输将一个完整的文件从一个系统复杂然后通过TCP套接字发送传输个另一个系统中。一方为服务器。一方为客户端。FTP建立两个TCP连接,一个用于数据传输,一个用于传输命令。每一个FTP主机都有一个“协议解析器
6、”模块。FTP以纯文本形式发送,其响应同样也是纯文本形式。在进行文件传输时,FTP的客户端和服务器之间要建立两个并行的TCP连接:“控制连接”和“数据连接”。控制连接在整个连接回话的期间一直保持打开状态。当FTP客户端通过控制连接发送请求,并告诉服务器自己的数据连接的动态端口号(randomPort),服务器通过控制连接(2554)接收到请求信息,然后,创建数据连接(randomPort)进程进行连接客户端的数据传输端口。由于FTP采用两个不同的端口,所以数据连接和控制连接不会混乱。原理图看图1输入的操作信息和数据传输进程的动态端口、断点字节流具体的数据字节流控制进程客户端服务器数据传输进程控
7、制进程用户界面数据传输进程 FTP采用两个TCP进行连接 图12. 系统功能设计2.1总体设计基本功能:Client Server界面设计 ;输入要连的远程主机服务器IP,上传任意格式的文件;下载任意格式文件(能实现断点续传);查看服务器的根目录;列出服务器当前文件夹目录,更改服务器当前文件夹目录再列出,支持多客户同时数据访问服务器(通过控制层给传输层分配动态端口实现)。2.2系统实现系统功能实现:FTPServer启动控制连接线程ServerControlPro创建一个ServerSocket端口号为2554进行实况监听访问。FTPClient开启,启动用户界面菜单,输入IP后,弹出选择提示
8、菜单,用户输入想实现的操作operating(get,put,dir,pwd,-cd)和相应其它信息(文件路径),然后FTPClient开启控制连接的线程ClientControlPro访问FTPServer的2554端口进行控制连接,并启动了数据连接线程ClientTransPro。服务器接收到FTPClient的请求和相关信息,进行启动数据连接ServerTransPro,监听客户端的数据连接。完成相应请求后。服务器关闭套接字,关闭数据连接线程。进入监听状态。五、 实现结构流程图六、整体实现的逻辑、数据结构1.客户端的抽象数据类型ADT Client数据对象:控制线程数据传输线程数据关系:
9、控制线程 控制 数据传输线程 三个类: Class UserInterface;/用户界面 Class ClientControlPro;/控制进程 Class ClientDataTransPro;/数据传输进程1.1FTPClient用户界面ADT Client -UserInterface()public static void main(String args) System.out.println(请输入服务器ip地址);serverIP =input.next();optionmenu();static void optionmenu()System.out.println( 欢迎
10、来到FTP文件管理客户端 );System.out.println(-);System.out.println(请输入具体操作( h get put dir pwd -cd quit));String operating = input.next();tryswitch (operating)case h:System.out.println(使用说明书!n);showUsingBook();break;case get:/ 获取要下载的文件名String getFileNmae = getFileName();String a=getFileNmae.split(.,2);houzui=a1
11、;System.out.println(下载中-);new ClientControlPro(operating, getFileNmae,serverIP,houzui).start();/ 控制连接break;case put:String putFileNmae = putFileName();System.out.println(发送中-);new ClientControlPro(operating, putFileNmae,serverIP,houzui).start();break;case dir:System.out.println(开始操作列出远方当前目录功能!);new
12、ClientControlPro(operating, ,serverIP,houzui).start();break;case pwd:System.out.println(开始操作显示远主当前路径功能!);new ClientControlPro(operating, ,serverIP,houzui).start();break;case -cd:System.out.println(开始操作改变远方当前目录文件功能!);/ 获取要更改文件的新路径String cdFileDirName = getChangeDir();new ClientControlPro(operating, c
13、dFileDirName,serverIP,houzui).start();break;case quit:System.out.println(正在退出程序!);System.exit(0);break;default:break;optionmenu();catch (Exception e1)e1.printStackTrace();System.out.println(客户端启动失败!);1.2FTPClient控制连接线程public class ClientControlPro extends ThreadString userCode = ;/传输给服务器的一窜控制信息Strin
14、g operating;String getFilename;String serverIP;String houzui; long position;int randomPort;public ClientControlPro(String operating, String getFilename,String serverIP,String houzui).public void run()randomPort=new Random().nextInt(65535);/生成随机端口userCode = operating + :+randomPort+: + :+position+: +
15、getFilename;/ 利用:通过正则表达式拆分3个字符窜sendMessage();/发送控制信息并启动传输端线程sendMessage().1.3FTPClient数据连接线程ClientTransPro extended Thread.public ClientTransPro(String operating, String getFilename,String serverIP,String houzui,int randomPort,long position).public void run()switch (operating)case get:download();bre
16、ak;case put:upload(getFilename);break;case pwd:show();break;case dir:dir();break;case -cd:dir();break;default:break;2. 服务器的抽象数据类型ADT Server数据对象:控制线程Socket(2554)数据传输线程Socket(randomPort)数据关系:控制线程 控制 数据传输线程三个类:ServerInterface/服务器入口ServerControlPro/控制进程ServerDataTransPro/数据传输进程2.1 FTPServer的控制连接public c
17、lass ServerControlPro extends Thread . .public void run()ServerSocket serverSocket;serverSocket = new ServerSocket(2554);/ 学号后三位加+2000while (true)System.out.println(监听到客户端请求第 + i + 个!n);/ 控制线程Socket s = serverSocket.accept();/ 创建一个监听客户请求的套接字i+;getClientMessage(s);/接收客户端传来的控制信息并启动传输端线程getClientMessag
18、e(s).; 2.2FTPServer的数据连接public class ServerDataTransPro extends ThreadString operating = ;String getFilename = ;String randomPort=;Socket socket;int serverRandomPort;public ServerDataTransPro(String operating, String randomPort, String getFilename)this.operating = operating;this.getFilename = getFil
19、ename;this.randomPort=randomPort;public void run()ServerSocket serverSocket = null;tryserverRandomPort= new Integer(randomPort);serverSocket = new ServerSocket(serverRandomPort);boolean isflag = true;while (isflag)socket = serverSocket.accept();System.out.println(有客户端 + socket.toString() + 连接本服务数据传输
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- FTP 文件传输 协议 课程设计 报告
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【胜****】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【胜****】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。