欢迎来到天天文库
浏览记录
ID:49438360
大小:36.50 KB
页数:8页
时间:2020-03-01
《java实现ftp服务器实例.doc》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、-------------------------------------------------------java实现ftp服务器实例FTP命令FTP的主要操作都是基于各种命令基础之上的。常用的命令有:·设置传输模式,它包括ASCⅡ(文本)和BINARY二进制模式;·目录操作,改变或显示远程计算机的当前目录(cd、dir/ls命令);·连接操作,open命令用于建立同远程计算机的连接;close命令用于关闭连接;·发送操作,put命令用于传送文件到远程计算机;mput命令用于传送多个文件到远程计算机;·获取操作
2、,get命令用于接收一个文件;mget命令用于接收多个文件。编程思路根据FTP的工作原理,在主函数中建立一个服务器套接字端口,等待客户端请求,一旦客户端请求被接受,服务器程序就建立一个服务器分线程,处理客户端的命令。如果客户端需要和服务器端进行文件的传输,则建立一个新的套接字连接来完成文件的操作。编程技巧说明1.主函数设计在主函数中,完成服务器端口的侦听和服务线程的创建。我们利用一个静态字符串变量initDir来保存服务器线程运行时所在的工作目录。服务器的初始工作目录是由程序运行时用户输入的,缺省为C盘的根目录。具
3、体的代码如下:publicclassftpServerextendsThread{ privateSocketsocketClient;------------------------------------------------------- privateintcounter; privatestaticStringinitDir; publicstaticvoidmain(String[]args){ if(args.length!=0){ initDir=args[0]; }else{initDi
4、r="c:";} inti=1; try{ System.out.println("ftpserverstarted!"); //监听21号端口 ServerSockets=newServerSocket(21); for(;;){ //接受客户端请求 Socketincoming=s.accept(); //创建服务线程 newftpServer(incoming,i).start(); i++; } }catch(Exceptione){}}2.线程类的设
5、计线程类的主要设计都是在run()方法中实现。用run()方法得到客户端的套接字信息,根据套接字得到输入流和输出流,向客户端发送欢迎信息。3.FTP命令的处理(1)访问控制命令·username(user)和password(pass)命令处理代码如下:-------------------------------------------------------if(str.startsWith("USER")){ user=str.substring(4); user=user.trim(); out.print
6、ln("331Password");}if(str.startsWith("PASS"))out.println("230User"+user+"loggedin.");1(未取到网页内容)User命令和Password命令分别用来提交客户端用户输入的用户名和口令。·CWD(CHANGEWORKINGDIRECTORY)命令处理代码如下:if(str.startsWith("CWD")){ Stringstr1=str.substring(3); dir=dir+"/"+str1.trim(); out.print
7、ln("250CWDcommandsuccesful");}该命令改变工作目录到用户指定的目录。·CDUP(CHANGETOPARENTDIRECTORY)命令处理代码如下:if(str.startsWith("CDUP")){ intn=dir.lastIndexOf("/"); dir=dir.substring(0,n);------------------------------------------------------- out.println("250CWDcommandsuccesful");}
8、该命令改变当前目录为上一层目录。·QUIT命令处理代码如下:if(str.startsWith("QUIT")){ out.println("GOODBYE"); done=true;}该命令退出及关闭与服务器的连接,输出GOODBYE。(2)传输参数命令·Port命令处理代码如下:if(str.startsWith("PORT")){ out.printl
此文档下载收益归作者所有