top
Loading...
用InternetTransfer編寫FTP程
〕I賢娜碩級訤TP熟悉得不能再熟悉了,它是文件傳輸協議的英文縮寫,所謂文件傳輸協議就是人們規定的在網絡間傳輸文件的一組規定,里面規定了數據包的格式、數據包頭部結構、命令結構等等。其實要想實現FTP的功能并不是很難,下面我們就來介紹一下如何作一個簡單的Windows界面的FTP程序。
其實我們常用的VC和VB等開發工具就可以輕松搞定,下面我們就來說說在VB中使用Microsoft Internet Transfer 控件實現FTP的功能。
Internet Transfer控件,支持HTTP(超文本傳輸協議)和FTP(文件傳輸協議),超文本傳輸協議就是我們的瀏覽器傳輸網頁時使用的協議,也就是說你也可以用它作一個瀏覽器。我們這里主要討論文件傳輸協議FTP。
首先創建一個新工程,在你的工具箱上添加Microsoft Internet Transfer 控件,并放到你的主窗體上,注意看它的屬性:
Protocol指所用的協議,我們這里選2-icFTP,就是FTP協議。
UserName和Password是這樣的:UserName和Password都給null或“"時,發送到FTP Server的UserName是“anonymous",Password是用戶的Email,當UserName給null或“",而Password為非空字符串時是錯誤的,其他情況正常。
RemoteHost寫FTP Server(就是你要連到的那臺主機,你可以在程序中動態地給這個屬性賦值,以適應連接到不同的主機上)的域名地
址或IP,RemotePort在你指定FTP協議時自動被設置成21,URL屬性由RemoteHost、RemotePort、Protocol等幾個屬性內容組合而成,如果前面已經給出這些值,VB會自動生成URL,以上這些屬性均可以在程序中動態賦值,使你可以更靈活地運用這個控件。
下面說說這個控件的方法(Method):
1、OpenURL,調用該方法會連通FTP Server屬性中指定的主機,并返回它的Welcom Message,一般是一些歡迎詞和當前有多少用戶登錄等信息。
2、Execute方法用于執行對遠程服務器的請求,它能發送對特定協議有效的請求,對于FTP協議來說,有效的操作有:
CD file1
改變目錄。改變到 file1 中指定的目錄。
CDUP
改變到父目錄。等效于“CD...”
CLOSE
關閉當前的 FTP 連接。
DELETE file1
刪除 file1 中指定的文件。
DIR,LS file1
搜索 file1 中指定的目錄(允許用通配符,但要使用遠程主機的語法)。如果沒有指定 file1,將返回當前的整個工作目錄。使用 Ge unk 方法返回目錄數據。
GET,RECV file1 file2
檢索 file1 中指定的遠程文件,并創建 file2 中指定的新本地文件。
MKDIR file1
創建目錄。創建 file1 中指定的目錄。創建是否成功取決于用戶在遠程主機上的權限。
PUT ,SEND file1 file2
復制 file1 指定的本地文件到 file2 指定的遠程主機上。
PWD
打印工作目錄。返回當前目錄名。使用 GetChunk 方法返回數據。
QUIT
終止當前用戶。
RENAME file1 file2
將 file1 中命名的遠程文件重命名為 file2 中指定的新名稱。成功與否取決于用戶在遠程主機上的權限。
RMDIR file1
刪除目錄。刪除 file1 中指定的遠程目錄。成功與否取決于用戶在遠程主機上的權限。
SIZE file1
返回 file1 指定的目錄的大小。
舉個例子:
Inet1.Execute “",“dir"
debug.print Inet1.GetChunk 這一句將打印出上一句dir的結果。
Inet1.Execute “",“Get file1 C:File1" 這個命令會把對方c:File1的文件取到本機當前目錄下(這里假設對方是windows base 的機器,并且有c:File1的文件)。
下面說說該控件唯一的事件StateChanged。
當這個FTP連接中狀態發生了改變,如登錄成功、命令接收成功、斷線等等都會引發該事件。該事件的處理函數有一個參數state,表明當前連接狀態,它的值定義如下:
值 標識符 意義
0 icNone 無狀態可報告。
1 icHostResolvingHost 該控件正在查詢所指定的主機的 IP 地址。
2 icHostResolved 該控件已成功地找到所指定的主機的 IP 地址。
3 icConnecting 該控件正在與主機連接。
4 icConnected 該控件已與主機連接成功。
5 icRequesting 該控件正在向主機發送請求。
6 icRequestSent 該控件發送請求已成功。
7 icReceivingResponse 該控件正在接收主機的響應。
8 icResponseReceived 該控件已成功地接收到主機的響應。
9 icDisconnecting 該控件正在解除與主機的連接。
10 icDisconnected 該控件已成功地與主機解除了連接。
11 icError 與主機通訊時出現了錯誤。
12 icResponseCompleted 該請求已經完成,并且所有數據均已接收到。
用Select case 語句處理各個狀態就行了。
怎么樣,是不是很簡單呀,一個簡單的FTP你只須建立連接,從用戶讀取命令,用Execute方法將命令傳送到對方主機就可以了,剩下的活都有Inet控件幫你搞定,但是要作得好用,還要處理各種網絡錯誤,用遞歸處理子目錄上載或下載,為用戶建立FTP服務器的地址簿等,這里不做更深一步討論。
作者:http://www.zhujiangroad.com
來源:http://www.zhujiangroad.com
北斗有巢氏 有巢氏北斗