導航:首頁 > 程序命令 > ftpretr命令

ftpretr命令

發布時間:2023-05-01 05:22:48

1. ftp怎麼設置實時編輯

FTP 實時編輯可以通過激活 FTP 的被動模式來實現,具體步驟如下:

1. 連接 FTP 伺服器;
2. 進入被動模式,可以使用命令 PASV 或者 PASSIVE 來激活;
3. 使氏派用 PORT 命令設蔽擾置本地埠;
4. 使用 STOR 命令上傳文件;
5. 使用 RETR 命令下載文件;
6. 使用 DELE 命令刪除文件;
7. 使用 QUIT 命令退殲並賀出 FTP 會話。

2. TCP/IP參考模型中,應用層協議常用的有_______。

TCP/IP參考模型中,應用層協議常用的有:Telnet、FTP、SMTP 、HTTP。

1、Telnet協議允許一台機器上的用戶,登錄到遠程機器上,並進行工作;

2、FTP協議提供了將文件從一台機器上移到另一台機器上的方法;

3、SMTP協議用於電子郵件的收發;

4、HTTP協議用於在WWW上獲取主頁。

(注意:DNS協議同時使用了TCP53埠和UDP53埠。DNS協議在UDP53埠上提供域名解析服務,在TCP53埠上提供DNS區域文件傳輸服務。)

(2)ftpretr命令擴展閱讀:

1、Telnet協議(TELecommunications NETwork,遠程登錄協議)

Telnet協議是TCP/IP協議家族中的一員,是Internet遠程登錄服務的標准協議和主要方式。它為用戶提供了在本地計算機上完成登錄遠程主機工作的能力。在終端使用者的電腦上使用telnet程序,用它連接到伺服器。用於實現遠程登錄功能。

終端使用者可以在telnet程序中輸入命令,這些命令會在伺服器上運行,就像直接在伺服器的控制台上輸入一樣。可以在本地就能控制伺服器。要開始一個telnet會話,必須輸入用戶名和密碼來登錄伺服器。

2、FTP協議(File Transfer Protocol,文件傳輸協議)

基於客戶伺服器模式,FTP協議包括兩個組成部分,其一為FTP伺服器,其二為FTP客戶端,FTP協議提供了互動式的訪問,面向連接,使用TCP/IP更加可靠地進行運輸服務。主要功能:減少/消除不同操作系統下文件的不兼容性問題。

在FTP交互的過程中,客戶端通過命令字來告訴伺服器相關的信息。常用的有訪問控制命令USER,PASS、CWD、QUIT 等;傳輸參數命令PORT、PASV、TYPE、STRU、MODE五種;FTP服務命令RETR、STOR、LIST、ABOR 等二十種。

3、SMTP 協議(Simple Mail Transfer Protocol,簡單郵件傳送協議)

基本功能:寫信、傳送報告、報告傳送情況、顯示信件、接收方處理信件 。

SMTP是一種提供可靠且有效電子郵件傳輸的協議。SMTP是建模在FTP文件傳輸服務上的一種郵件服務,SMTP伺服器在默認埠25上監聽客戶請求,主要用於傳輸系統之間的郵件信息。是一種面向連接的Client/Server模式。

4、DNS協議 (Domain Name Service ,域名服弊友務協議)

由數字組成的 IP 地址很難記憶,所以我們上網使用網站 IP 地址的別名——域名。實際使用中,域名與 IP 地址是對應的,這種對應關系保存在DNS 伺服器之中。

在瀏覽器中輸入一個域名後,會有 DNS 伺服器將域名解析為對應的 IP 地址。注意這和網路層的 ARP 協議的不同之處:DNS 提供的是域名與 IP 地址的對應關系,而 ARP 提供的是 IP 地址和 MAC 地址的對應關系。

5、HTTP協議(Hyper Text Transfer Protocol,超文本傳輸協議)

它是基於 TCP的可靠租明槐傳輸,採用的是客戶端/服槐輪務器的工作模式。瀏覽器向伺服器發送請求,而伺服器回應相應的網頁,用於從萬維網(WWW:即World Wide Web)伺服器傳輸超文本到本地瀏覽器的傳送協議。

在 HTTP 通信過程中,首先由客戶端向伺服器發起建立鏈接的請求,通過 TCP三次握手來完成,然後客戶端向伺服器發出請求,告訴伺服器想得到的信息。伺服器通過響應返回客戶端需要的信息。最後通過 TCP 四次握手關閉鏈接,從而完成一次基本的通信過程。

3. 使用Java實現FTP伺服器

FTP是Internet 上用來傳送文件的協議 在Internet上通過FTP 伺服器可以進行文件的上傳(Upload)或下載(Download) FTP是實時聯機服務 在使用它之前必須是具有該服務早汪的一個用戶(用戶名和口令) 工作時客戶端必須先登錄到作為伺服器一方的計算機上 用戶登錄後可以進行文件搜索和文件傳送等有關操作 如改變當前工作目錄 列文件目錄 設置傳輸參數及傳送文件等 使用FTP可以傳送所有類型的文件 如文本文件 二進制可執行文件 圖象文件 聲音文件和數據壓縮文件等 FTP 命令 FTP 的主要操作都是基於各種命令基礎之上的 常用的命令有 ◆ 設置傳輸模式 它包括ASCⅡ(文本) 和BINARY 二進制模式 ◆ 目錄操作 改變或顯示遠程計算機的當前目錄(cd dir/ls 命令) ◆ 連接操作 open命令用於建立同遠程計算機的連接 close命令用於關閉連接 禪睜隱 ◆ 發送操作 put命令用於傳送文件到遠程計算機 mput 命令用於傳送多個文件到遠程計算機 ◆ 獲取操作 get命令用於接收一個文件 mget命令用於接收多個文件 編程思路 根據FTP的工作原理 在主函數中建立一個伺服器套接字埠 等待客戶端請求 一旦客戶端請求被接受 伺服器程序就建立一個伺服器分線程 處理客戶端的命令 如果客戶賀廳端需要和伺服器端進行文件的傳輸 則建立一個新的套接字連接來完成文件的操作

編程技巧說明 主函數設計 在主函數中 完成伺服器埠的偵聽和服務線程的創建 我們利用一個靜態字元串變數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 != ) { initDir = args[ ]; }else{ initDir = c: ;} int i = ; try{ System out println( ftp server started! ) //監聽 號埠 ServerSocket s = new ServerSocket( ) for( ){ //接受客戶端請求 Socket ining = s accept() //創建服務線程 new ftpServer(ining i) start() i++; } }catch(Exception e){} } 線程類的設計 線程類的主要設計都是在run()方法中實現 用run()方法得到客戶端的套接字信息 根據套接字得到輸入流和輸出流 向客戶端發送歡迎信息 FTP命令的處理 ( ) 訪問控制命令 ◆ user name(user) 和 password (pass) 命令處理代碼如下 if(str startsWith( USER )){ user = str substring( ) user = user trim() out println( Password ) } if(str startsWith( PASS )) out println( User +user+ logged in ) User 命令和 Password 命令分別用來提交客戶端用戶輸入的用戶名和口令 ◆ CWD (CHANGE WORKING DIRECTORY) 命令處理代碼如下 if(str startsWith( CWD )){ String str = str substring( ) dir = dir+ / +str trim() out println( CWD mand succesful ) } 該命令改變工作目錄到用戶指定的目錄 ◆ CDUP (CHANGE TO PARENT DIRECTORY) 命令處理代碼如下 if(str startsWith( CDUP )){ int n = dir lastIndexOf( / ) dir = dir substring( n) out println( CWD mand succesful ) } 該命令改變當前目錄為上一層目錄 ◆ QUIT命令處理代碼如下 if(str startsWith( QUIT )) { out println( GOOD BYE ) done = true;} 該命令退出及關閉與伺服器的連接 輸出GOOD BYE

( ) 傳輸參數命令 ◆ Port命令處理代碼如下 if(str startsWith( PORT )) { out println( PORT mand successful ) int i = str length() ; int j = str lastIndexOf( ) int k = str lastIndexOf( j ) String str str ;str = ; str = ;for(int l=k+ ; lstr = str + str charAt(l) } for(int l=j+ ;l<=i;l++){ str = str + str charAt(l) } tempPort = Integer parseInt(str ) * * +Integer parseInt(str ) } 使用該命令時 客戶端必須發送客戶端用於接收數據的 位IP 地址和 位 的TCP 埠號 這些信息以 位為一組 使用十進制傳輸 中間用逗號隔開 ◆ TYPE命令處理代碼如下 if(str startsWith( TYPE )){ out println( type set ) } TYPE 命令用來完成類型設置 ( ) FTP 服務命令 ◆ RETR (RETEIEVE) 和 STORE (STORE)命令處理的代碼 if(str startsWith( RETR )){ out println( Binary data connection ) str = str substring( ) str = str trim() RandomAccessFile outFile = newRandomAccessFile(dir+ / +str r ) Socket tempSocket = new Socket(host tempPort) OutputStream outSocket= tempSocket getOutputStream() byte byteBuffer[]= new byte[ ]; int amount; try{ while((amount = outFile read(byteBuffer)) != ){

outSocket write(byteBuffer amount) } outSocket close() out println( transfer plete ) outFile close() tempSocket close() } catch(IOException e){} } if(str startsWith( STOR )){ out println( Binary data connection ) str = str substring( ) str = str trim() RandomAccessFile inFile = newRandomAccessFile(dir+ / +str rw ) Socket tempSocket = new Socket(host tempPort) InputStream inSocket= tempSocket getInputStream() byte byteBuffer[] = new byte[ ]; int amount; try{ while((amount =inSocket read(byteBuffer) )!= ){ inFile write(byteBuffer amount) } inSocket close() out println( transfer plete ) inFile close() tempSocket close() } catch(IOException e) {} } 文件傳輸命令包括從伺服器中獲得文件RETR和向伺服器中發送文件STOR 這兩個命令的處理非常類似 處理RETR命令時 首先得到用戶要獲得的文件的名稱 根據名稱創建一個文件輸入流 然後和客戶端建立臨時套接字連接 並得到一個輸出流 隨後 將文件輸入流中的數據讀出並藉助於套接字輸出流發送到客戶端 傳輸完畢以後 關閉流和臨時套接字 STOR 命令的處理也是同樣的過程 只是方向正好相反 ◆ DELE (DELETE)命令處理代碼如下 if(str startsWith( DELE )){ str = str substring( ) str = str trim() File file = new File(dir str) boolean del = file delete() out println( delete mand successful ) } DELE 命令用於刪除伺服器上的指定文件 ◆ LIST命令處理代碼如下 if(str startsWith( LIST )) { try{ out println( ASCII data ) Socket tempSocket = new Socket(host tempPort) PrintWriter out = new PrintWriter(tempSocket getOutputStream() true) File file = new File(dir) String[] dirStructure = new String[ ]; dirStructure= file list() String strType= ; for(int i= ;iif( dirStructure[i] indexOf( ) == ) { strType = d ;} else{ strType = ;} out println(strType+dirStructure[i]) } tempSocket close() out println( transfer plete ) } catch(IOException e) {} LIST 命令用於向客戶端返回伺服器中工作目錄下的目錄結構 包括文件和目錄的列表 處理這個命令時 先創建一個臨時的套接字向客戶端發送目錄信息 這個套接字的目的埠號預設為 然後為當前工作目錄創建File 對象 利用該對象的list()方法得到一個包含該目錄下所有文件和子目錄名稱的字元串數組 然後根據名稱中是否含有文件名中特有的 來區別目錄和文件 最後 將得到的名稱數組通過臨時套接字發送到客戶端 lishixin/Article/program/Java/hx/201311/26847

4. ftp命令中有沒有刪除文件夾,包括該文件夾下的文件一起刪除的命令(VC)

命令 描述
ABOR 中斷數據連接程序
ACCT <account> 系統特權帳號
ALLO <bytes> 為伺服器上的文件存儲器分配位元組
APPE <filename> 添加文件到伺服器同名文件
CDUP <dir path> 改變伺服器上的父目錄
CWD <dir path> 改變伺服器上的工作目錄
DELE <filename> 刪除伺服器上的指定文件
HELP <command> 返回指定命令信息
LIST <name> 如果是文件名列出文件信息,如果是目錄則列出文件列表
MODE <mode> 傳輸模式(S=流模式,B=塊模式,C=壓縮模式)
MKD <directory> 在伺服器上建立指定目錄
NLST <directory> 列出指定目錄內容
NOOP 無動作,除了來自伺服器上的承認
PASS <password> 系統登錄密碼
PASV 請求伺服器等待數據連接
PORT <address> IP 地址和兩位元組的埠 ID
PWD 顯示當前工作目錄
QUIT 從 FTP 伺服器上退出登錄
REIN 重新初始化登錄狀態連接
REST <offset> 由特定偏移量重啟文件傳遞
RETR <filename> 從伺服器上找回(復制)文件
RMD <directory> 在伺服器上刪除指定目錄
RNFR <old path> 對舊路徑重命名
RNTO <new path> 對新路徑重命名
SITE <params> 由伺服器提供的站點特殊參數
SMNT <pathname> 掛載指定文件結構
STAT <directory> 在當前程序或目錄上返回信息
STOR <filename> 儲存(復制)文件到伺服器上
STOU <filename> 儲存文件到伺服器名稱上
STRU <type> 數據結構(F=文件,R=記錄,P=頁面)
SYST 返回伺服器使用的操作系統
TYPE <data type> 數據類型(A=ASCII,E=EBCDIC,I=binary)
USER <username>> 系統登錄的用戶名
這就是FTP協議的命令集,是有刪除指令的,我們老師以前讓我們自己對照著自己編寫過FTP協議,刪除文件時候不分文件或者文件夾的,只要路徑正確就可以刪除,跟你電腦上點右鍵刪除東西一樣,如果是文件夾,內部所有也都會刪除的。

5. ftp無法連接

注意這段話:
227 Entering Passive Mode (60,165,133,154,13,31)
ERROR: [Data]: Connection refused

PASV模式,PORT模式錯誤~!

如果你用的是ftp客戶端軟體請把被動模式選擇上就可以了。

補充:返回值:227 Entering Passive Mode (60,165,133,154,13,31)說明
每一個ftp發送之後,ftp伺服器都會返回一個字元串,其中包括一個返回代碼和一串說明信息。這個返回碼主要是用於判斷命令是否被成功執行了。除此之外,還有一個非常重要的命令的返回。當發送pasv之後,返回「227 entering passive mode (60,165,133,154,13,31)」。這意味著在伺服器上有一個埠被開放,他將為我們後面接著的數據傳輸作好准備,但是我們如何知道該埠號呢,就在(60,165,133,154,13,31)中,前面四位指伺服器的地址,關鍵是最後兩位,將最後第二位乘256再加上最後一位的值就是我們的埠號,也就是13*256+31。取得埠號之後我們就可以用socket連接到這里。這為我們後面的工作作好准備了,因為我們的取得列表,上傳,下載文件都要依靠它來實現。常用的返回如下:

125 data connection already open; transfer starting.

226 transfer complete.

227 entering passive mode (60,165,133,154,13,31).

230 user xxxxx logged in.

331 password required for xxxxx.

425 can』t open data connection.

226 closing data connection.

ftp客戶端編程結構:

前面已提到了ftp命令及其響應信息。其實我們做ftp客戶端工具只攔碧不過是用一個winsocket連接上ftp伺服器,然後象其發送命令。在這個過程中,我們依靠發送——響應的機制。即發送ftp命令——接收返回的響應信息——分析該信息——執行相關操作——發送下一條命令。在一般意義上,有耐衡枯一個socket用來連接ftp伺服器的相關埠(如默認的21),它負責ftp命令的發送和接收返回的響應信息。一些操作如「進入目錄」,「刪除文件」,依靠這個socket發送一條命令就可完成了。然而對於有數據傳輸的操作,主要是顯示遠端目錄列表,上傳、下載文件,我們不得不依靠另一個socket來完成。在進行這種操作之前,必須發送pasv命令,它返回了227開頭的信息,在括弧中有以逗號隔開的六個數字,前四個指伺服器的地址,關鍵是最後兩個,將倒數第二個乘256再加上最後一個數字,其結果就是ftp伺服器開放的用於下一條命令來進行數據傳輸的埠。如我們得到227 entering passive mode (60,165,133,154,13,31),那麼埠號是13*256+31=3359。我們用一個socket來連接這個埠,之後,我們可根據具體的操作(顯示目錄list,上傳文件stor,下載retr)來發送命令。返回的響應代碼為125開頭,也就是連接打開了,可以開始傳輸數據,這時就可用socket的發送或接收方法來傳輸數據。完成之後,伺服器會返回代碼226 transfer complete,表明數據傳輸完成。值得注意的是,我們最好不要一次發送多條命令,例如我們要回到上層目錄並且顯示這個目錄,我們得發送cp,pasv,list,昌洞我們不能一下子發送:cp\r\n, pasv\r\n, list\r\n。 而是發送完cp之後等待其響應代碼,然後再發送後面一條。當pasv返回之後,我們打開另一個socket連接到相關埠上。然後發送list,返回125之後在開始接收數據,最後返回226表明完成。對於上傳和下載也是差不多的過程(下載之前要先取得文件的大小)。

6. apache ftp retr指令怎麼用

首先在運行備清中輸入:ftp ,確定後,就進入了命令提示符下的用戶登錄狀態,然後提示輸入用戶名與密碼,正確輸入後,就進入了ftp命令方式,在提示符下輸入下列的命令,就可以修改密碼,

ftp>quote site pswd 回首團車確認,就會出現密碼修改成功的提示,再用bye命令返回仿芹前就行了

7. FTP/FTP-DATA 關鍵字

1.ftpdata_command 

根據FTP命令通道上使用的命令過濾ftp-data通道。當前支配消持的命令是RETR(獲取文件)和STOR(存儲文件)

語法:

ftpdata_command:(retr|stor)

示例鋒昌:

ftpdata_command:retr

ftpdata_command:stor

簽名示例:

alert ftp-data any any->培基知any any(msg:"FTP store password";filestore;filename:"password";ftpdata_command:stor;sid:3;rev:1;)

2. ftpbounce

檢測FTP bounce 攻擊

語法:ftpbounce

8. 用Java實現FTP伺服器解決方案

FTP 命令 FTP 的主要操作都是基於各種命令基礎之上的 常用的命令有 · 設置傳輸模式 它包括ASCⅡ(文本) 和BINARY 二進制模式;· 目錄操作 改變或顯示遠程計算機的當前目錄(cd dir/ls 命令);· 連接操作 open命令用於建立同遠程計算機的連接 close命令用於關閉連接;· 發送操作 put命令用於傳送文件到遠程計算機 mput 命令用於傳送多滾隱個文件到遠程計算機;· 獲取操作 get命令用於接收一個文件 mget命令用於接收多個文件 編程思路 根據FTP 的工作原理 在主函數中建立一個伺服器套接字埠 等待客戶端請求 一旦客戶端請求被接受 伺服器程序就建立一個伺服器分線程 處理客戶端的命令 如果客戶端需要和伺服器端進行文件的傳輸 則建立一個新的套接字連接來完成文件的操作 編程技巧說明 主函數設計在主函數中 完成伺服器埠的偵聽和服務線程的創建 我們利用一個靜態字元串變數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 != ) {initDir = args[ ];}else{ initDir = c: ;}int i = ;try{System out println( ftp server started! );//監聽 號埠ServerSocket s = new ServerSocket( );for(;;){//接受客戶端請求Socket ining = s accept();//創建服務御尺線程new ftpServer(ining i) start();i++;}}catch(Exception e){}} 線程類的設計線程類的主要設計都是在run()方法中實現 用run()方法得到客戶端的套接字信息 根據套接字得到輸入流和輸出流 向客戶端發送歡迎信息 FTP 命令的處理( ) 訪問控制命令· user name(user) 和 password (pass) 命令處理代碼如下 if(str startsWith( USER )){user = str substring( );user = user trim();out println( Password );}if(str startsWith( PASS ))out println( User +user+ logged in );User 命令和 Password 命令分別用來提交客戶端用戶輸入的用戶名和口令 · CWD (CHANGE WORKING DIRECTORY) 命令處理代碼如下 if(str startsWith( CWD )){String str = str substring( );dir = dir+ / +str trim();out println( CWD mand succesful );}該命令改變工作目錄到用戶指定的目錄 · CDUP (CHANGE TO PARENT DIRECTORY) 命令處理代碼如下 if(str startsWith( CDUP )){int n = dir lastIndexOf( / );dir = dir substring( n);out println( CWD mand succesful );}該命令改變當前目錄為上一層目錄大拆廳 · QUIT命令處理代碼如下 if(str startsWith( QUIT )) {out println( GOOD BYE );done = true;}該命令退出及關閉與伺服器的連接 輸出GOOD BYE ( ) 傳輸參數命令· Port命令處理代碼如下 if(str startsWith( PORT )) {out println( PORT mand successful );int i = str length() ;int j = str lastIndexOf( );int k = str lastIndexOf( j );String str str ;str = ;str = ;for(int l=k+ ;lstr = str + str charAt(l);}for(int l=j+ ;l<=i;l++){str = str + str charAt(l);}tempPort = Integer parseInt(str ) * * +Integer parseInt(str );}使用該命令時 客戶端必須發送客戶端用於接收數據的 位IP 地址和 位 的TCP 埠號 這些信息以 位為一組 使用十進制傳輸 中間用逗號隔開 · TYPE命令處理代碼如下 if(str startsWith( TYPE )){out println( type set );}TYPE 命令用來完成類型設置 ( ) FTP 服務命令· RETR (RETEIEVE) 和 STORE (STORE)命令處理的代碼if(str startsWith( RETR )){out println( Binary data connection );str = str substring( );str = str trim();RandomAccessFile outFile = newRandomAccessFile(dir+ / +str r );Socket tempSocket = new Socket(host tempPort);OutputStream outSocket = tempSocket getOutputStream();byte byteBuffer[]= new byte[ ];int amount;try{while((amount = outFile read(byteBuffer)) != ){outSocket write(byteBuffer amount);}outSocket close();out println( transfer plete );outFile close();tempSocket close();}catch(IOException e){}}if(str startsWith( STOR )){out println( Binary data connection );str = str substring( );str = str trim();RandomAccessFile inFile = newRandomAccessFile(dir+ / +str rw );Socket tempSocket = new Socket(host tempPort);InputStream inSocket = tempSocket getInputStream();byte byteBuffer[] = new byte[ ];int amount;try{while((amount =inSocket read(byteBuffer) )!= ){inFile write(byteBuffer amount);}inSocket close();out println( transfer plete );inFile close();tempSocket close();}catch(IOException e){}}文件傳輸命令包括從伺服器中獲得文件RETR和向伺服器中發送文件STOR 這兩個命令的處理非常類似 處理RETR命令時 首先得到用戶要獲得的文件的名稱 根據名稱創建一個文件輸入流 然後和客戶端建立臨時套接字連接 並得到一個輸出流 隨後 將文件輸入流中的數據讀出並藉助於套接字輸出流發送到客戶端 傳輸完畢以後 關閉流和臨時套接字 STOR 命令的處理也是同樣的過程 只是方向正好相反 · DELE (DELETE)命令處理代碼如下 if(str startsWith( DELE )){str = str substring( );str = str trim();File file = new File(dir str);boolean del = file delete();out println( delete mand successful );}DELE 命令用於刪除伺服器上的指定文件 · LIST命令處理代碼如下 if(str startsWith( LIST )) {try{out println( ASCII data );Socket tempSocket = new Socket(host tempPort);PrintWriter out = new PrintWriter(tempSocket getOutputStream() true);File file = new File(dir);String[] dirStructure = new String[ ];dirStructure= file list();String strType= ;for(int i= ;iif( dirStructure[i] indexOf( ) == ) { strType = d ;}else{strType = ;}out println(strType+dirStructure[i]);}tempSocket close();out println( transfer plete );}catch(IOException e){}LIST 命令用於向客戶端返回伺服器中工作目錄下的目錄結構 包括文件和目錄的列表 處理這個命令時 先創建一個臨時的套接字向客戶端發送目錄信息 這個套接字的目的埠號預設為 然後為當前工作目錄創建File 對象 利用該對象的list()方法得到一個包含該目錄下所有文件和子目錄名稱的字元串數組 然後根據名稱中是否含有文件名中特有的 來區別目錄和文件 最後 將得到的名稱數組通過臨時套接字發送到客戶端 lishixin/Article/program/Java/JSP/201311/19211

9. FTP該如何實現斷點續傳

客戶端的實現步驟如下:
一、下載:
1、向伺服器發送「REST + 本地文件長度」命令,告訴伺服器,客戶端要斷點下載了。這時伺服器還不知道客戶端要下載哪個文件;
要實現FTP的斷點續傳,FTP伺服器必須支持REST指令,這條指令在FTP協議文本RFC959中就已經定義了,不過它不是FTP伺服器必須支持的指令。一般,你可以在下載前使用REST 100命令進行實驗,如果伺服器正常執行了這條命令,說明該伺服器支持FTP斷點續傳。REST後面跟的數表示下載文件的起始位置,而REST 0表示從文件最開始處下載。REST命令本身並不執行下載功能,你仍需要使用RETR命令執行下載工作。
2、向伺服器發送「RETR + 文件名」命令,通知伺服器要下載的文件名,這時伺服器開始定位文件指針讀文件並發送數據。
3、客戶端定位本地文件指針(文件末尾);
4、兩端的准備工作都做完了以後,客戶端創建socket,以被動或非被動方式建立數據通道,循環調用recv接收數據並追加入本地文件;
二、上傳:
1、獲取伺服器上和本地要上傳文件的同名文件大小;
2、向伺服器發送「APPE + 文件名」,通知伺服器,接下來從數據通道發送給你的數據要附加到這個文件末尾。
3、定位本地文件指針(和FTP上文件大小相同的位置)
4、從文件指針處讀數據並發送。
代碼里將斷點上傳和斷點下載放到同一個函數(MoveFile)里,通過get參數說明是上傳還是下載。

10. 請教FTP命令

ftp命令大全

FTP命令是Internet用戶使用最頻繁的命令之一,不論是在DOS還是UNIX操作
系統下使用FTP,都會遇到大量的FTP內部命令,熟悉並靈活應用FTP的內部命令,可
以大大方便使用者,對於現在撥號上網的用戶,如果ISP提供了shell可以使用noh
up,那麼ftp將是你最省錢的上download方式,
ftp的命令行格式為:ftp -v -d -i -n -g[主機名]
-v 顯示遠程伺服器的所有響應信息。
-d 使用調試方式。
-n 限制ftp的自動登錄,即不使用.netrc文件。
-g 取消全局文件名。

ftp使用的內部命令如下(其中括弧表示可選項):
1.![cmd[args]在本地機中執行交互shell、exit回到ftp環境,如!ls*.zip 。
2.¥ macro-ame[args]執行宏定義macro-name。
3.account[password]提供登錄遠程系統成功後訪問系統資源所需的補充口令 。
4.appendlocal-file[remote-file]將本地文件追加到遠程系統主機,若未指定遠程系統文件名,則使用本地文件名。
5.ascii 使用ascii類型傳輸方式。
6.bell每個命令執行完畢後計算機響鈴一次。
7.bin使用二進制文件傳輸方式。
8.bye退出ftp會話過程。
9.case在使用mget時,將遠程主機文件名中的大寫轉為小寫字母。
10.cd remote-dir 進入遠程主機目錄。
11.cp進入遠程主機目錄的父目錄。
12.chmod modefile-name將遠程主機文件file-name的存取方式設置為mode,如chmod 777 a.out。
13.close中斷與遠程伺服器的ftp會話(與open對應)。
14.cr使用asscii方式傳輸文件時,將回車換行轉換為回行。
15.delete remote-file刪除遠程主機文件。
16.debug[debug-value]設置調試方式,顯示發送至遠程主機的每條命令,如debup3,若 設為0,表示取消debug。
17.dir[remote-dir][local-file]顯示遠程主機目錄,並將結果存入local-file。
18.disconnection同close。
19.form format將文件傳輸方式設置為format,預設為file方式。
20.getremote-file[local-file]將遠程主機的文件remote-file傳至本地硬碟的local-file。
21.glob設置mdelete、mget、mput的文件名擴展,預設時不擴展文件名,同命令行的-g參數。
22.hash每傳輸1024位元組,顯示一個hash符號(#)。
23.help[cmd]顯示ftp內部命令cmd的幫助信息,如help get。
24.idle[seconds]將遠程伺服器的休眠計時器設為[seconds]秒。
25.image設置二進制傳輸方式(同binary)
26.lcd[dir]將本地工作目錄切換至dir。
27.ls[remote-dir][local-file]顯示遠程目錄remote-dir,並存入本地local-file。
28.macdef macro-name定義一個宏,遇到macdef下的空行時,宏定義結束。
29.mdelete[remote-file]刪除遠程主機文件。
30.mdir remote-files local-file與dir類似,但可指定多個遠程文件,如mdir*.o.*. zipoutfile。
31.mget remote-files傳輸多個遠程文件。
32.mkdir dir-name 在遠程主機中建一目錄。
33.mls remote-file local-file同nlist,但可指定多個文件名。
34.mode[mode-name]將文件傳輸方式設置為mode-name,預設為stream方式。
35.modtime file-name顯示遠程主機文件的最後修改時間。
36.mput local-file將多個文件傳輸至遠程主機。
37.newerfile-name如果遠程機中file-name的修改時間比本地硬碟同名文件的時間更近,則重傳該文件。
38.nlist[remote-dir][local-file]顯示遠程主機目錄的文件清單,並存入本地硬碟的local-file。
39.nmap[inpatternoutpattern]設置文件名映射機制,使得文件傳輸時,文件中的某些字元相互轉換,
如nmap¥1.¥2.¥3[¥1,¥2].[¥2,¥3],則傳輸文件a1 .a2.a3時,文件名變為a1、a2,
該命令特別適用於遠程主機為非U-NIX機的情況。
40.ntrans[inchars[outchars]設置文件名字元的翻譯機制,如ntrans1R,則文件名LL L將變為RRR。
41.open host[port]建立指定ftp伺服器連接,可指定連接埠。
42.passive進入被動傳輸方式。
43.prompt設置多個文件傳輸時的交互提示。
44.proxyftp-cmd在次要控制連接中,執行一條ftp命令,該命令允許連接兩個ftp伺服器,以在兩個伺服器間傳輸文件。
第一條ftp命令必須為open,以首先建立兩個伺服器間的連接。
45.put local-file[remote-file]將本地文件local-file傳送至遠程主機。
46.pwd顯示遠程主機的當前工作目錄。
47.quit同bye,退出ftp會話。
48.quote arg1,arg2……將參數逐字發至遠程ftp伺服器,如quote syst。
49.recv remote-file[local-file]同get。
50.regetremote-file[local-file]類似於get,但若local-file存在,則從上次傳輸中斷處續傳。
51.rhelp[cmd-name]請求獲得遠程主機的幫助。
52.rstatus[file-name]若未指定文件名,則顯示遠程主機的狀態,否則顯示文件狀態。
53.rename[from][to]更改遠程主機文件名。
54.reset清除回答隊列。
55.restart marker從指定的標志marker處,重新開始get或put,如restart 130。
56.rmdir dir-name刪除遠程主機目錄。
57.runique設置文件名唯一性存儲,若文件存在,則在原文件後加後綴。
58.send local-file[remote-file]同put。
59.sendport設置PORT命令的使用。
60.site arg1,arg2……將參數作為SITE命令逐字發送至遠程ftp主機。
61.size file-name顯示遠程主機文件大小,如site idle 7200。
62.status顯示當前ftp狀態。
63.struct[struct-name]將文件傳輸結構設置為struct-name,預設時使用stream結構。
64.sunique將遠程主機文件名存儲設置為唯一(與runique對應)。
65.system顯示遠程主機的操作系統類型。
66.tenex將文件傳輸類型設置為TENEX機所需的類型。
67.tick設置傳輸時的位元組計數器。
68.trace設置包跟蹤。
69.type[type-name]設置文件傳輸類型為type-name,預設為ascii,如typebinary,設置 二進制傳輸方式。
70.umask[newmask]將遠程伺服器的預設umask設置為newmask,如umask 3。
71.useruser-name[password][account]向遠程主機表明自己的身份,需要口令時,必須輸入口令,如user anonymous my@email。
72.verbose同命令行的-v參數,即設置詳盡報告方式,ftp伺服器的所有響應都將顯示給用戶,預設為on.
73.?[cmd]同help。

那麼如何應用這些命令提高效率呢?下面我舉一個例子,如何利用fttp進行
後台下載,假設你的ISP給你提供了shell並且可以用nohup,你想由fttp.downlo
ad.com/pub/internet/下載一個30M的程序aaa.zip具體步驟如下:
1.用notepad做一個文件如aaa1內容如下
open ftp.dwonload.com user an onymous [email protected]
cd /pub/internet/ i get aaa.zip close bye
2.撥號登錄到你的ISP上。
用telnet 或netterm登錄到shell,一般都在你的home子目錄里bbs~/
3.用fttp上傳aaa1到ISP伺服器你的子目錄。
4. 執行nohup fttp -invd aaa2& 這樣這個進程就被放在ISP伺服器的後台進行了,
如果你想知道情況如何,可以more aaa2就可以知道情況如何了。這時你可以斷線了或干點別的,
估計時間到了(time約=30M/(33.6K/9)s)撥號上去,more aaa2如果顯示成功下載aaa.zip,
就表示aaa.zip已經被下載到ISP的伺服器上了,你再由ISP的伺服器拉回來就相當與點對點了,
記得下載完成後del掉你的文件(aaa.zip),免得浪費ISP資源,它會關掉shell的。

閱讀全文

與ftpretr命令相關的資料

熱點內容
cad命令縮小 瀏覽:154
linux發展史 瀏覽:629
伺服器選用什麼CPU比較好 瀏覽:334
明星怎麼宣傳安卓 瀏覽:953
8255晶元編程 瀏覽:65
java文件bat運行 瀏覽:747
java常見筆試 瀏覽:529
360程序員模式 瀏覽:363
AQS演算法的查詢樹構造 瀏覽:329
小豬微信營銷源碼 瀏覽:12
阿里雲伺服器能連接列印機嗎 瀏覽:175
命令行參考 瀏覽:281
怎麼初步認識編程 瀏覽:208
為什麼程序員都喜歡谷歌 瀏覽:891
壓縮性骨拆能自愈嗎 瀏覽:277
安卓怎麼設置游戲畫面 瀏覽:114
k線上寫字源碼 瀏覽:457
單擊按鈕保存資料源碼 瀏覽:354
華為gt加密卡 瀏覽:213
河北超融合伺服器廠家雲主機 瀏覽:894