专注于互联网--专注于架构

最新标签
网站地图
文章索引
Rss订阅

首页 »Java教程 » javaftp服务器:如何用Java实现FTP服务器 »正文

javaftp服务器:如何用Java实现FTP服务器

来源: 发布时间:星期一, 2009年2月23日 浏览:0次 评论:0
;x|)Uk$vG3aK!]/aFTP(File Transfer Protocol 文件传输协议)是Internet 上用来传送文件协议在Internet上通过FTP 服务器可以进行文件上传(Upload)或下载(Download)FTP是实时联机服务在使用它的前必须是具有该服务个用户(用户名和口令)工作时客户端必须先登录到作为服务器计算机上用户登录后可以进行文件搜索和文件传送等有关操作如改变当前工作目录、列文件目录、设置传输参数及传送文件等使用FTP可以传送所有类型文件如文本文件、 2进制可执行文件、图象文件、声音文件和数据压缩文件等

bP$E$Ks7C-[+| oJqs&G8bf:iB uFTP 命令JAVA中文站社区门户B8[1I3m/Lr6JW\

G6Y6cm(j[6`:A+_*~FTP 主要操作都是基于各种命令基础的上常用命令有:

X QVIf`QX*u ?F?*@m Je%L#NH◆ 设置传输模式它包括ASCⅡ(文本) 和BINARY 2进制模式;JAVA中文站社区门户g(Y5})|v+\

R[f BXnzE _◆ 目录操作改变或显示远程计算机当前目录(cd、dir/ls 命令);JAVA中文站社区门户(~'hP.T*P*y u3~$D8m-i

(c2jJi9J:M@@Rc◆ 连接操作open命令用于建立同远程计算机连接;close命令用于关闭连接;JAVA中文站社区门户6Ru^6S3I2f-C

JAVA中文站社区门户:Z Xw0]aO"s◆ 发送操作put命令用于传送文件到远程计算机;mput 命令用于传送多个文件到远程计算机;JAVA中文站社区门户,? t v3x'q

3v9|&u {"N!\D n C◆ 获取操作get命令用于接收个文件;mget命令用于接收多个文件

H*L H6_/m 5@5X9XB/CC编程思路JAVA中文站社区门户1D{9Bm.K6O

JAVA中文站社区门户*m7]5\_bV根据FTP 工作原理在主中建立个服务器套接字端口等待客户端请求旦客户端请求被接受服务器就建立个服务器分线程处理客户端命令如果客户端需要和服务器端进行文件传输则建立个新套接字连接来完成文件操作

#I(@'^ iy JAVA中文站社区门户r:P8iy"GY编程窍门技巧介绍说明JAVA中文站社区门户)e]aF1B`a

JAVA中文站社区门户c ~S rdg%K1.主设计

{ X0J2u1R_ PU-T JAVA中文站社区门户+kuc3UBid'kx在主完成服务器端口侦听和服务线程创建我们利用个静态串变量initDir 来保存服务器线程运行时所在工作目录服务器工作目录是由运行时用户输入缺省为C盘根目录JAVA中文站社区门户(z9q]"_}

JAVA中文站社区门户 A^'`#^ ] V具体代码如下:

(V$F!|s&^ b{ e JAVA中文站社区门户@6u7O|%Huipublic ftpServer extends Thread{JAVA中文站社区门户7J/g~rBi i{
private Socket Client;
8E4h3GM~)k:H,Dprivate counter;
c~V [ gprivate String initDir;JAVA中文站社区门户:\g_"\/_1exU$p%~
public void (String args){
2b&ir'p(s9F(args.length != 0) {JAVA中文站社区门户s!N"i7\s b j&x
initDir = args[0];
5q I!L0v~2|%K}{ initDir = "c:";}
&AL9^mZ i = 1;JAVA中文站社区门户 oV/Y AWyB
try{JAVA中文站社区门户 C#d,T2sy)l,V
.out.prln("ftp server started!");
:iI4G?2EQ//监听21号端口JAVA中文站社区门户"Q}gD-gB$Q
ServerSocket s = ServerSocket(21);JAVA中文站社区门户)m1c2tb#MZYr/Vj m`
for(;;){JAVA中文站社区门户8r ?;m:` S
//接受客户端请求
zra$i|ipSocket incoming = s.accept;
+c%v nB v-[1B//创建服务线程
U+k5Wr5a ^J5F/B ftpServer(incoming,i).start;
Ug+jDr%]+?/x1aTi;
\ c9z J3sNI6j}JAVA中文站社区门户{ i,^GU\
}catch(Exception e){}JAVA中文站社区门户s1?m X!R4u}
} JAVA中文站社区门户ub&pf'kuG*e

z&n+~%sl;bJAVA中文站社区门户'FCK9]%G
2. 线程类设计JAVA中文站社区门户]!| X&C ^:X~ qWx

F(? ]T$s B1U])c `线程类主要设计都是在run思路方法中实现用run思路方法得到客户端套接字信息根据套接字得到输入流和输出流向客户端发送欢迎信息JAVA中文站社区门户 ^dA"AvX

JAVA中文站社区门户8Of'ijzC3. FTP命令处理

^ OT-t7C+g3J"I KiyB!dG#J(1) 访问控制命令

o6w8kRd,N1s~ JAVA中文站社区门户t gLIW;@◆ user name(user) 和 password (pass) 命令处理代码如下:JAVA中文站社区门户Vxg/g%DO

JAVA中文站社区门户 m2u Z.hyNAU5N(str.startsWith("USER")){user = str.sub(4);user = user.trim;out.prln("331 Password");}(str.startsWith("PASS"))out.prln("230 User "+user+" logged in."); JAVA中文站社区门户wgI5yz

+?'I~hd+K$RI
X3\+` @_)E1_User 命令和 Password 命令分别用来提交客户端用户输入用户名和口令JAVA中文站社区门户2p"A`I1f(Q#G Q

JAVA中文站社区门户+A8]3f8e;j◆ CWD (CHANGE WORKING DIRECTORY) 命令处理代码如下:

i2ksi#E KaY7uf Y%ZJ3w2HW@;g ZA7S(str.startsWith("CWD")){String str1 = str.sub(3);dir = dir+"/"+str1.trim;out.prln("250 CWD command succesful");} JAVA中文站社区门户D7L7pJ6M"j-O

JAVA中文站社区门户+lTnD%@({ vbJAVA中文站社区门户l}"]1TY
该命令改变工作目录到用户指定目录

B0t Ys/q*S!H@#aO w 'v3Np/R&^e Ae^◆ CDUP (CHANGE TO PARENT DIRECTORY) 命令处理代码如下:JAVA中文站社区门户6~#S*G/v^eF

#_CDV\#W a5Y(str.startsWith("CDUP")){ n = dir.lastIndexOf("/");dir = dir.sub(0,n);out.prln("250 CWD command succesful");} JAVA中文站社区门户 ~xf;JH$b c)R

JAVA中文站社区门户E1m$V~,P/`,G
k]STB)C(}该命令改变当前目录为上层目录

cu:U t'Oj ~bG.Z%Au2X*B_◆ QUIT命令处理代码如下:JAVA中文站社区门户u0E'v8]5rB;`oU

JAVA中文站社区门户)f:eTx1b0\'m(str.startsWith("QUIT")) {out.prln("GOOD BYE");done = true;} JAVA中文站社区门户 y'W _|CbO.ia?U

w+i)\q]&tM
,l.Ey4vWQ#@"JFj该命令退出及关闭和服务器连接输出GOOD BYEJAVA中文站社区门户J%? z?[?c


*`w W9Z-n1Q*Fpag

TAG: FTP Java JAVA java 服务器
0

相关文章

读者评论

发表评论

  • 昵称:
  • 内容: