快速业务通道

用Java实现FTP服务器解决方案 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-25
t;);  int i = str.length() - 1;  int j = str.lastIndexOf(",");  int k = str.lastIndexOf(",",j-1);  String str1,str2;  str1="";  str2="";  for(int l=k+1;lstr1 = str2 + str.charAt(l); } for(int l=j+1;l<=i;l++){  str2 = str2 + str.charAt(l); } tempPort = Integer.parseInt(str1) * 16 *16 +Integer.parseInt(str2); }

使用该命令时,客户端必须发送客户端用于接收数据的32位IP 地址和16位 的TCP 端口号。这些信息以8位为一组,使用十进制传输,中间用逗号隔开。

· TYPE命令处理代码如下:

if(str.startsWith("TYPE")){  out.println("200 type set"); }

用Java实现FTP服务器解决方案(3)

时间:2009-11-02

TYPE 命令用来完成类型设置。

(3) FTP 服务命令

· RETR (RETEIEVE) 和 STORE (STORE)命令处理的代码

if(str.startsWith("RETR")){  out.println("150 Binary data connection");  str = str.substring(4);  str = str.trim();  RandomAccessFile outFile = new  RandomAccessFile(dir+"/"+str,"r");  Socket tempSocket = new Socket(host,tempPort);  OutputStream outSocket = tempSocket.getOutputStream();  byte byteBuffer[]= new byte[1024];  int amount;  try{   while((amount = outFile.read(byteBuffer)) != -1){    outSocket.write(byteBuffer, 0, amount);   }   outSocket.close();   out.println("226 transfer complete");   outFile.close();   tempSocket.close();  }  catch(IOException e){} } if(str.startsWith("STOR")){  out.println("150 Binary data connection");  str = str.substring(4);  str = str.trim();  RandomAccessFile inFile = new  RandomAccessFile(dir+"/"+str,"rw");  Socket tempSocket = new Socket(host,tempPort);  InputStream inSocket = tempSocket.getInputStream();  byte byteBuffer[] = new byte[1024];  int amount;  try{   while((amount =inSocket.read(byteBuffer) )!= -1){   inFile.write(byteBuffer, 0, amount);  }  inSocket.close();  out.println("226 transfer complete");  inFile.close();  tempSocket.close(); } catch(IOException e){} }

文件传输命令包括从服务器中获得文件RETR和向服务器中发送文件STOR,这两个命令的处理非常类似。处理RETR命令时,首先得到用户要获得的文件的名称,根据名称创建一个文件输入流,然后和客户端建立临时套接字连接,并得到一个输出流。随后,将文件输入流中的数据读出并借助于套接字输出流发送到客户端,传输完毕以后,关闭流和临时套接字。

STOR 命令的处理也是同样的过程,只是方向正好相反。

· DELE (DELETE)命令处理代码如下:

if(str.startsWith("DELE")){  str = str.substring(4);  str = str.trim();  File file = new File(dir,str);  boolean del = file.delete();  out.println("250 delete command successful"); }

DELE 命令用于删除服务器上的指定文件。

· LIST命令处理代码如下:

if(str.startsWith("LIST")) {  try{   out.println("150 ASCII data");   Socket tempSocket = new Socket(host,tempPort);   PrintWriter out2= new PrintWriter(tempSocket.getOutputStream(),true);   File file = new File(dir);   String[] dirStr

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号