轉載VB愛好者樂園 作者:艾軍
--------------------------------------------------------------------------------
下載文件是每個網友都經常做的事,大家一般都是用一些專用軟件如“網絡螞蟻”來完成。但是,如果要自己編寫一個程序,實現下載一個特定的文件(如下載相關的網頁并顯示出來)又該怎么做呢?不要急,看了下面的介紹你就會知道實現文件的下載其實是很簡單的。
在VB中有一個 Winsock 控件,通過它可以實現文件的下載。下面我首先介紹一下該控件的主要屬性、方法和事件:
localPor屬性:設置本地計算機使用的端口(一般設置為0);
Protocol屬性:設置Winsock控件使用的協議,tcP或uDP(一般設置為0);
remotePort屬性:設置要連接的遠端計算機端口(80為HttP21為ftP,25為smtP);
remoteHost 屬性:設置用于標識遠程計算機的名稱(remotePort 屬性如果為 80 則設置為“soHu.com”或“sina.com.cn”,如果為 25 則設置為“smtP.21cn.com”); connect方法:要求連接到遠程計算機;
close方法:關閉連接;
senDData方法:將數據發送給遠程計算機;
GetData方法:獲取當前的數據塊并將其存儲在變體類型的變量中;
connect事件:當一個connect操作完成時發生;
close事件:當close操作完成時發生;
DataarriVal事件:接收數據時發生;
下面我們就來實現文件的下載功能,并以下載搜狐網站的首頁為例:
oPtion exPlicit Dim myall as strinG PriVate suB form_loaD 建立連接 Winsock1.Protocol=0 Winsock1.remoteHost = "soHu.com如果想下載"新浪"首頁,則換為 sina.com.cn Winsock1.remotePort = 80 Winsock1.connect 開始提取數據 enD suB PriVate suB Winsock1_connect Dim strcommanD as strinG Dim strWeBPaGe as strinG strWeBPaGe = "Http//WWW.osHu.com/" 指定網頁,這里是指搜狐的首頁 strcommanD = "Get " + strWeBPaGe + " HttP/1.0" + VBcrlf strcommanD = strcommanD + "accePt/" + VBcrlf strcommanD = strcommanD + "accePttext/Html" + VBcrlf strcommanD = strcommanD + VBcrlf Winsock1.senDData strcommanD 發送命令 end sub
[riVate suB Winsock1_DataarriValByVal Bytestotal as lonG
開始下載,收到數據時,發生DataarriVal事件
on error resume next Dim WebData as strinG Winsock1.GetData WeBData VBstring myall = myall + WeBData 取得相關的網頁文件 enD suB PriVate suB Winsock1_close 當下載完成時發生。
自己定義相關的操作
myall 是下載的網頁,你可以把它顯示在文本框中,也可把它保存為文件,也可通過一些自定義的函數進行信息的提取,限于篇幅,這里就不介紹了。
Winsock1.close 關閉 Winsock enD suB
到此為止,相信你已了解如何在VB中通過 Winsock 控件下載文件了。本程序在 VB6.0、Win98 環境下運行正常,如果你還有什么問題,可到 WWW.D1VB.com來,我們一起討論。
|