下载此文档

课设一个简单FTP服务器实现.doc


文档分类:IT计算机 | 页数:约24页 举报非法文档有奖
1/24
下载提示
  • 1.该资料是网友上传的,本站提供全文预览,预览什么样,下载就什么样。
  • 2.下载该文档所得收入归上传者、原创者。
  • 3.下载的文档,不会出现我们的网址水印。
1/24 下载此文档
文档列表 文档介绍
该【课设一个简单FTP服务器实现 】是由【春天资料屋】上传分享,文档一共【24】页,该文档可以免费在线阅读,需要了解更多关于【课设一个简单FTP服务器实现 】的内容,可以使用淘豆网的站内搜索功能,选择自己适合的文档,以下文字是截取该文章内的部分文字,如需要获得完整电子版,请下载此文档到您的设备,方便您编辑和打印。课设一个简单FTP服务器实现课设一个简单FTP服务器实现1/24课设一个简单FTP服务器实现课程设计任务书专业:计算机科学与技术学号:2153626学生姓名(署名):设计题目:一个简单FTP服务器的实现一、设计实验条件1208实验室二、设计任务及要求设计要求:任选一门自己熟****的程序设计语言,利用Socket网络编程系统实现一个简单FTP服务器。要务实现的功能包含:上传、下载、选择数据传输模式,改变目录等,并给出相应的提示。三、。,利用Socket网络编程系统实现一个简单FTP服务器。要务实现的功能包含:上传、下载、选择数据传输模式,改变目录等,并给出相应的提示。,固然在如从前使用得宽泛,可是在好多大学等科研单位,Ftp仍旧是最常用的文件互换方式。FTP(FileTransferProtocol,文件传输协议)是TCP/IP协议组中的协议之一。FTP协议包含两个构成部分,其一为FTP服务器,其二为FTP客户端。此中FTP服务器用来储蓄文件,用户能够使用FTP客户端经过FTP协议接见位于FTP服务器上的资源。Ftp协议是鉴于TCP协议的,所以,在一个Ftp会话开始前,客户端和服务器必然第一成立一个TCP连结,这个TCP连结平常被称作控制连结,客户端经过此连结向服务器发送FTP命令,服务器办理命令后,将返回一个响应码。一个Ftp会话过程中,向来有一个控制连结,假如客户端恳求文件,则会有一个数据连结,但FTP协议规定:只需封闭了控制连结,数据连结(假如有)也必须封闭。,而Unix/Linux基本哲学之一就是“全部皆文件”,都能够用“翻开open–>读写write/read–>封闭close”模式来操作。Socket就是该模式的一个实现,Socket即是一种特其余文件,一些socket函数就是对其进行的操作(读/写IO、翻开、封闭)。说白了Socket是应用层与TCP/IP协议族通讯的中间软件抽象层,它是一组接口。在设计模式中,Socket其实就是一个门面模式,它把复杂的TCP/IP协议族隐蔽在Socket接口后边,对用户来说,一组简单的接口就是全部,让Socket去组织数据,以符合指定的协议。Socket是应用层与TCP/IP协议族通讯的中间软件抽象层。课设一个简单FTP服务器实现课设一个简单FTP服务器实现2/24课设一个简单FTP服务器实现套接字API最先是作为UNIX操作系统的一部分而开发的,所以套接字API与系统的其余I/O设施集成在一同。特别是,当应用程序要为因特网通讯而创立一课设一个简单FTP服务器实现课设一个简单FTP服务器实现24/24课设一个简单FTP服务器实现个套接字(socket)时,操作系统就返回一个小整数作为描绘符(descriptor)来表记这个套接字。此后,应用程序以该描绘符作为传达参数,经过调用函数来完成某种操作(比方经过网络传达数据或接收输入的数据)。传输模式FTP的传输有两种方式:ASCII传输模式和二进制数据传输模式。课设一个简单FTP服务器实现课设一个简单FTP服务器实现4/24课设一个简单FTP服务器实现ASCII传输模式:假定用户正在拷贝的文件包含的简单ASCII码文本,假如在课设一个简单FTP服务器实现课设一个简单FTP服务器实现24/24课设一个简单FTP服务器实现远程机器上运转的是不一样样的操作系统,当文件传输时ftp平常会自动地调整文件的内容以便于把文件解说成其余那台计算机储蓄文本文件的格式。即ASCII模式下会变换文件,不可以够说是不一样样系统对回车换行解说不一样样,而是不一样样的系统有不一样样的行结束符。UNIX系统下行结束符是一个字节,即十六进制的0A,而Windows的课设一个简单FTP服务器实现课设一个简单FTP服务器实现24/24课设一个简单FTP服务器实现系统是两个字节,即十六进制的0D0A,所以当你用ASCII方式从UNIX的FTPServer下载文件到Windows系统上时(不论是二进制或许文本文件),每检测到一个字节0A,就会自动插入一个0D,所以假如你的文件是二进制文件,比方可履行文件、压缩包什么的,就必然不可以够用了。假如你的文件就是UNIX下的文本文件,你用ASCII模式是正确的,假如误用了Binary模式,你在Windows上看这个文件是没有换行的,里面是一个个的黑方块。二进制传输模式:在二进制传输中,保留文件的位序,以便原始和拷贝的是逐位一一对应的。即便目的地机器上包含位序列的文件是没意义的。比方,macintosh以二进制方式传达可履行文件到Windows系统,在对方系统上,此文件不可以够履行。假如你在ASCII方式下传输二进制文件,即便不需要也仍会转译。这会使传输稍微变慢,也会破坏数据,使文件变得不可以够用。(在大部分计算机上,ASCII方式一般假定每一字符的第一有效位没心义,由于ASCII字符组合不使用它。假如你传输二进制文件,全部的位都是重要的。)假如你知道这两台机器是相同的,则二进制方式对文本文件和数据文件都是有效的。,是信息的时代,是多媒体的时代。技术的迅猛发展与普及,推进了世界范围的信息传输和信息沟通。这样流行,此中FTP功不可以没。不计其数的数据、软件散布在世界各地,有了ftp,足不出户,就能万无一失地获取想要的。FTP文件传达服务,主要用于寄存大批的网络公课设一个简单FTP服务器实现课设一个简单FTP服务器实现24/24课设一个简单FTP服务器实现用软件,常用工具盒技术文档,以及一些有名FTP服务的情况,此刻,已经有许课设一个简单FTP服务器实现课设一个简单FTP服务器实现8/24课设一个简单FTP服务器实现多互联网站点都成立了可供大众接见的资料库,这些资料都能够被经过FTP获取。成立匿名FTP服务器,能够使用户有机会接触到世界上最大的信息库,这个信息库是日异月新起来的,而且还在不停增添,永不封闭,波及到几乎全部主题。而课设一个简单FTP服务器实现课设一个简单FTP服务器实现9/24课设一个简单FTP服务器实现且,这全部是免费的。之所以能连续到今日,是由于人们使用经过标准课设一个简单FTP服务器实现课设一个简单FTP服务器实现24/24课设一个简单FTP服务器实现协议供给标准服务的程序。匿名FTP是网上宣告软件的常用方法。课设一个简单FTP服务器实现课设一个简单FTP服务器实现24/24课设一个简单FTP服务器实现上的好多程序是由个人创立和保护的,他们经过匿名FTP把它们发散课设一个简单FTP服务器实现课设一个简单FTP服务器实现24/24课设一个简单FTP服务器实现给世界各地的人们。也能够找到电子杂志、用户网讨论组的档案、技术文件等等。,此中文件传输是信息共享的十分重要的内容之一。FTP是实现文件传输服务的最主要的规范,而且当需要考虑到文件传输安全、传输质量、接见控制等诸多要素时,FTP服务器就成认识决文件传输问题的关键所在。在这类情况下,就需要有一个优秀的FTP服务器平台来知足用户日趋增添的服务需求。所以,研究FTP服务器有关技术及实现拥有重要的意义。(1)常用命令FTP的主要操作都是鉴于各样命令基础之上的。常用的命令有:(1)设置传输模式,它包含ASCⅡ(文本)和BINARY二进制模式。(2)目录操作,改变或显示远程计算机的目前目录(cd、dir/ls命令)。(3)连结操作,open命令用于成立同远程计算机的连结;close命令用于关闭连结。(4)发送操作,put命令用于传达文件到远程计算机。(5)获取操作,get命令用于接收一个文件。(2)工作原理服务器端先初始化Socket,此后与端口绑定(bind),对端口进行监听(listen),ept拥堵,等候客户端连结。在这时假如有个客户端初始化一Socket,此后连结服务器(connect),假如连结成功,这时客户端与服务器端的连结就成立了。客户端发送数据恳求,服务器端接收恳求并办理恳求,此后把回应数据发送给客户端,客户端读取数据,最后封闭连结,一次交互结束。(3)常用函数课设一个简单FTP服务器实现课设一个简单FTP服务器实现24/24课设一个简单FTP服务器实现accept()函数TCP服务器监听到客户端恳求此后,ept()函数取接收恳求,这样连结就成立好了。此后就能够开始网络I/O操作了,即类同于一般文件的读写I/O操作。accept默认会拥堵进度,直到有一个客户连结成立后返回,它返回的是已连结socket描绘字(一个连结套接字),它代表着一个网络已经存在的点点连结。一个服务器平常平常可是只创立一个监听socket描绘字,它在该服务器的生命周期内向来存在。内核为每个由服务器进度接受的客户连结创立了一个已连结socket描绘字,当服务器完成了对某个客户的服务,相应的已连结socket描绘字就被封闭。read()、write(),read返回实质所读的字节数,假如返回的值是0表示已经读到文件的结束了,小于0表示出现了错误。假如错误为EINTR说明读是由中止惹起的,假如是ECONNREST表示网络连结出了问题。write函数将buf中的nbytes字节内容写入文件描绘符fd,成功时返回写的字节数。失败时返回-1,并设置errno变量。在网络程序中,当我们向套接字文件描绘符写时有俩种可能。1)write的返回值大于0,表示写了部分或许是全部的数据。2)返回的值小于0,此时出现了错误。我们要依据错误种类来办理。假如错误为EINTR表示在写的时候出现了中止错误。假如为EPIPE表示网络连结出现了问题(对方已经封闭了连结)。close()函数在服务器与客户端成立连结此后,会进行一些读写操作,完成了读写操作就要封闭相应的socket描绘字,好似操作完翻开的文件要调用fclose封闭翻开的文件。close一个TCPsocket的缺省行为时把该socket标志为以封闭,此后立刻返回到调用进度,该描绘字不可以够再由调用进度使用。(4)Socket中TCP的成立(三次握手)TCP协议经过三个报文段完成连结的成立,这个过程称为三次握手(three-wayhandshake),过程以以以下图所示。第一次握手:成立连结时,客户端发送syn包(syn=j)到服务器,并进入SYN_SEND状态,等候服务器确认;SYN:同步序列编号(SynchronizeSequenceNumbers)。课设一个简单FTP服务器实现课设一个简单FTP服务器实现14/24课设一个简单FTP服务器实现第二次握手:服务器收到syn包,必然确认客户的SYN(ack=j+1),同时自己也发送一个SYN包(syn=k),即SYN+ACK包,此时服务器进入SYN_RECV状态;?第三次握手:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ack=k+1),此包发送完成,客户端和服务器进入ESTABLISHED状态,完成三次握手。一个圆满的三次握手也就是:恳求---应答---再次确认。当客户端调用connect时,触发了连结恳求,向服务器发送了SYNJ包,这时connect进入拥堵状态;服务器监听到连结恳求,即收到SYNJ包,ept函数接收恳求向客户端发送SYNK,ACKJ+1,ept进入拥堵状态;客户端收到服务器的SYNK,ACKJ+1此后,这时connect返回,并对SYNK进行确认;服务器收到ACKK+1时,accept返回,至此三次握手完成,连结成立。(客户端)成员变量:Stringcmd="";//从标准输入流接收字符串,放在cmd中Sockets;//BufferedReaderbr;//传输数据DataOutputStreamdos;//数据输出流DataInputStreamdis;//数据输入流client方法课设一个简单FTP服务器实现课设一个简单FTP服务器实现15/24课设一个简单FTP服务器实现lient(StringserName){课设一个简单FTP服务器实现课设一个简单FTP服务器实现24/24课设一个简单FTP服务器实现catalogue();课设一个简单FTP服务器实现课设一个简单FTP服务器实现17/24课设一个简单FTP服务器实现try{课设一个简单FTP服务器实现课设一个简单FTP服务器实现24/24课设一个简单FTP服务器实现booleanflag=true;while(flag){s=newSocket(serName,8888);//("连结上!!");br=newBufferedReader(newInputStreamReader(System.//将输入的命令放到BufferedReader类变量br中cmd=();//将br的内容读出放到cmd中//发丧命令DataOutputStreamdos=newDataOutputStream(newBufferedOutputStream(()));//向服务器发送有关命令get,put,cd,dir,如in));课设一个简单FTP服务器实现课设一个简单FTP服务器实现24/24课设一个简单FTP服务器实现//将字符集变换成字节序列课设一个简单FTP服务器实现课设一个简单FTP服务器实现24/24课设一个简单FTP服务器实现byte[]buf=();//使用平台默认的字符集将此String课设一个简单FTP服务器实现课设一个简单FTP服务器实现24/24课设一个简单FTP服务器实现解码为字节序列,并将结果储蓄到一个新的字节数组中。//返回:结果字节数组课设一个简单FTP服务器实现课设一个简单FTP服务器实现24/(cmd);//用UTF编码将一个字符串写入基础输入流,即写课设一个简单FTP服务器实现课设一个简单FTP服务器实现24/24课设一个简单FTP服务器实现到服务端的输入流课设一个简单FTP服务器实现课设一个简单FTP服务器实现24/();//清空此数据输出流课设一个简单FTP服务器实现课设一个简单FTP服务器实现24/();();//封闭输出流//封闭socket课设一个简单FTP服务器实现课设一个简单FTP服务器实现24/24课设一个简单FTP服务器实现进行关于应得操作:if(("get"))get(serName);elseif(("put"))put(serName);elseif(("cd"))cd(serName);elseif(("dir"))dir(serName);elseif(cmd=="quit")flag=false;}}catch(UnknownHostExceptione){TODOAuto-();}catch(IOExceptione){课设一个简单FTP服务器实现课设一个简单FTP服务器实现24/24课设一个简单FTP服务器实现TODOAuto-();课设一个简单FTP服务器实现课设一个简单FTP服务器实现28/24课设一个简单FTP服务器实现}finally{if(br!=null){try{();}catch(IOExceptione){();}}if(s!=null){try{();}catch(IOExceptione){();}}}}主函数:publicstaticvoidmain(String[]args){newclient()}(服务器端)成员变量ServerSocketss=null;//服务器端socket对象//服务器套接字等候恳求经过网络传入。它鉴于该恳求履行某些操作,此后可能向恳求者返回结果。Stringdir="";Stringcmd="";DataOutputStreamdos;//数据输出流StringdirecFile="";FilerootDirectory;StringshareFile;DataInputStreamdis;//数据输入流ArrayList<File>fileArrayList=newArrayList<File>();//文件列表privateStringshareFiledirectory;//共享文件目录字符串Server方法课设一个简单FTP服务器实现课设一个简单FTP服务器实现29/24课设一个简单FTP服务器实现publicserver(StringshareFiledirectory){课设一个简单FTP服务器实现课设一个简单FTP服务器实现24/24课设一个简单FTP服务器实现

课设一个简单FTP服务器实现 来自淘豆网www.taodocs.com转载请标明出处.

相关文档 更多>>
非法内容举报中心
文档信息
  • 页数24
  • 收藏数0 收藏
  • 顶次数0
  • 上传人春天资料屋
  • 文件大小689 KB
  • 时间2024-04-16