校园春色亚洲色图_亚洲视频分类_中文字幕精品一区二区精品_麻豆一区区三区四区产品精品蜜桃

主頁 > 知識庫 > 用Java實現FTP服務器解決方案

用Java實現FTP服務器解決方案

熱門標簽:漯河辦理400電話 電話機器人的特色和創新 怎樣把地圖標注出來 地圖標注人員兼職 開封便宜外呼系統報價 商丘百應電話機器人有沒有效果 黃石智能營銷電銷機器人效果 騰訊地圖標注商戶改名注冊入駐 淮南騰訊地圖標注
FTP 命令

  FTP 的主要操作都是基于各種命令基礎之上的。常用的命令有:

  · 設置傳輸模式,它包括ASCⅡ(文本) 和BINARY 二進制模式;

  · 目錄操作,改變或顯示遠程計算機的當前目錄(cd、dir/ls 命令);

  · 連接操作,open命令用于建立同遠程計算機的連接;close命令用于關閉連接;

  · 發送操作,put命令用于傳送文件到遠程計算機;mput 命令用于傳送多個文件到遠程計算機;

  · 獲取操作,get命令用于接收一個文件;mget命令用于接收多個文件。

  編程思路

  根據FTP 的工作原理,在主函數中建立一個服務器套接字端口,等待客戶端請求,一旦客戶端請求被接受,服務器程序就建立一個服務器分線程,處理客戶端的命令。如果客戶端需要和服務器端進行文件的傳輸,則建立一個新的套接字連接來完成文件的操作。

  編程技巧說明

  1.主函數設計

  在主函數中,完成服務器端口的偵聽和服務線程的創建。我們利用一個靜態字符串變量initDir 來保存服務器線程運行時所在的工作目錄。服務器的初始工作目錄是由程序運行時用戶輸入的,缺省為C盤的根目錄。

  具體的代碼如下:

  public class ftpServer extends Thread{
  private Socket socketClient;
  private int counter;
  private static String initDir;
  public static void main(String[] args){
  if(args.length != 0) {
   initDir = args[0];
  }else{ initDir = "c:";}
  int i = 1;
  try{
   System.out.println("ftp server started!");
   //監聽21號端口
   ServerSocket s = new ServerSocket(21);
   for(;;){
    //接受客戶端請求
    Socket incoming = s.accept();
    //創建服務線程
    new ftpServer(incoming,i).start();
    i++;
   }
  }catch(Exception e){}
  }

  2. 線程類的設計

  線程類的主要設計都是在run()方法中實現。用run()方法得到客戶端的套接字信息,根據套接字得到輸入流和輸出流,向客戶端發送歡迎信息。

  3. FTP 命令的處理

  (1) 訪問控制命令

  · user name(user) 和 password (pass) 命令處理代碼如下:

  if(str.startsWith("USER")){
  user = str.substring(4);
  user = user.trim();
  out.println("331 Password");
  }
  if(str.startsWith("PASS"))
  out.println("230 User "+user+" logged in.");

  User 命令和 Password 命令分別用來提交客戶端用戶輸入的用戶名和口令。

  · CWD (CHANGE WORKING DIRECTORY) 命令處理代碼如下:

  if(str.startsWith("CWD")){
  String str1 = str.substring(3);
  dir = dir+"/"+str1.trim();
  out.println("250 CWD command succesful");
  }

  該命令改變工作目錄到用戶指定的目錄。

  · CDUP (CHANGE TO PARENT DIRECTORY) 命令處理代碼如下:

  if(str.startsWith("CDUP")){
  int n = dir.lastIndexOf("/");
  dir = dir.substring(0,n);
  out.println("250 CWD command succesful");
  }

  該命令改變當前目錄為上一層目錄。

  · QUIT命令處理代碼如下:

  if(str.startsWith("QUIT")) {
  out.println("GOOD BYE");
  done = true;
  }

  該命令退出及關閉與服務器的連接,輸出GOOD BYE。

  (2) 傳輸參數命令

  · Port命令處理代碼如下:

  if(str.startsWith("PORT")) {
  out.println("200 PORT command successful");
  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");
  }

  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[] dirStructure = new String[10];
  dirStructure= file.list();
  String strType="";
  for(int i=0;iif( dirStructure[i].indexOf(".") == -1) { strType = "d ";}
   else
   {strType = "- ";}
   out2.println(strType+dirStructure[i]);
  }
  tempSocket.close();
  out.println("226 transfer complete");
  }
  catch(IOException e){}

  LIST 命令用于向客戶端返回服務器中工作目錄下的目錄結構,包括文件和目錄的列表。處理這個命令時,先創建一個臨時的套接字向客戶端發送目錄信息。這個套接字的目的端口號缺省為1,然后為當前工作目錄創建File 對象,利用該對象的list()方法得到一個包含該目錄下所有文件和子目錄名稱的字符串數組,然后根據名稱中是否含有文件名中特有的“.”來區別目錄和文件。最后,將得到的名稱數組通過臨時套接字發送到客戶端。
您可能感興趣的文章:
  • 把WebLogic EJB程序遷移到JBoss上
  • java實現將文件上傳到ftp服務器的方法
  • 基于Java web服務器簡單實現一個Servlet容器
  • 簡單實現Java web服務器
  • JavaWeb開發入門第二篇Tomcat服務器配置講解
  • Java中通過jsch來連接遠程服務器執行linux命令
  • weblogic 8.1下重新編譯java類但不用重啟服務器的方法
  • jboss配置方法簡明教程

標簽:馬鞍山 岳陽 紅河 亳州 大興安嶺 武威 拉薩 鄭州

巨人網絡通訊聲明:本文標題《用Java實現FTP服務器解決方案》,本文關鍵詞  用,Java,實現,FTP,服務器,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《用Java實現FTP服務器解決方案》相關的同類信息!
  • 本頁收集關于用Java實現FTP服務器解決方案的相關信息資訊供網民參考!
  • 推薦文章
    校园春色亚洲色图_亚洲视频分类_中文字幕精品一区二区精品_麻豆一区区三区四区产品精品蜜桃
    亚洲五月六月丁香激情| 国产性天天综合网| 99久久伊人精品| 亚洲自拍另类综合| 中文字幕一区av| 中文字幕日本乱码精品影院| 国产精品久久久久久户外露出| 国产日韩欧美精品在线| 国产精品免费视频一区| 亚洲色图欧美偷拍| 久久精品国产秦先生| 国产午夜亚洲精品羞羞网站| 欧美日韩国产三级| 3d成人动漫网站| 欧美日韩视频第一区| 日韩一区二区三区精品视频| 日韩精品一区二区三区视频在线观看 | 日韩欧美三级在线| 日韩免费高清视频| 国产片一区二区| 一二三四区精品视频| 日本怡春院一区二区| 国产一区二区在线影院| 成人av网址在线观看| 欧美三级中文字幕| 久久尤物电影视频在线观看| 国产精品网站导航| 日韩国产精品91| 懂色av中文一区二区三区| 色老综合老女人久久久| 欧美本精品男人aⅴ天堂| 亚洲欧美影音先锋| 麻豆视频观看网址久久| 91免费精品国自产拍在线不卡| 91精品国产综合久久香蕉麻豆| 国产喷白浆一区二区三区| 一片黄亚洲嫩模| 国产最新精品免费| 欧美日韩精品一区视频| 国产精品久久久久桃色tv| 天天做天天摸天天爽国产一区| 国产精品一区二区在线观看网站 | 精品一区二区在线视频| av不卡免费在线观看| 日韩一区二区三区免费看| 亚洲精品免费在线观看| 国产一区二区三区免费观看| 精品视频一区 二区 三区| 国产精品国产三级国产aⅴ原创 | 日韩欧美在线影院| 亚洲激情自拍偷拍| 成人丝袜18视频在线观看| 欧美一级高清片| 亚洲一线二线三线视频| 成人av免费在线| 国产欧美日本一区视频| 精品系列免费在线观看| 91麻豆精品国产综合久久久久久 | 91网站最新地址| 欧美精品一区二区在线播放| 亚洲第四色夜色| 成人爱爱电影网址| 国产精品欧美一区喷水| 国产乱子伦视频一区二区三区 | 97久久精品人人爽人人爽蜜臀| 2017欧美狠狠色| 久久99日本精品| 日韩一区二区中文字幕| 天天av天天翘天天综合网| 欧美日韩国产大片| 亚洲va欧美va国产va天堂影院| 色综合咪咪久久| 亚洲制服丝袜在线| 欧美日韩性生活| 香蕉久久夜色精品国产使用方法| 欧美欧美欧美欧美首页| 日韩av二区在线播放| 日韩欧美不卡一区| 国产一区在线观看视频| 国产日韩欧美在线一区| 成人av网址在线观看| 亚洲女与黑人做爰| 欧美性猛交xxxxxx富婆| 亚洲成av人综合在线观看| 制服丝袜av成人在线看| 国产美女在线观看一区| 国产精品污www在线观看| 成人黄色软件下载| 亚洲制服丝袜在线| 欧美mv和日韩mv国产网站| 国产永久精品大片wwwapp| 国产精品进线69影院| 色婷婷综合久久久| 天天综合网 天天综合色| 欧美va亚洲va国产综合| 成人av在线观| 日本中文一区二区三区| 国产丝袜美腿一区二区三区| 91性感美女视频| 日精品一区二区三区| 久久久www成人免费无遮挡大片| 99久久久国产精品| 婷婷综合另类小说色区| 26uuu国产一区二区三区| 99久久精品免费观看| 日韩综合小视频| 亚洲国产精品av| 91精品国产免费| 播五月开心婷婷综合| 日韩av成人高清| 国产精品久久久久婷婷二区次| 欧美军同video69gay| 成人一区二区视频| 亚洲mv大片欧洲mv大片精品| 亚洲国产精品精华液ab| 欧美电影在哪看比较好| 成人免费视频免费观看| 日韩黄色在线观看| 亚洲精品中文在线| 久久精品在线观看| 日韩欧美不卡在线观看视频| 91美女视频网站| 福利一区二区在线| 秋霞电影网一区二区| 一区二区三区中文字幕电影| 久久久久久黄色| 日韩欧美国产电影| 在线成人免费视频| 欧美少妇xxx| 99久久国产综合色|国产精品| 国产一区二区三区久久悠悠色av| 亚洲国产裸拍裸体视频在线观看乱了 | 2024国产精品| 日韩精品一区二区三区视频在线观看 | 日韩欧美色综合| 欧美日韩高清一区二区不卡| 一本色道久久综合精品竹菊| 国产福利一区二区| 国内精品伊人久久久久影院对白| 亚洲.国产.中文慕字在线| 亚洲情趣在线观看| 亚洲日穴在线视频| 亚洲欧美日韩在线播放| 国产精品黄色在线观看| 国产精品卡一卡二| 欧美国产精品专区| 国产精品理论片| 国产精品久久看| 亚洲色图视频网| 亚洲午夜久久久久久久久电影网| 亚洲人成精品久久久久久| 自拍视频在线观看一区二区| 中文字幕欧美一区| 亚洲一区自拍偷拍| 亚洲福利视频导航| 日韩av电影免费观看高清完整版在线观看| 亚洲va国产天堂va久久en| 日本午夜精品视频在线观看 | 欧美变态tickle挠乳网站| 91精品国产手机| 日韩视频在线你懂得| 欧美精品一区视频| 中文在线一区二区| 亚洲国产欧美日韩另类综合| 五月天国产精品| 男女性色大片免费观看一区二区 | 国产精品欧美久久久久无广告| 欧美经典一区二区| 亚洲美女视频在线观看| 天堂一区二区在线| 国产精品一区二区久激情瑜伽| 波多野结衣精品在线| 欧美亚洲国产bt| 亚洲精品一区二区三区精华液| 成人欧美一区二区三区白人| 亚洲与欧洲av电影| 精品无人码麻豆乱码1区2区| aaa国产一区| 欧美精品高清视频| 久久九九国产精品| 一区二区成人在线视频| 蜜桃av噜噜一区| 成人动漫在线一区| 欧美一级高清片| 综合自拍亚洲综合图不卡区| 午夜在线电影亚洲一区| 国产美女在线精品| 欧美三电影在线| 久久久精品欧美丰满| 亚洲成年人影院| 波多野结衣视频一区| 日韩欧美国产1| 亚洲国产成人av网| 成人av手机在线观看| 欧美一级高清大全免费观看| 18欧美乱大交hd1984| 精品一区二区三区影院在线午夜 | 亚洲高清在线精品| 国产一区二区毛片| 欧美日韩中字一区|