AS/400上的FTP

duhaiyang發表於2007-12-15

上的FTP

FTP是如何工作的

FTP是基於客戶-伺服器模型而設計的。客戶和伺服器之間利用TCP直接連線。與其它客戶-伺服器模型不同的是:FTP客戶與伺服器之間是要建立雙重連線:一個是控制連線,一個是資料連線。建立雙重連線的原因在於FTP是一個互動會話系統,某客戶每次呼叫FTP,便與伺服器建立一個會話,會話以控制連線來維持,直到退出FTP。控制連線負責傳輸控制資訊,尤其是客戶客戶命令(比如檔案傳輸命令等等)。利用控制命令,客戶可以向伺服器提出無數次的請求(一個客戶命令就是一個請求)。客戶每提出一個請求,伺服器再與客戶建立一個資料連線,進行實際的資料(比如檔案)傳輸。一旦資料傳輸完成,資料連線會話就被撤銷,但控制連線依然存在,客戶可以繼續發出命令。直到牢記鍵入CLOSE命令撤銷控制連線,再鍵入QUIT退出FTP會話。此時雙方控制程式就不再存在了。

FTP連線的建立

在一個FTP會話中,需要建立一個控制連線和若干個資料連線。

建立控制連線的過程大家都很熟悉。FTP伺服器的公認埠是21。客戶控制程式申請一個隨機分配的本地埠後,用常規的方法可以與伺服器埠21建立一個連線。

資料連線的建立就沒有那麼簡單了。在建立資料連線的過程中,客戶控制程式反客為主,成為連線的接收者,而伺服器資料傳輸程式成了連線的請求者。作為一個新的子程式,伺服器傳輸程式可以申請一個新的埠號來建立自己的相關連線(一般是利用FTP的保留埠號20),而它向哪個客戶埠傳送連線請求呢?要知道客戶是沒有公認埠的,這時就要利用到控制連線,客戶控制程式透過控制連線告知伺服器程式自己的資料連線埠號,伺服器控制程式將它轉告自己的資料傳輸程式,伺服器資料傳輸程式便可以利用它與客戶建立資料連線。

FTP命令集

!”或者“*SYSCMD:使用者可以在FTP模式中執行本地AS/400的命令。在實際工作中,這一命令非常有用,你不用退出FTP模式就可以直接執行本地AS/400的命令。

DIR”:列出遠端AS/400某個目錄中的FILESMEMBERS。若你執行了“PUT”操作,用“DIR”命令檢視是否將檔案傳到了遠端AS/400中。

PWD”:列出遠端系統的當前目錄中的FILESMEMBERS

LPWD”:列出本地系統的當前工作目錄中的FILESMEMBERS

PUT”:將檔案從本地系統傳送到遠端系統。

MPUT”:將多個檔案從本地系統傳送到遠端系統。

GET”:從遠端系統傳檔案到本地系統。

MGET”:從遠端系統傳多個檔案到本地系統。

ASCII”:改變到ASCII模式。

BINARY”:改變到BINARY模式。

EBCDIC”:改變到EBCDIC模式。

特別注意:將含有數值型別的檔案從AS/400傳送到ASCII系統時,應將檔案中的數值欄位改為ZONED型別,而不是PACKED型別,否則將發生不可預測的結果。

RENAME”:更改遠端系統中的檔名。

QUOTE”:執行遠端伺服器端的命令而不用重新登入遠端系統。

LCD”:改變本地系統的當前目錄。

CD”:改變遠端系統的當前目錄。

CDUP”:進入遠端系統的父目錄。

LOCSTAT”:顯示本地狀態資訊。

配置AS/400 FTP伺服器

使用者要配置AS/400 FTP伺服器中,需要有*IOSYSCFG特權。

A、配置TCP/IP

B、修改FTP屬性。 命令是CHGFTPA(對QUSRSYS/QATMFTP.CONFIG資料庫檔案進行修改)。

主要引數說明:

Autostart Servers : Autostart Servers*YES時,一旦TCP/IP啟動,FTP伺服器也將自動啟動。

Number of Initial Servers: FTP伺服器初始啟動數量。根據FTP的流量而定,初始值為3一般就足夠用了。

Inactivity Timeout: 指出FTP客戶端與伺服器端在多少秒沒有互動後,連線將自動斷開。預設值為300秒(5分鐘)。

Coded character set identifyier: 預設值為00819,所有被傳入的ASCII字元將被翻譯成EBCDIC 500內碼表。也可以制定你自己的轉換表。

Initial name format: 預設值為*LIBL,將所有FTP伺服器的命名形式設為NAMEFMT0;若此值為*PATH,則NAMEFMT=1

Initial directory: 預設值為*CURLIB,以登入FTP伺服器的使用者的當前目錄為FTP會話的當前目錄;若此值為*HOMEDIR時,FTP會話的目錄以使用者簡要表的HOMEDIR引數為準。

New file CCSID: 指定使用者FTP建立檔案的CCSID值。

啟動與停止FTP伺服器

    手工啟動FTP伺服器,在AS/400命令列輸入:

STRTCPSVR *FTP

手工停止所有FTP伺服器,在AS/400命令列輸入:

ENDTCPSVR *FTP

注意:

因為直接用ENDTCPSVR *FTP命令停止FTP伺服器,使用者可能會丟失資料,為了保證使用者不丟失資料,應該按照以下步驟進行處理:

A、AS/400的命令列輸入:

WRKACTJOB SBSD(QSYSWRK)

查詢是否有QTFTPxxxxx(xxxxx代表5位數字)存在,若沒有,則可以執行ENDTCPSVR *FTP命令;若有,則黑心做下一步。

B、確保沒有使用者登入FTP伺服器。在AS/400的命令列輸入:

NETSTAT *CNN

查詢是否有LOCAL PORT FTP-CON狀態為ESTABLISHED的連線存在,若沒有則可以執行下一步;若有,應該等等使用者的FTP結束後再執行下一步。

C、AS/400的命令列鍵入:

ENDTCPSVR *FTP

批方式FTP

    FTP被設計為互動式TCP/IP應用,但AS/400也支援FTP批處理方式。

    FTP批處理方式應該按照如下步驟來進行:

3.2.5 建立一個CL程式來啟動FTP

3.2.5 建立一個含有所有互動方式FTP命令的源物理檔案的成員。

3.2.5 提交批作業執行這個CL程式。

檢查結果。[@more@]

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/52450/viewspace-993889/,如需轉載,請註明出處,否則將追究法律責任。

相關文章