如今,網(wǎng)絡(luò)編程可謂如火如荼了,我們作為編程迷能坐在那里穩(wěn)如泰山嗎?當(dāng)然不能。 但是網(wǎng)絡(luò)編程又是一個神秘莫測的地帶,涉及到什么TCP/IP等之類的專業(yè)術(shù)語。的確,在以前,沒有極深厚的專業(yè)基礎(chǔ)是不敢涉足網(wǎng)絡(luò)編程的。不過,一切都在成為過去。VB自從5.0以后的版本提供了非常簡便的Internet控件,復(fù)雜的技術(shù)細(xì)節(jié)都封裝在控件內(nèi)部。你如果學(xué)會使用這些控件,相信你就會會發(fā)現(xiàn)那看似復(fù)雜的一切居然如此簡單!這些Internet類控件有三個。 其中,Winsock控件主要是用來編制TCP/IP或UDP協(xié)議的通話應(yīng)用程序。Internet Transfer控件主要用來傳輸文件,執(zhí)行FTP命令及登錄服務(wù)器等。WebBrowser則用于創(chuàng)建可加入自己的應(yīng)用程序的瀏覽器??赡軐τ赪ebBrowser這個控件來說大家是比較熟悉的了,介紹餓文章比較多,它用來制作瀏覽器。下面我們介紹這前面兩個控件的具體使用方法。 一、用Internet Transfer編寫文件傳輸程序 文件傳輸實(shí)質(zhì)就是讓用戶獲得訪問網(wǎng)絡(luò)文件的服務(wù)即在遠(yuǎn)程主機(jī)和本地機(jī)器之間進(jìn)行文件的拷貝,是目前一種應(yīng)用較廣的網(wǎng)絡(luò)服務(wù)。 文件傳輸一般也是基于Client/Server基礎(chǔ)上的。文件傳輸?shù)倪^程通常包括用戶提出請求,建立連接,執(zhí)行操作,斷開連接和結(jié)束會話的過程。 在這個程序中用到了兩個Text控件。Text1控件用來輸入FTP地址。Text2用來對目錄列表或展示文件內(nèi)容。其實(shí)現(xiàn)的源代碼和詳細(xì)注釋如下: Option Explicit Dim TempDir As String Private Sub Form_Load() ’保存文件的臨時目錄 TempDir = "d:\ftptemp\" End Sub ’當(dāng)操作狀態(tài)改變時的動作 Private Sub Inet1_StateChanged(ByVal State As Integer) Dim vtData, txtData As String txtData = "" Select Case State Case icError ’出錯時 Debug.Print Inet1.ResponseCode & " " _ & Inet1.ResponseInfo Case icResolvingHost, icRequesting, icRequestSent ’尋找,請求或送出請求時 StatusBar1.Panels(1).Text = "正在查找..." Case icHostResolved StatusBar1.Panels(1).Text = "找到" Case icReceivingResponse, icResponseReceived StatusBar1.Panels(1).Text = "接收數(shù)據(jù)" Case icResponseCompleted ’接到回答后,保存數(shù)據(jù) ’接收第一塊 vtData = Inet1.GetChunk(1024) ’getchunk獲得發(fā)送過來的數(shù)據(jù) txtData = txtData & vtData Do While LenB(vtData) > 0 ’得到下一大塊。 vtData = Inet1.GetChunk(1024, icString) txtData = txtData & vtData Loop Text2.Text = txtData StatusBar1.Panels(1).Text = "完成" Case icConnecting, icConnected StatusBar1.Panels(1).Text = "正在連接" Case icDisconnecting ’無法連接 Case icDisconnected Case Else ’其他 Debug.Print States End Select End Sub ’輸入地址,按ENTER鍵確認(rèn)后 Private Sub Text1_KeyPress(KeyAscii As Integer) If KeyAscii = vbKeyReturn Then KeyAscii = 0 On Error GoTo ErrOpen ’轉(zhuǎn)入錯誤處理 Inet1.URL = Text1.Text ’賦予地址 Inet1.Execute "DIR" ’執(zhí)行DIR命令 Form1.Caption = Inet1.URL End If Exit Sub ErrOpen: Select Case Err.Number Case icBadUrl MsgBox ("地址錯誤,請重輸一遍!") Case icConnectFailed, icConnectionAborted, icCannotConnect MsgBox ("網(wǎng)絡(luò)連接失??!") Case icExecuting Inet1.Cancel If Inet1.StillExecuting Then MsgBox ("不能取消當(dāng)前操作!") Else Resume End If Case Else Debug.Print Err.Number, Err.Description End Select End Sub Private Sub Text2_DblClick() Dim mDir As String If Text2.SelLength Then ’如果是目錄,則用DIR命令 If Right(Text2.SelText, 1) = "/" Then Text1.Text = Text1.Text & "/" & _ Left(Text2.SelText, Text2.SelLength - 1) On Error GoTo ErrBrowse mDir = Right(Text1.Text, Len(Text1.Text) - Len(Inet1.URL)) Inet1.Execute , "DIR" & mDir & "/*" ’如果是文件,則獲得文件內(nèi)容 Else mDir = Right(Text1.Text, Len(Text1.Text) - Len(Inet1.URL)) & "/" & Text2.SelText Inet1.Execute , "GET" & mDir & _ " " & TempDir & Text2.SelText End If End If Exit Sub ErrBrowse:’錯誤處理 If Err.Number = icExecuting Then Inet1.Cancel If Inet1.StillExecuting Then MsgBox ("不能取消當(dāng)前操作!") Else Resume End If Else Debug.Print Err.Number, Err.Description End If End Sub |
|