明輝手游網(wǎng)中心:是一個(gè)免費(fèi)提供流行視頻軟件教程、在線學(xué)習(xí)分享的學(xué)習(xí)平臺(tái)!

VB5.0環(huán)境下Internet應(yīng)用程序的開發(fā)

[摘要]Internet有強(qiáng)大的通信功能,如文件傳送、遠(yuǎn)程登錄、E-mail、Internet Phone和Internet Fax等,它使傳統(tǒng)的電信產(chǎn)業(yè)發(fā)生了巨大變化。同時(shí),它是一個(gè)大型信息資源庫,所含信...
   Internet有強(qiáng)大的通信功能,如文件傳送、遠(yuǎn)程登錄、E-mail、Internet Phone和Internet Fax等,它使傳統(tǒng)的電信產(chǎn)業(yè)發(fā)生了巨大變化。同時(shí),它是一個(gè)大型信息資源庫,所含信息不僅包羅萬象,而且日新月異。尤其是WWW(World Wide Web)的出現(xiàn)使全球信息聯(lián)成一體,并使千家萬戶可以隨時(shí)共享這一人類偉大的資源。WWW的大規(guī)模興起源于商業(yè)應(yīng)用的普及和用戶界面友好,越來越多的公司企業(yè)利用WWW網(wǎng)頁作為商品促銷或?qū)蛻舴⻊?wù)的手段。不難想像,對(duì)于任何一位軟件開發(fā)愛好者來說,學(xué)習(xí)開發(fā)Internet應(yīng)用程序已經(jīng)是一件刻不容緩的事情了。眾所周知,使用Microsoft Visual Basic 5.0增強(qiáng)的Internet功能使我們能夠在很短的時(shí)間內(nèi)開發(fā)出實(shí)用的Internet網(wǎng)絡(luò)應(yīng)用程序,本文擬向讀者介紹的就是有關(guān)這方面的內(nèi)容。  

  Visual Basic是Microsoft公司面向Windows程序員的RAD(Rapid Application Development)工具,它的一大特點(diǎn)就是隱藏了很多紛繁而令人厭倦的Windows編程細(xì)節(jié),而使開發(fā)人員將重點(diǎn)放在應(yīng)用程序的功能上。當(dāng)人們談及Internet 應(yīng)用程序的時(shí)候,由于類型太多,很難明確它們具體指的是什么,因此選擇工具之前先了解所需要的應(yīng)用程序類型是很重要的。Visual Basic為Internet的各種開發(fā)工作都提供了專門的技術(shù),下表對(duì)Internet的各種用途進(jìn)行了分類,并列舉了完成各類任務(wù)所需的相應(yīng)的Visual Basic工具。  

    

  表1.  

  Internet任務(wù) Visual Basic工具  

  計(jì)算機(jī)間的直接通信 WinSock控件(MSWINSCK.OCX)  

  文件傳輸 Internet Transfer控件(MSINET.OCX)  

  Web瀏覽 WebBrowser控件(SHDOCVW.DLL)  

  在Microsoft Internet Explorer中運(yùn)行的應(yīng)用程序的開發(fā) ActiveX文檔  

  使用 Internet安裝程序發(fā)布應(yīng)用程序 Setup Wizard  

  用于超文本標(biāo)記語言頁面的組件開發(fā) ActiveX控件  

  數(shù)據(jù)庫應(yīng)用程序 ActiveX文檔  

   具有數(shù)據(jù)控件或使用ADODB對(duì)象的ASP  

   從服務(wù)器到客戶機(jī)的事務(wù)/數(shù)據(jù)傳輸ASP  

    

  另一方面,隨著WWW技術(shù)日新月異的發(fā)展,利用WWW技術(shù)構(gòu)造企業(yè)內(nèi)部網(wǎng)即Intranet,已經(jīng)成為人們的一種共識(shí),甚至Intranet應(yīng)用程序的數(shù)量很可能已經(jīng)超出了Internet應(yīng)用程序,而本文描述的每項(xiàng)Internet任務(wù)同樣也都適用于Intranet應(yīng)用程序。  

  以下將通過實(shí)例分別講述使用Visual Basic 5.0完成以下任務(wù):①TCP(UDP)/IP編程;②創(chuàng)建Internet Explorer中運(yùn)行的應(yīng)用程序;③創(chuàng)建FTP瀏覽器。  

    

  二.TCP(UDP)/IP編程技術(shù)  

  TCP/IP協(xié)議是一種標(biāo)準(zhǔn)的企業(yè)網(wǎng)絡(luò)協(xié)議,它也是Internet網(wǎng)最重要的網(wǎng)絡(luò)互聯(lián)協(xié)議,Microsoft Visual Basic 5.0的WinSock控件提供用于Internet的傳輸控制協(xié)議(TCP)和用戶數(shù)據(jù)包網(wǎng)絡(luò)協(xié)議(UDP)的底層訪問,因而可以方便地用于創(chuàng)建通話應(yīng)用程序,實(shí)現(xiàn)兩臺(tái)或多臺(tái)聯(lián)網(wǎng)計(jì)算機(jī)間的直接數(shù)據(jù)傳輸。下面介紹利用WinSock控件進(jìn)行TCP/IP編程的主要步驟。  

  2.1 確定應(yīng)用程序類型  

  使用TCP協(xié)議的應(yīng)用程序,首先必須確定它是服務(wù)器端的還是客戶端的。如果要?jiǎng)?chuàng)建一個(gè)服務(wù)器端的,就必須知道服務(wù)器計(jì)算機(jī)名或者IP地址(RemoteHost屬性),還要知道進(jìn)行“偵聽”的端口(RemotePort屬性),然后調(diào)用Connect方法。如果創(chuàng)建客戶端應(yīng)用程序,就應(yīng)設(shè)置一個(gè)收聽端口(LocalPort屬性)并調(diào)用Listen方法。當(dāng)客戶計(jì)算機(jī)需要連接時(shí)就會(huì)發(fā)生ConnectionRequest事件。為了完成連接,可調(diào)用ConnectionRequest事件內(nèi)的Accept方法。建立連接后,任何一方計(jì)算機(jī)都可以收發(fā)數(shù)據(jù)。為了發(fā)送數(shù)據(jù),需調(diào)用SendData方法。當(dāng)接收數(shù)據(jù)時(shí)會(huì)發(fā)生DataArrival事件。調(diào)用DataArrival事件內(nèi)的GetData方法就可獲取數(shù)據(jù)。  

  2.2 創(chuàng)建一個(gè)TCP服務(wù)器(Socket服務(wù)器)  

  1)創(chuàng)建新項(xiàng)目。  

  在File菜單中單擊New Project,打開New Project對(duì)話框,然后雙擊Standard EXE圖標(biāo),即建立一個(gè)新項(xiàng)目,并進(jìn)入開發(fā)環(huán)境。  

  2)將缺省窗體的名稱改為frmServer。  

  將一個(gè)Winsock控件拖到窗體上,并將該控件的名字改為tcpServer。請(qǐng)注意其中的Protocol屬性應(yīng)為sckTCPProtocol。在窗體上添加兩個(gè)TextBox控件。將第一個(gè)命名為txtSendData,第二個(gè)命名為txtOutput(如圖2.1所示)。  

    

  (圖2.1)  

    

  3)為窗體添加如下的代碼。  

  Private Sub Form_Load()  

  '將LocalPort屬性設(shè)置為整數(shù)后調(diào)用Listen方法。  

  tcpServer.LocalPort = 2000  

  tcpServer.Listen  

  End Sub  

  要?jiǎng)?chuàng)建服務(wù)器,首先設(shè)定一個(gè)服務(wù)器端口號(hào),并開始偵聽是否有客戶請(qǐng)求連接。程序中,LocalPort屬性為服務(wù)器端口號(hào),最好大于1000,以避免沖突。另外,對(duì)于眾所周知的端口號(hào),我們稱之為周知口,例如:端口80專用于Web服務(wù)。用Listen方法開始偵聽。  

  Private Sub tcpServer_ConnectionRequest(ByVal requestID As Long)  

  '檢查控件的State屬性是否為關(guān)閉的。  

  '如果不是,在接受新的連接之前先關(guān)閉此連接。  

  If tcpServer.State <> sckClosed Then tcpServer.Close  

  '接受具有requestID參數(shù)的連接。  

  tcpServer.Accept requestID  

  End Sub  

  當(dāng)客戶連接到本服務(wù)器時(shí),產(chǎn)生ConnectRequest事件,在事件中接收客戶的請(qǐng)求。  

  程序中的requestID參數(shù)表示客戶請(qǐng)求連接的ID號(hào),Accept方法接收一個(gè)請(qǐng)求連接。  

  Private Sub txtSendData_Change()  

  '名為 txtSendData 的 TextBox 控件中包含要發(fā)送的數(shù)據(jù)。用戶往文本框中  

  '鍵入數(shù)據(jù)時(shí),使用 SendData 方法發(fā)送輸入的字符串。  

  tcpServer.SendData txtSendData.Text  

  End Sub  

  當(dāng)我們需要向客戶發(fā)送數(shù)據(jù)時(shí),只需要調(diào)用SendData方法。  

  程序中使用SendData方法發(fā)送數(shù)據(jù)。  

  Private Sub tcpServer_DataArrival (ByVal bytesTotal As Long)  

  '為進(jìn)入的數(shù)據(jù)聲明一個(gè)變量。  

  '調(diào)用GetData方法,并將數(shù)據(jù)賦予名為txtOutput的TextBox的Text屬性。  

  Dim strData As String  

  tcpServer.GetData strData  

  txtOutput.Text = strData  

  End Sub  

  當(dāng)客戶向本服務(wù)器發(fā)送的數(shù)據(jù)到達(dá)后,產(chǎn)生DataArrival事件,在事件中接收數(shù)據(jù)。  

  程序中的bytesTotal參數(shù)表示收到數(shù)據(jù)的總數(shù),GetData方法接收數(shù)據(jù)。  

  Private Sub tcpServer_close(Index as Integer)  

  tcpServer.Close  

  tcpServer.Listen  

  End Sub  

  當(dāng)客戶關(guān)閉連接時(shí),服務(wù)器會(huì)產(chǎn)生Close事件。在事件中關(guān)閉當(dāng)前連接,重新開始偵聽。其中使用Close方法關(guān)閉連接。當(dāng)然服務(wù)器也可以主動(dòng)調(diào)用Close方法關(guān)閉連接,例如在窗體關(guān)閉時(shí)關(guān)閉連接。  

  Sub frmServer_UnLoad(Cancel As Integer)  

  tcpServer.Close  

  End Sub  

  通過上面的步驟我們創(chuàng)建了一個(gè)簡(jiǎn)單的服務(wù)器端應(yīng)用程序。為了使它能夠工作,還必須為它創(chuàng)建一個(gè)客戶端的應(yīng)用程序。  

    

  2.3 創(chuàng)建一個(gè) TCP客戶端(Socket客戶)  

  1)在項(xiàng)目中添加一個(gè)新的窗體,將其命名為frmClient。在窗體中添加一個(gè)Winsock控件,并將其命名為tcpClient。在frmClient中添加兩個(gè)TextBox控件,將第一個(gè)命名為txtSend,第二個(gè)命名為txtOutput。在窗體上放一個(gè)CommandButton控件,并將其命名為cmdConnect。  

  2)將CommandButton控件的標(biāo)題改為“連接”。  

  3)在窗體中添加如下的代碼。  

  Private Sub Form_Load()  

  'Winsock控件名字為tcpClient。  

  '注意:要指定遠(yuǎn)程主機(jī),可以使用IP地址(例如:“121.111.1.1”),  

  '也可以使用計(jì)算機(jī)的別名,如下所示:  

  tcpClient.RemoteHost = "HostServer1"  

   tcpClient.RemotePort = 2000  

  End Sub  

  要?jiǎng)?chuàng)建客戶連接服務(wù)器,首先要設(shè)置服務(wù)器主機(jī)名,如IP地址、域名或計(jì)算機(jī)名等,然后設(shè)定服務(wù)端口號(hào),最后連接到服務(wù)器上。在程序中:  

  RemoteHost屬性表示服務(wù)器主機(jī)名;  

  RemotePort屬性表示服務(wù)器端口號(hào)。  

  Private Sub cmdConnect_Click()  

  '調(diào)用Connect方法,初始化連接。  

   tcpClient.Connect  

  End Sub  

  Connect方法連接到服務(wù)器;  

    

  Private Sub txtSendData_Change()  

   tcpClient.SendData txtSend.Text  

  End Sub  

    

  Private Sub tcpClient_DataArrival (ByVal bytesTotal As Long)  

   Dim strData As String  

   tcpClient.GetData strData  

   txtOutput.Text = strData  

  End Sub  

    

  Private Sub tcpClient_Close(Index As Integer)  

  tcpClient.Close  

  End Sub  

    

  至此,我們創(chuàng)建了一個(gè)簡(jiǎn)單的客戶/服務(wù)器模式的應(yīng)用程序。我們可以將兩者都運(yùn)行起來:運(yùn)行項(xiàng)目,然后單擊“連接”。在兩個(gè)窗體之一的txtSendData文本框中鍵入文本,可以看到同樣的文字將出現(xiàn)在另一個(gè)窗體的txtOutput文本框中(如圖2.2所示)。  

  圖2.2  

  2.4 創(chuàng)建多客戶服務(wù)器,接受多個(gè)連接請(qǐng)求  

  上面設(shè)計(jì)的基本服務(wù)器只能接受一個(gè)連接請(qǐng)求。通過創(chuàng)建控件數(shù)組,使用一個(gè)控件也可以同時(shí)接受多個(gè)連接請(qǐng)求。利用這種方法,不再需要關(guān)閉連接,而只需創(chuàng)建新的控件實(shí)例(通過設(shè)置其索引屬性),然后,在新的實(shí)例上調(diào)用Accept方法。  

  下面的代碼假定名字為sckServer的窗體上有一個(gè)Winsock控件,它的Index屬性被設(shè)置為0;控件是控件數(shù)組的一部分。在聲明部分,聲明了一個(gè)模塊級(jí)的變量intMax。在窗體的Load事件中,intMax被設(shè)置為0,數(shù)組中第一個(gè)控件的LocalPort屬性被設(shè)置為2000。然后調(diào)用控件的Listen方法,使之成為“偵聽”控件。在連接請(qǐng)求到達(dá)時(shí),代碼將檢測(cè)Index是否為0(“偵聽”控件的值)。如果為0,偵聽控件將增加intMax的值,并使用該號(hào)碼來創(chuàng)建新的控件實(shí)例。然后使用新的控件實(shí)例接受連接請(qǐng)求。  

  Private intMax As Long  

  Private Sub Form_Load()  

   intMax = 0  

   sckServer(0).LocalPort = 2000  

   sckServer(0).Listen  

  End Sub  

  設(shè)定端口號(hào)后開始偵聽。  

    

  Private Sub sckServer_ConnectionRequest (Index As Integer, ByVal requestID As Long)  

   If Index = 0 Then  

   intMax = intMax + 1  

   Load sckServer(intMax)  

   sckServer(intMax).LocalPort = 0  

   sckServer(intMax).Accept requestID  

   Load txtData(intMax)  

   End If  

  End Sub  

  在ConnectionRequest事件中,首先加載一個(gè)Socket控件,然后再用它來接收連接。  

    

  2.5 測(cè)試開發(fā)中應(yīng)該注意的問題  

  1)協(xié)議的設(shè)置。  

  當(dāng)WinSock控件與遠(yuǎn)程計(jì)算機(jī)建立連接時(shí),亦可通過用戶數(shù)據(jù)包協(xié)議(UDP)進(jìn)行數(shù)據(jù)交換。在使用WinSock控件時(shí),首先需要考慮使用什么協(xié)議。TCP應(yīng)用程序應(yīng)注意選擇TCP協(xié)議?砂慈缦路绞皆O(shè)置應(yīng)用程序使用的協(xié)議:在“屬性”窗口中單擊“協(xié)議”,然后選擇sckTCPProtocol或者sckUDPProtocol。也可以使用程序代碼來設(shè)置Protocol屬性,如下所示:  

  Winsock1.Protocol = sckTCPProtocol開發(fā)TCP應(yīng)用程序應(yīng)注意選擇TCP協(xié)議。  

  2)注意確定“計(jì)算機(jī)的名字”。  

  計(jì)算機(jī)的名字用如下方式查找:  

 、僭谟(jì)算機(jī)的“任務(wù)欄”上,單擊“開始”。  

 、谠凇霸O(shè)置”項(xiàng)中,單擊“控制面板”。  

 、 雙擊“網(wǎng)絡(luò)”圖標(biāo)。  

  ④ 單擊“標(biāo)識(shí)”選項(xiàng)卡。  

 、 在“計(jì)算機(jī)名稱”框中可以找到計(jì)算機(jī)的名稱。  

  上面找到的計(jì)算機(jī)名稱可以作為RemoteHost屬性的值。應(yīng)用這一技術(shù),我方便地完成了某企業(yè)信息管理系統(tǒng),成功地實(shí)現(xiàn)了企業(yè)內(nèi)部信息流的處理。雖然目前已有WWW瀏覽器、FTP等Internet互聯(lián)網(wǎng)的應(yīng)用工具,可以下載網(wǎng)上的信息,或?qū)崿F(xiàn)網(wǎng)上工作站間的數(shù)據(jù)與文件的傳輸,但是用Windows Sockets則可方便地在用戶自己設(shè)計(jì)的Windwos應(yīng)用程序中通過Internet互聯(lián)網(wǎng)傳輸數(shù)據(jù),由于互聯(lián)網(wǎng)的傳輸速度可以高達(dá)數(shù)十兆到數(shù)百兆比特每秒,因此,除了可以傳遞一般的文字、圖形、聲音等數(shù)據(jù)文件外,還可以用來傳遞實(shí)時(shí)的圖像數(shù)據(jù)。  

    

  三.創(chuàng)建Internet Explorer中運(yùn)行的應(yīng)用程序  

  3.1 概述  

  Visual Basic 5.0版本是直接針對(duì)Internet的(也有人稱是針對(duì)ActiveX的),Microsoft目前正在加緊開發(fā)用于WWW的Visual Basic(估計(jì)Visual Basic 6.0必將具有這一功能)。Visual Basic包括一個(gè)稱為用戶文檔的新容器類型。用戶文檔構(gòu)成了Visual Basic Document(也稱ActiveX Document)文檔的基礎(chǔ),并且生成的文檔能夠使用Microsoft Internet Explorer 3.0以上版本在Internet上瀏覽(見圖3.1)。利用這一功能我們可以方便地創(chuàng)建動(dòng)態(tài)Web頁面。必須指出的是:使用Visual Basic創(chuàng)建的AcitveX Document與其他ActiveX Document略有不同。Visul Basic AcitveX Document與Visual Basic窗體大致相同,能在ActiveX Document容器中使用,但我們不能像運(yùn)行獨(dú)立應(yīng)用程序那樣運(yùn)行它們。用戶文檔與窗體非常相似,可以包括控件、顯示消息框、處理數(shù)據(jù)以及調(diào)用其他組件。用戶文檔與窗體的區(qū)別主要表現(xiàn)在:⑴應(yīng)用程序中的其他部分無法得到用戶文檔中的數(shù)據(jù),不能從文檔外部引用用戶文檔中的屬性值。⑵給予用戶文檔的應(yīng)用程序需要Internet Explorer來運(yùn)行,無法直接從Visual Basic中調(diào)試它們。⑶編譯過的應(yīng)用程序必須從HTM文件啟動(dòng),它在顯示VBD文件之前裝入應(yīng)用程序的代碼組件。如果沒有這個(gè)HTM文件,就不能啟動(dòng)編譯過的EXE文件或從Internet Explorer中查看VBD文件。  

  3.2 ActiveX 文檔對(duì)象的重要屬性  

  在講述創(chuàng)建ActiveX 文檔的具體方法之前,我們先研究一下ActiveX 文檔對(duì)象的重要屬性。每個(gè)用戶文檔包含一個(gè)內(nèi)置的Hyperlink對(duì)象,可用它來進(jìn)入U(xiǎn)RLs和訪問Internet Explorer的文檔高速緩存。NavigateTo方法大致等價(jià)于窗體的Show方法。  

  事件 Show:當(dāng)瀏覽器顯示文檔時(shí)發(fā)生;  

   Hide:當(dāng)瀏覽器離開文檔時(shí)發(fā)生;  

  屬性 HyperLink:用于導(dǎo)航對(duì)象;  

   HyperLink對(duì)象有三個(gè)重要方法:  

   GoBack:前一頁面;  

   GoFoward:后一頁面;  

   Navigateto:導(dǎo)航;  

  例如HyperLink.Navigateto "http:/www.pccomputing.com"可以導(dǎo)航至《電子與電腦》雜志的主頁。  

  3.3 用Visual Basic創(chuàng)建ActiveX Document的具體步驟  

  我們將開發(fā)具有如下功能的應(yīng)用程序:創(chuàng)建兩個(gè)ActiveX文檔頁面,第一個(gè)要求訪問者輸入密碼,按動(dòng)按鈕后,若密碼正確則進(jìn)入第二頁面;第二頁面可以導(dǎo)航至中國(guó)教育與科研計(jì)算機(jī)網(wǎng)的主服務(wù)器。  

  1)在File菜單中單擊New Project來打開一個(gè)New Project對(duì)話框,然后雙擊ActiveX Document exe圖標(biāo),即可建立一個(gè)新項(xiàng)目并進(jìn)入開發(fā)環(huán)境。  

  2)在“用戶文檔”的第一個(gè)UserDocument上添加兩個(gè)Label控件、一個(gè)TextBox和一個(gè)CommandButton(如圖3.1所示)。  

 。▓D3.1)。  

  添加如下代碼:  

  Private Sub Command1_Click()  

  '核對(duì)Text1的文本,如果正確,則轉(zhuǎn)至第二個(gè)文檔頁面。  

  If Text1.Text = "690909" Then  

  Hyperlink.NavigateTo "d:\ActiveX文檔\UserDocument2.vbd"  

  End If  

  End Sub  

  3)從菜單“項(xiàng)目”中選擇“添加用戶文檔”,在工程項(xiàng)目中添加第二個(gè)UserDocument,然后在UserDocument2上添加一個(gè)CommandButton(如圖3.2所示)。  

  (圖3.2)  

  添加如下的代碼:  

  Private Sub Command1_Click()  

  '按動(dòng)按鈕,導(dǎo)航至《電子與電腦》雜志主頁。  

  Hyperlink.NavigateTo "http:///www.pccomputing.com"  

  End Sub  

  4)編譯文檔。  

  5)使用Internet Explorer瀏覽器測(cè)試文檔。  

  四.創(chuàng)建FTP瀏覽器  

  4.1 概述  

  FTP是Internet網(wǎng)上最早使用的文件傳輸程序。FTP的具體含義是文件傳輸協(xié)議(File Transfer Protocol),它是由支持Internet文件傳輸?shù)母鞣N規(guī)程所組成的集合。FTP的作用是使Internet用戶能夠?qū)⑽募䦶囊慌_(tái)計(jì)算機(jī)拷貝到另一臺(tái)計(jì)算機(jī),為實(shí)現(xiàn)Internet資源共享提供有力的保障。它不同于NFS(Network File System)和Netbios協(xié)議,一旦你要訪問另一臺(tái)計(jì)算機(jī)中的文件,任何時(shí)刻都要運(yùn)行FTP,而且你只能拷貝文件到自己的機(jī)器中時(shí)來使用它。FTP是一種客戶機(jī)/服務(wù)器結(jié)構(gòu),既需要客戶機(jī)軟件,又需要服務(wù)器軟件。FTP客戶機(jī)程序在用戶計(jì)算機(jī)上執(zhí)行,服務(wù)器程序在宿主計(jì)算機(jī)上執(zhí)行。用戶啟動(dòng)FTP客戶機(jī)程序,通過輸入戶名和口令同遠(yuǎn)程主機(jī)上的FTP服務(wù)器建立連接,一旦成功,在Internet上用戶計(jì)算機(jī)和宿主計(jì)算機(jī)之間就建立起一條命令鏈路(控制鏈路)。  

  4.2 用Visual Basic 5.0創(chuàng)建FTP瀏覽器的步驟  

  1) 我們將開發(fā)具有如下功能的應(yīng)用程序:使用兩個(gè)文本框和一個(gè)Internet Transfer控件?稍凇暗刂贰蔽谋究蛑休斎隖TP服務(wù)器的URL(Uniform Resource Locator),然后從內(nèi)容文本框中選擇一個(gè)文件或目錄。如果選擇目錄,則應(yīng)用程序就會(huì)顯示該目錄。如果選擇文件,則瀏覽器會(huì)將文件存于Windows Temp目錄中。當(dāng)用戶按回車鍵時(shí),“地址”文本框會(huì)通過設(shè)置Internet Transfer控件的URL屬性并調(diào)用Execute方法來執(zhí)行請(qǐng)求。當(dāng)請(qǐng)求一個(gè)特定文件時(shí),OpenURL方法實(shí)現(xiàn)相同的動(dòng)作。然而,當(dāng)你使用OpenURL方法返回目錄的內(nèi)容時(shí),會(huì)返回指明目錄內(nèi)容的HTML源代碼。  

  2)在File菜單中單擊New Project,以便打開New Project對(duì)話框,然后雙擊“普通exe”圖標(biāo),即建立一個(gè)新項(xiàng)目,并進(jìn)入開發(fā)環(huán)境。  

  3)在窗體上添加一個(gè)Label控件、一個(gè)TextBox和一個(gè)ListBox(如圖4.1所示)。  

  圖4.1  

  4)添加如下代碼:  

  Private Sub Text1_Click(KeyAscii As Integer)  

  If KeyAscii=Asc(vbCr) Then  

  KeyAscii=0  

  Text1.SelStart=0  

  Text1.SelLength=Len(Text1)  

  On Error goTo errOpenURL  

  InetBrowse.URL=Text1.Text  

  InetBrowse.Execute, "Dir"  

  Caption=inetBrowse.URL  

  End If  

  Exit Sub  

   ErrOpenURL:  

   Select Case Err.Number  

   Case icBadUrl  

   MsgBox"地址錯(cuò)誤,請(qǐng)重新出入!"  

   Case icConnectFailed,icConnectionAborted,icCannotConnect  

   MsgBox"無法連入網(wǎng)絡(luò)!"  

   Case icInetTimeout  

   MsgBox"連接超時(shí)!"  

   Case icExecuting  

   InetBrowse.Cancel  

  If inetBrowse.StillExecuting Then  

   Caption="不能取消請(qǐng)求!"  

   Else  

  Resume  

  End If  

  End Select  

  End Sub  

  當(dāng)你提交一個(gè)請(qǐng)求時(shí),設(shè)置錯(cuò)誤陷阱很重要,尤其是icExecuting錯(cuò)誤。Internet Transfer控件采用異步方式處理所有請(qǐng)求。然而,在同一時(shí)間僅能處理一個(gè)請(qǐng)求。如果你取消正在進(jìn)行的請(qǐng)求,那么在重新開始前一定要檢查StillExecuting屬性。有些請(qǐng)求不能被取消,并且簡(jiǎn)單地使用Resume語句會(huì)導(dǎo)致死循環(huán)。  

  Private Sub List1_DblClick)  

  If List1.SelLength Then  

   If Right(List1.SelText1,1)="/" Then  

   Text1=Text1 & "/" Left(Text1.SelText,Text1.SelLength-1)  

  On Error goTo errBRowse  

  MsDir=Right(Text1.Len(Text1)-Len(inetBrowse.URL)  

  InetBrowse.Execute,"Dir"&msDir&"/*"  

  Else  

  MsDir=Right(Text1.Len(Text1)-Len(inetBrowse.URL))&"/"&""&msTempDir&List1.SelText  

  End If  

  End If  

  Exit Sub  

  ErrBrowse:  

  If Err=icExecuting Then  

   inetBrowse.Cancel  

   If inetBrowse.StillExecuting Then  

   MsgBox"不能取消請(qǐng)求!"  

  Else  

  Resume  

  End If  

  Else  

  Debug.Print Err&""&Err.Description  

  End If  

  End Sub  

   FTP命令用于在本地主機(jī)和遠(yuǎn)程主機(jī)間或兩遠(yuǎn)程主機(jī)間傳送文件。為了確保所傳送的文件具有唯一的文件名,可使用一些選項(xiàng)來管理文件名,以便于適應(yīng)接收主機(jī)的需要。用戶能通過使用“anonymous”登錄進(jìn)行公共文件訪問。  

   Internet Transfer控件的Books Online文檔展示用于創(chuàng)建FTP瀏覽器的程序片段,這里就不再詳細(xì)敘述了。