VB網(wǎng)絡(luò)控件全解課件_第1頁
VB網(wǎng)絡(luò)控件全解課件_第2頁
VB網(wǎng)絡(luò)控件全解課件_第3頁
VB網(wǎng)絡(luò)控件全解課件_第4頁
VB網(wǎng)絡(luò)控件全解課件_第5頁
已閱讀5頁,還剩43頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、網(wǎng)絡(luò)應(yīng)用程序設(shè)計方法第8章第1頁,共48頁。1 8.1 網(wǎng)絡(luò)聊天程序任務(wù) 8.1.1 任務(wù)描述 VB提供了一系列的網(wǎng)絡(luò)編程控件,利用它們,網(wǎng)絡(luò)編程將成為一件快樂而簡單的工作。 VB網(wǎng)絡(luò)控件主要有三種: (1)Winsok控件 主要用于編制基于TCP/IP或UDP協(xié)議的網(wǎng)絡(luò)應(yīng)用程序。 (2)Internet Transfer控件 主要以來傳輸文件,執(zhí)行FTP命令以及登錄服務(wù)器等。 (3)WebBrowser 用于創(chuàng)建瀏覽器 本節(jié)先介紹Winsok控件。 第2頁,共48頁。2 在網(wǎng)絡(luò)編程中最常用的方案是客戶機/服務(wù)器模式(Client/Server,簡稱C/S)。這種模式包含客戶機和服務(wù)器兩類應(yīng)用

2、程序。其中客戶應(yīng)用程序向服務(wù)器請求服務(wù),而服務(wù)程序通常在一個眾所周知的地址偵聽對服務(wù)的請求,也就是說,服務(wù)進程一直處于休眠狀態(tài),直到一個客戶提出了連接請求。此時,服務(wù)持續(xù)將被喚醒,并對客戶的請求作出適當(dāng)?shù)姆磻?yīng)。第3頁,共48頁。3 聊天服務(wù)程序:由客戶端和服務(wù)端兩個程序組成,采用Winsok控件開發(fā)。這兩個程序可以在同一臺計算機上運行,也可以在網(wǎng)絡(luò)上不同的計算機上運行。整個系統(tǒng)的運行機制是: 第一步:建立連接 主要過程是:由客戶端程序向服務(wù)端程序發(fā)出連接請求,服務(wù)端程序收到并接受連接請求,至此客戶機與服務(wù)器創(chuàng)建了數(shù)據(jù)交流通道。 第二步:開始聊天 主要過程是:在客戶機的“發(fā)送的信息”文本框中輸入

3、文字時,服務(wù)器端的“收到的信息”文本框中就會實時地顯示相同的文字,反之亦然。第4頁,共48頁。4P215 習(xí)題 一、填空題1. Winsock控件主要用來編制TCP/IP或 協(xié)議的通話程序。答案:UDP2. 在網(wǎng)絡(luò)編程中最常用的方案是 。答案:客戶機/服務(wù)器程序(Client/Server)第5頁,共48頁。5P215 習(xí)題 三、問答題2.簡述網(wǎng)絡(luò)聊天程序的運行過程。答:網(wǎng)絡(luò)聊天程序的運行過程是: 第一步:建立連接 主要過程是:由客戶端程序向服務(wù)端程序發(fā)出連接請求,服務(wù)端程序收到并接受連接請求,至此客戶機與服務(wù)器創(chuàng)建了數(shù)據(jù)交流通道。 第二步:開始聊天 主要過程是:在客戶機的“發(fā)送的信息”文本框

4、中輸入文字時,服務(wù)器端的“收到的信息”文本框中就會實時地顯示相同的文字,反之亦然。第6頁,共48頁。68.1.2. 服務(wù)器的界面設(shè)計1.創(chuàng)建一個“標準 EXE”工程,選中“工程”菜單的“部件”,在控件中找到Microsoft Winsock Control并將其選中。2.將Form1的名稱改為frmSvr,并在其中添加兩個命令按鈕(Command1的Caption屬性為“退出”,Command2的Caption屬性為“發(fā)送”)。3.在窗體是添加三個TextBox控件,其名稱分別為txtServerIP,txtSend和txtReceive。4.在窗體上添加一個Winsock控件,將其Proto

5、col(協(xié)議)屬性設(shè)置為0(即sckTCPProtocol)。第7頁,共48頁。78.1.3 服務(wù)器程序代碼設(shè)計Private Sub Form_Load() 設(shè)置偵聽端口 WinsockServer.LocalPort = 10001 讀取服務(wù)器的IP地址 TxtServerIP.Text = WinsockServer.LocalIP 開始偵聽 WinsockServer.ListenEnd SubPrivate Sub Command1_Click() 點擊“退出”按鈕后關(guān)閉應(yīng)用程序 Unload MeEnd Sub第8頁,共48頁。88.1.3 服務(wù)器程序代碼設(shè)計Private Sub

6、 Command2_Click() 只要txtSend文本框的內(nèi)容寫好以后就由WinsockServer控件發(fā)送 WinsockServer.SendData TxtSend.TextEnd SubPrivate Sub WinsockServer_ConnectionRequest(ByVal requestID As Long) 當(dāng)收到連接請求時,Winsock處于偵聽狀態(tài) 此時應(yīng)該使用Close方法關(guān)閉Winsock,然后使用Accept方法接受連接請求 WinsockServer.Close WinsockServer.Accept requestIDEnd Sub 第9頁,共48頁。

7、98.1.3 服務(wù)器程序代碼設(shè)計Private Sub WinsockServer_DataArrival(ByVal BytesTotal As Long) 當(dāng)客戶端有信息發(fā)送來時,利用WinsockServer控件的GatData方法讀取數(shù)據(jù) 并將其顯示在txtReceive文本框中 Dim MyStr As String WinsockServer.GetData MyStr TxtReceive.Text = MyStrEnd Sub第10頁,共48頁。108.1.4 客戶機程序界面設(shè)計1.創(chuàng)建一個新的“標準 EXE”工程,并添加Winsock 控件。2.將Form1的名稱改為frmC

8、lt,并在其中添加兩個命令按鈕(Command1的Caption屬性為“退出”, Command2的Caption屬性為“連接服務(wù)器” ,Command3的Caption屬性為“發(fā)送”)。3.在窗體是添加四個TextBox控件,其名稱分別為txtClientIP,txtServerIP,txtSend和txtReceive。4.在窗體上添加一個Winsock控件,將其Protocol(協(xié)議)屬性設(shè)置為0(即sckTCPProtocol)。第11頁,共48頁。118.1.4. 客戶機的程序代碼設(shè)計Private Sub Form_Load() 設(shè)置聊天服務(wù)器的偵聽端口 WinsockClient

9、.RemotePort = 10001 讀取本機的IP地址 txtClientIP.Text = WinsockClient.LocalIPEnd SubPrivate Sub Command1_Click() 點擊“退出”按鈕后關(guān)閉應(yīng)用程序 Unload MeEnd Sub第12頁,共48頁。128.1.4. 客戶機的程序代碼設(shè)計Private Sub Command2_Click() 根據(jù)txtServerIP文本框中輸入的服務(wù)器IP,連接聊天服務(wù)器 WinsockClient.RemoteHost = txtServerIP.Text WinsockClient.ConnectEnd S

10、ubPrivate Sub Command3_Click() 輸入txtSend文本框的內(nèi)容后由WinsockServer控件發(fā)送 WinsockClient.SendData txtSend.TextEnd Sub第13頁,共48頁。138.1.4. 客戶機的程序代碼設(shè)計Private Sub WinsockClient_Connect() 如果與服務(wù)器連接成功,則向用戶提供下列信息 MsgBox 你成功地與聊天服務(wù)器進行了連接, vbInformationEnd SubPrivate Sub WinsockClient_DataArrival(ByVal BytesTotal As Lon

11、g) 當(dāng)服務(wù)器有信息發(fā)送來時,利用WinsockClient控件的GatData方法讀取數(shù)據(jù) 并將其顯示在txtReceive文本框中 Dim MyStr As String WinsockClient.GetData MyStr txtReceive.Text = MyStrEnd Sub第14頁,共48頁。14演示聊天程序第15頁,共48頁。15 8.2 Winsock控件及網(wǎng)絡(luò)應(yīng)用程序設(shè)計基礎(chǔ) Winsock控件是建立在TCP協(xié)議的基礎(chǔ)上,能夠完成遠程計算機間的通信,用途非常廣泛。即使我們對TCP/IP,TCP這些知識不太熟悉,只要理解了網(wǎng)絡(luò)應(yīng)用程序設(shè)計的一般原理,并對Winsock的主

12、要屬性、方法和事件有所了解,也可以在很短時間內(nèi)創(chuàng)建一個簡單的網(wǎng)絡(luò)通信程序。第16頁,共48頁。168.2.1 Winsock控件的主要屬性Winsock控件主要有八個屬性:1. BytesReceived屬性:返回接收到的數(shù)據(jù)。通常用GetData方法來獲取這些數(shù)據(jù)。2. LocalHostName屬性:返回本地計算機的名稱。3. LocalIP屬性:返回本地計算機的IP地址。4. LocalPost屬性:返回或者設(shè)置所用的端口,如果設(shè)置為0,則使用隨機端口。5. Protocol屬性:返回或設(shè)置Winsock所用的協(xié)議(TCP或UDP)。6. RemoteHostName屬性,返回或設(shè)置遠程

13、計算機的名稱。7. RemoteHostIP屬性,返回遠程計算機的IP地址。8. State屬性:返回Winsock控件的當(dāng)前狀態(tài)。第17頁,共48頁。17符號常數(shù)值含義sckClosed0關(guān)閉狀態(tài),缺省值sckOpen1打開狀態(tài)sckListening2偵聽狀態(tài)sckConnectionPending3連接狀態(tài)sckResolvingHost4解析主機sckHostResolved5以解析的主機sckConnecting6正在連接Sckconnected7已經(jīng)連接sckClosing8客戶端正在關(guān)閉連接sckErros9錯誤Winsock控件的State屬性第18頁,共48頁。18P215

14、習(xí)題 二、填空題3. 如果希望得到本地計算機的IP地址,可以使用Winsock控件的 屬性。答案:LocalIP4. Winsock控件的BytesReceived屬性返回接收到的數(shù)據(jù),通常使用 方法來獲取這些數(shù)據(jù)。答案:GetData3. 如果Winsock1.LocaPort=0,那么應(yīng)用程序?qū)?。答案:使用隨機端口第19頁,共48頁。198.2.2 Winsock控件的主要方法Winsock控件的方法主要有六個:1. Listen方法語法: Winsock對象.Listen作用:使服務(wù)器處于偵聽狀態(tài),等待客戶訪問。2. Connect方法語法: Winsock對象.Connect遠程主機

15、IP,遠程端口作用:用于向遠程主機發(fā)出連接請求。3. Accept方法語法: Winsock對象.Accept RequestID作用:用于接受一個連接請求,其中RequestID是客戶機發(fā)來的請求信號第20頁,共48頁。208.2.2 Winsock控件的主要方法Winsock控件的方法主要有六個:4. SendData方法語法: Winsock對象.SendData 數(shù)據(jù)作用:用于發(fā)送數(shù)據(jù)5. GetData方法語法: Winsock對象. GetData 變量數(shù)據(jù)類型,最大長度作用:用來獲得接收到的數(shù)據(jù)6. Clcse方法語法: Winsock對象.Close作用:關(guān)閉當(dāng)前連接第21頁,

16、共48頁。21P215 習(xí)題 二、填空題5. Winsock1.Listen語句的含義是 。答案:LocalIP使服務(wù)器處于偵聽狀態(tài),等待客戶訪問。第22頁,共48頁。228.2.3 Winsock控件的主要事件Winsock控件的事件主要有兩個:1.DataArrival事件:一旦數(shù)據(jù)到達,就會觸發(fā)該事件。它通常與GetData方法一起使用,通過GetData方法獲得新到達的數(shù)據(jù)。2. ConnectionRequest事件:當(dāng)客戶機使用Connect方法請求連接時觸發(fā)該事件,它通常與Accept方法一起使用,用來接受客戶機的連接請求。第23頁,共48頁。23P214 習(xí)題 一、單項選擇題1

17、. 一旦數(shù)據(jù)到達,將首先觸發(fā)Winsock控件的( )。A. DataArrival事件B. ConnectionRequest事件C. DataSand事件D. DataGet事件答案:B第24頁,共48頁。24P214 習(xí)題 一、單項選擇題2. 要發(fā)送數(shù)據(jù),通常使用Winsock控件的( )。A. SendData方法B. Listen方法C. Accept方法D. GetData方法答案:A第25頁,共48頁。25P214 習(xí)題 一、單項選擇題3. 當(dāng)Winsock控件處于關(guān)閉狀態(tài)時,其State屬性的值是( )。A. 1B. 0C. 2D. 6答案:B第26頁,共48頁。26P214

18、習(xí)題 一、單項選擇題4. 當(dāng)Winsock控件的LocalPort屬性的作用是( )。A. 僅返回所有端口B. 僅設(shè)置所有端口C. 返回或設(shè)置所有端口D. 返回或設(shè)置IP地址答案:B第27頁,共48頁。27P214 習(xí)題 一、單項選擇題5. 當(dāng)使用SendData將數(shù)據(jù)發(fā)送到主機后時,將觸發(fā)的Winsock控件的是( )。A. SendProgressB. MouseDownC. ClickD. KeyPress答案:A第28頁,共48頁。288.2.4 網(wǎng)絡(luò)應(yīng)用程序設(shè)計基礎(chǔ)1. 基于Socket的通信過程Winsock控件是基于Socket接口(套接字)創(chuàng)建的。它是現(xiàn)在TCP/IP網(wǎng)絡(luò)中最通

19、用的API(應(yīng)用程序接口),也是在Internet上進行應(yīng)用程序開發(fā)最通用的API。Windows Socket規(guī)范已成為Windows網(wǎng)絡(luò)編程的標準。Socket在計算機中提供了一個通信端口,可以通過這個端口與任何一個也同樣具有Socket接口的計算機進行通信。應(yīng)用程序在網(wǎng)絡(luò)上傳輸、接收的信息都通過這個Socket接口來實現(xiàn)?;赟ocket的通信過程如下頁圖所示:第29頁,共48頁。29SocketSocket應(yīng)用程序A發(fā)送發(fā)送接收接收應(yīng)用程序B通信細節(jié)利用Socket進行網(wǎng)絡(luò)編程,只需對Socket接口進行數(shù)據(jù)的讀寫操作,根本不必關(guān)心兩臺計算機間的通信細節(jié)就能夠完成數(shù)據(jù)的發(fā)送和接收工作。

20、第30頁,共48頁。30SocketSocket應(yīng)用程序A發(fā)送發(fā)送接收接收應(yīng)用程序B通信細節(jié) 利用Socket進行網(wǎng)絡(luò)編程,只需對Socket接口進行數(shù)據(jù)的讀寫操作,根本不必關(guān)心兩臺計算機間的通信細節(jié)就能夠完成數(shù)據(jù)的發(fā)送和接收工作。P 215 習(xí)題 三 問答題1. 簡述基于Socket的通信過程。第31頁,共48頁。312.基于Winsock控件的開發(fā)模式VB提供的Winsock控件正是基于Socket規(guī)范創(chuàng)建的。利用Winsock控件開發(fā)網(wǎng)絡(luò)通信系統(tǒng)時,通常要涉及到服務(wù)器和客戶機兩類應(yīng)用程序:(1)服務(wù)器程序的開發(fā)模式服務(wù)器程序必須設(shè)置好LocalPort屬性,作為偵聽端口。該值可設(shè)置成任何

21、一個整數(shù),只要其它應(yīng)用程序沒有使用過的值即可,單習(xí)慣上應(yīng)大于1000。使用Listen方法使服務(wù)器進入偵聽狀態(tài),等待客戶機的連接請求。第32頁,共48頁。322.基于Winsock控件的開發(fā)模式(1)服務(wù)器程序的開發(fā)模式客戶機程序發(fā)出連接請求后,將觸發(fā)服務(wù)器程序的ConnectionRequest事件,該事件得到一個參數(shù)RequestID。服務(wù)器程序使用Accept方法接受客戶機程序的RequestID請求。至此,服務(wù)器程序就可以使用SendData方法向客戶機發(fā)送數(shù)據(jù)了。當(dāng)服務(wù)器接收到數(shù)據(jù)時,會產(chǎn)生DataArrival事件。在該事件中可使用GetData方法接收數(shù)據(jù)。第33頁,共48頁。3

22、3(2)客戶機程序的開發(fā)模式首先設(shè)置好RemoteHost屬性,用來指向運行服務(wù)器程序的遠程計算機的的主機名或IP地址。設(shè)置RemotePort屬性,用來指向服務(wù)器程序的偵聽端口號。使用Connect方法向服務(wù)器提出連接請求。如果服務(wù)器接受了上述請求,客戶機程序就會產(chǎn)生Connect事件,可以根據(jù)需要,在此事件中編寫程序,比如使用MsgBox函數(shù)向用戶提示“連接已成功”之類的信息。連接成功后,就可以根據(jù)需要使用SendData方法向服務(wù)器發(fā)送數(shù)據(jù)了。當(dāng)客戶機程序接收的數(shù)據(jù)時,就會產(chǎn)生DataArrival事件,可以用GetData方法接收數(shù)據(jù)。第34頁,共48頁。34P215 習(xí)題 三、問答題

23、3. 簡述基于Winsock控件的開發(fā)過程。答:1)服務(wù)器程序的開發(fā)模式服務(wù)器程序必須設(shè)置好LocalPort屬性,作為偵聽端口。使用Listen方法使服務(wù)器進入偵聽狀態(tài),等待客戶機的連接請求??蛻魴C程序發(fā)出連接請求后,將觸發(fā)服務(wù)器程序的ConnectionRequest事件,該事件得到一個參數(shù)RequestID。服務(wù)器程序使用Accept方法接受客戶機程序的RequestID請求。至此,服務(wù)器程序就可以使用SendData方法向客戶機發(fā)送數(shù)據(jù)了。當(dāng)服務(wù)器接收到數(shù)據(jù)時,會產(chǎn)生DataArrival事件。在該事件中可使用GetData方法接收數(shù)據(jù)。第35頁,共48頁。35P215 習(xí)題 三、問答

24、題3. 簡述基于Winsock控件的開發(fā)過程。2)客戶機程序的開發(fā)模式首先設(shè)置好RemoteHost屬性,用來指向運行服務(wù)器程序的遠程計算機的的主機名或IP地址。設(shè)置RemotePort屬性,用來指向服務(wù)器程序的偵聽端口號。使用Connect方法向服務(wù)器提出連接請求。如果服務(wù)器接受了上述請求,客戶機程序就會產(chǎn)生Connect事件。連接成功后,就可以根據(jù)需要使用SendData方法向服務(wù)器發(fā)送數(shù)據(jù)了。當(dāng)客戶機程序接收的數(shù)據(jù)時,就會產(chǎn)生DataArrival事件,可以用GetData方法接收數(shù)據(jù)。第36頁,共48頁。36 8.3 其它網(wǎng)絡(luò)應(yīng)用程序設(shè)計 8.3.1 局域網(wǎng)中保證聯(lián)網(wǎng)計算機時間同步 當(dāng)

25、采用客戶機/服務(wù)器模式在局域網(wǎng)上開發(fā)系統(tǒng)時,必須保證所有計算機的時鐘時間一致。在就需要用到統(tǒng)一的時間,以便協(xié)調(diào)工作,最號的方法就是通過程序的方法,解決時鐘同步的問題。第37頁,共48頁。37數(shù)據(jù)服務(wù)器MyServer應(yīng)用程序1應(yīng)用程序2應(yīng)用程序n這是某一應(yīng)用系統(tǒng)的網(wǎng)絡(luò)拓補結(jié)構(gòu),我們可以采用Winsock控件解決眾多客戶機與數(shù)據(jù)服務(wù)器間的時間同步問題。第38頁,共48頁。38 解決時鐘同步的基本思路是:首先精確調(diào)整服務(wù)器的時鐘,然后,當(dāng)客戶機啟動時與服務(wù)器連接,并與服務(wù)器“對時”。這樣,每當(dāng)執(zhí)行應(yīng)用程序時,客戶機就會與服務(wù)器時鐘同步了。第39頁,共48頁。394. 如何保證局域網(wǎng)中聯(lián)網(wǎng)的計算機同

26、步運行? 答:解決時鐘同步的基本思路是:首先精確調(diào)整服務(wù)器的時鐘,然后,當(dāng)客戶機啟動時與服務(wù)器連接,并與服務(wù)器“對時”。這樣,每當(dāng)執(zhí)行應(yīng)用程序時,客戶機就會與服務(wù)器時鐘同步了。P215 習(xí)題 三、問答題 第40頁,共48頁。401.客戶機程序的主要代碼(1)與服務(wù)器建立連接在客戶機主窗體的Load事件中連接服務(wù)器程序,具體方法與聊天程序相同。Private Sub Form_Load() 設(shè)置聊天服務(wù)器的偵聽端口 WinsockClient.RemotePort = 10001 讀取本機的IP地址 txtClientIP.Text = WinsockClient.LocalIP根據(jù)txtSer

27、verIP文本框中輸入的服務(wù)器IP,連接聊天服務(wù)器 WinsockClient.RemoteHost = txtServerIP.Text WinsockClient.Connect如果與服務(wù)器連接成功,則向用戶提供下列信息 MsgBox 你成功地與聊天服務(wù)器進行了連接,End Sub第41頁,共48頁。41(2)其它代碼Private Sub WinsockClient_DataArrival(ByVal bytesTotal) 當(dāng)收到服務(wù)器發(fā)來的數(shù)據(jù)時,完成以下工作: (1)日期數(shù)據(jù)類型接收數(shù)據(jù); (2)設(shè)置本機的系統(tǒng)日期 定義一個日期類型數(shù)據(jù)變量 Dim MyDate As Date 以

28、日期數(shù)據(jù)類型接受服務(wù)器日期數(shù)據(jù) WinsockClient.GetData MyDate,VbDate 使本機的系統(tǒng)日期等于服務(wù)器日期 Date=MyDateEnd Sub第42頁,共48頁。422.服務(wù)端程序主要代碼Private Sub WinsockServer_ConnectionRequest _ (ByVal RequestID As Long) 當(dāng)收到客戶機的連接請求時,完成以下工作: (1)結(jié)束Winsock的偵聽狀態(tài); (2)接受連接請求; (3)將服務(wù)器的系統(tǒng)日期發(fā)送給客戶機 WinsockServer.Close WinsockServer.Accept RequestID 將系統(tǒng)當(dāng)前的時間Date發(fā)送給提出請求的客戶機 WinsockServer.SendDateEnd Sub第43頁,共48頁。438.3.2 Web瀏覽器1.一個簡單的瀏覽器應(yīng)用程序示例(1)創(chuàng)建一個新的“標準EXE”工程。利用“工程”菜單的“部件”選項添加“Windows Internet Controls”以獲得對WebBrowser控件的支持。(2)在Form1窗口上添加Text1、Command1和WebBrowser1等控件。(3)在Comma

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論