版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、VB網(wǎng)絡(luò)程序設(shè)計(jì)網(wǎng)絡(luò)程序設(shè)計(jì)1 1 網(wǎng)絡(luò)聊天程序任務(wù)網(wǎng)絡(luò)聊天程序任務(wù) 1.1 任務(wù)描述任務(wù)描述VB提供了一系列的網(wǎng)絡(luò)編程控件,利用它們,網(wǎng)提供了一系列的網(wǎng)絡(luò)編程控件,利用它們,網(wǎng)絡(luò)編程將成為一件快樂而簡單的工作。絡(luò)編程將成為一件快樂而簡單的工作。VB網(wǎng)絡(luò)控件主要有三種:網(wǎng)絡(luò)控件主要有三種:(1)Winsok控件控件 主要用于編制基于主要用于編制基于TCP/IP或或UDP協(xié)議的網(wǎng)絡(luò)應(yīng)用程序。協(xié)議的網(wǎng)絡(luò)應(yīng)用程序。(2)Internet Transfer控件控件 主要以來傳輸文件,主要以來傳輸文件,執(zhí)行執(zhí)行FTP命令以及登錄服務(wù)器等。命令以及登錄服務(wù)器等。(3)WebBrowser 用于創(chuàng)建瀏覽器用
2、于創(chuàng)建瀏覽器 本節(jié)先介紹本節(jié)先介紹Winsok控件??丶?2 在網(wǎng)絡(luò)編程中最常用的方案是客戶機(jī)在網(wǎng)絡(luò)編程中最常用的方案是客戶機(jī)/ /服務(wù)器服務(wù)器模式(模式(Client/ServerClient/Server,簡稱,簡稱C/SC/S)。這種模式包)。這種模式包含客戶機(jī)和服務(wù)器兩類應(yīng)用程序。其中客戶應(yīng)用含客戶機(jī)和服務(wù)器兩類應(yīng)用程序。其中客戶應(yīng)用程序向服務(wù)器請求服務(wù),而服務(wù)程序通常在一個程序向服務(wù)器請求服務(wù),而服務(wù)程序通常在一個眾所周知的地址偵聽對服務(wù)的請求,也就是說,眾所周知的地址偵聽對服務(wù)的請求,也就是說,服務(wù)進(jìn)程一直處于休眠狀態(tài),直到一個客戶提出服務(wù)進(jìn)程一直處于休眠狀態(tài),直到一個客戶提出了
3、連接請求。此時,服務(wù)持續(xù)將被喚醒,并對客了連接請求。此時,服務(wù)持續(xù)將被喚醒,并對客戶的請求作出適當(dāng)?shù)姆磻?yīng)。戶的請求作出適當(dāng)?shù)姆磻?yīng)。3 聊天服務(wù)程序聊天服務(wù)程序:由客戶端和服務(wù)端兩個程序:由客戶端和服務(wù)端兩個程序組成,采用組成,采用WinsokWinsok控件開發(fā)。這兩個程序可以在控件開發(fā)。這兩個程序可以在同一臺計(jì)算機(jī)上運(yùn)行,也可以在網(wǎng)絡(luò)上不同的計(jì)同一臺計(jì)算機(jī)上運(yùn)行,也可以在網(wǎng)絡(luò)上不同的計(jì)算機(jī)上運(yùn)行。整個系統(tǒng)的運(yùn)行機(jī)制是:算機(jī)上運(yùn)行。整個系統(tǒng)的運(yùn)行機(jī)制是: 第一步:建立連接第一步:建立連接 主要過程是:由客戶端程序向服務(wù)端程序發(fā)主要過程是:由客戶端程序向服務(wù)端程序發(fā)出連接請求,服務(wù)端程序收到并接
4、受連接請求,出連接請求,服務(wù)端程序收到并接受連接請求,至此客戶機(jī)與服務(wù)器創(chuàng)建了數(shù)據(jù)交流通道。至此客戶機(jī)與服務(wù)器創(chuàng)建了數(shù)據(jù)交流通道。 第二步:開始聊天第二步:開始聊天 主要過程是:在客戶機(jī)的主要過程是:在客戶機(jī)的“發(fā)送的信息發(fā)送的信息”文文本框中輸入文字時,服務(wù)器端的本框中輸入文字時,服務(wù)器端的“收到的信息收到的信息”文本框中就會實(shí)時地顯示相同的文字,反之亦然。文本框中就會實(shí)時地顯示相同的文字,反之亦然。41. Winsock控件主要用來編制控件主要用來編制TCP/IP或或 協(xié)議的通話協(xié)議的通話程序。程序。答案:答案:UDP2. 在網(wǎng)絡(luò)編程中最常用的方案是在網(wǎng)絡(luò)編程中最常用的方案是 。答案:客戶
5、機(jī)答案:客戶機(jī)/服務(wù)器程序(服務(wù)器程序(Client/Server)5P215 P215 習(xí)題習(xí)題 三、問答題三、問答題2.2.簡述網(wǎng)絡(luò)聊天程序的運(yùn)行過程。簡述網(wǎng)絡(luò)聊天程序的運(yùn)行過程。答:網(wǎng)絡(luò)聊天程序的運(yùn)行過程是:答:網(wǎng)絡(luò)聊天程序的運(yùn)行過程是: 第一步:建立連接第一步:建立連接 主要過程是:由客戶端程序向服務(wù)端程序發(fā)主要過程是:由客戶端程序向服務(wù)端程序發(fā)出連接請求,服務(wù)端程序收到并接受連接請求,出連接請求,服務(wù)端程序收到并接受連接請求,至此客戶機(jī)與服務(wù)器創(chuàng)建了數(shù)據(jù)交流通道。至此客戶機(jī)與服務(wù)器創(chuàng)建了數(shù)據(jù)交流通道。 第二步:開始聊天第二步:開始聊天 主要過程是:在客戶機(jī)的主要過程是:在客戶機(jī)的“發(fā)
6、送的信息發(fā)送的信息”文文本框中輸入文字時,服務(wù)器端的本框中輸入文字時,服務(wù)器端的“收到的信息收到的信息”文本框中就會實(shí)時地顯示相同的文字,反之亦然。文本框中就會實(shí)時地顯示相同的文字,反之亦然。6 1.2. 1.2. 服務(wù)器的界面設(shè)計(jì)服務(wù)器的界面設(shè)計(jì)1.1.創(chuàng)建一個創(chuàng)建一個“標(biāo)準(zhǔn)標(biāo)準(zhǔn) EXEEXE”工程,選中工程,選中“工程工程”菜單菜單的的“部件部件”,在控件中找到,在控件中找到Microsoft Winsock Microsoft Winsock ControlControl并將其選中。并將其選中。2.2.將將Form1Form1的名稱改為的名稱改為frmSvrfrmSvr,并在其中添加兩個
7、,并在其中添加兩個命令按鈕(命令按鈕(Command1Command1的的CaptionCaption屬性為屬性為“退出退出”,Command2Command2的的CaptionCaption屬性為屬性為“發(fā)送發(fā)送”)。)。3.3.在窗體是添加三個在窗體是添加三個TextBoxTextBox控件,其名稱分別為控件,其名稱分別為txtServerIPtxtServerIP,txtSendtxtSend和和txtReceivetxtReceive。4.4.在窗體上添加一個在窗體上添加一個WinsockWinsock控件,將其控件,將其ProtocolProtocol(協(xié)議)屬性設(shè)置為(協(xié)議)屬性設(shè)
8、置為0 0(即(即sckTCPProtocolsckTCPProtocol)。)。7 1.3 1.3 服務(wù)器程序代碼設(shè)計(jì)服務(wù)器程序代碼設(shè)計(jì)Private Sub Private Sub Form_LoadForm_Load()() 設(shè)置偵聽端口設(shè)置偵聽端口 WinsockServer.LocalPortWinsockServer.LocalPort = 10001 = 10001 讀取服務(wù)器的讀取服務(wù)器的IPIP地址地址 TxtServerIP.TextTxtServerIP.Text = = WinsockServer.LocalIPWinsockServer.LocalIP 開始偵聽開始偵
9、聽 WinsockServer.ListenWinsockServer.ListenEnd SubEnd SubPrivate Sub Command1_Click()Private Sub Command1_Click() 點(diǎn)擊點(diǎn)擊“退出退出”按鈕后關(guān)閉應(yīng)用程序按鈕后關(guān)閉應(yīng)用程序 Unload MeUnload MeEnd SubEnd Sub8 1.3 1.3 服務(wù)器程序代碼設(shè)計(jì)服務(wù)器程序代碼設(shè)計(jì)Private Sub Command2_Click()Private Sub Command2_Click() 只要只要txtSendtxtSend文本框的內(nèi)容寫好以后就由文本框的內(nèi)容寫好以后就
10、由WinsockServerWinsockServer控件發(fā)送控件發(fā)送 WinsockServer.SendData TxtSend.TextWinsockServer.SendData TxtSend.TextEnd SubEnd SubPrivate Sub WinsockServer_ConnectionRequest(ByVal requestID Private Sub WinsockServer_ConnectionRequest(ByVal requestID As Long)As Long) 當(dāng)收到連接請求時,當(dāng)收到連接請求時,WinsockWinsock處于偵聽狀態(tài)處于偵聽狀
11、態(tài) 此時應(yīng)該使用此時應(yīng)該使用CloseClose方法關(guān)閉方法關(guān)閉WinsockWinsock,然后使用,然后使用AcceptAccept方法接方法接受連接請求受連接請求 WinsockServer.CloseWinsockServer.Close WinsockServer.Accept requestID WinsockServer.Accept requestIDEnd Sub End Sub 9 1.3 1.3 服務(wù)器程序代碼設(shè)計(jì)服務(wù)器程序代碼設(shè)計(jì)Private Sub WinsockServer_DataArrival(ByVal Private Sub WinsockServer_D
12、ataArrival(ByVal BytesTotal As Long)BytesTotal As Long) 當(dāng)客戶端有信息發(fā)送來時,利用當(dāng)客戶端有信息發(fā)送來時,利用WinsockServerWinsockServer控件控件的的GatDataGatData方法讀取數(shù)據(jù)方法讀取數(shù)據(jù) 并將其顯示在并將其顯示在txtReceivetxtReceive文本框中文本框中 Dim MyStr As StringDim MyStr As String WinsockServer.GetData MyStr WinsockServer.GetData MyStr TxtReceive.Text = MyS
13、tr TxtReceive.Text = MyStrEnd SubEnd Sub10 1.4 1.4 客戶機(jī)程序界面設(shè)計(jì)客戶機(jī)程序界面設(shè)計(jì)1.1.創(chuàng)建一個新的創(chuàng)建一個新的“標(biāo)準(zhǔn)標(biāo)準(zhǔn) EXEEXE”工程,并添加工程,并添加Winsock Winsock 控件??丶?。2.2.將將Form1Form1的名稱改為的名稱改為frmCltfrmClt,并在其中添加兩個,并在其中添加兩個命令按鈕(命令按鈕(Command1Command1的的CaptionCaption屬性為屬性為“退出退出”, Command2Command2的的CaptionCaption屬性為屬性為“連接服務(wù)器連接服務(wù)器” ,Comm
14、and3Command3的的CaptionCaption屬性為屬性為“發(fā)送發(fā)送”)。)。3.3.在窗體是添加四個在窗體是添加四個TextBoxTextBox控件,其名稱分別為控件,其名稱分別為txtClientIPtxtClientIP,txtServerIPtxtServerIP,txtSendtxtSend和和txtReceivetxtReceive。4.4.在窗體上添加一個在窗體上添加一個WinsockWinsock控件,將其控件,將其ProtocolProtocol(協(xié)議)屬性設(shè)置為(協(xié)議)屬性設(shè)置為0 0(即(即sckTCPProtocolsckTCPProtocol)。)。11 1
15、.4. 客戶機(jī)的程序代碼設(shè)計(jì)客戶機(jī)的程序代碼設(shè)計(jì)Private Sub Form_Load() 設(shè)置聊天服務(wù)器的偵聽端口設(shè)置聊天服務(wù)器的偵聽端口 WinsockClient.RemotePort = 10001 讀取本機(jī)的讀取本機(jī)的IP地址地址 txtClientIP.Text = WinsockClient.LocalIPEnd SubPrivate Sub Command1_Click() 點(diǎn)擊點(diǎn)擊“退出退出”按鈕后關(guān)閉應(yīng)用程序按鈕后關(guān)閉應(yīng)用程序 Unload MeEnd Sub12 1.4. 客戶機(jī)的程序代碼設(shè)計(jì)客戶機(jī)的程序代碼設(shè)計(jì)Private Sub Command2_Click()
16、 根據(jù)根據(jù)txtServerIP文本框中輸入的服務(wù)器文本框中輸入的服務(wù)器IP,連接聊,連接聊天服務(wù)器天服務(wù)器 WinsockClient.RemoteHost = txtServerIP.Text WinsockClient.ConnectEnd SubPrivate Sub Command3_Click() 輸入輸入txtSend文本框的內(nèi)容后由文本框的內(nèi)容后由WinsockServer控控件發(fā)送件發(fā)送 WinsockClient.SendData txtSend.TextEnd Sub13 1.4. 客戶機(jī)的程序代碼設(shè)計(jì)客戶機(jī)的程序代碼設(shè)計(jì)Private Sub WinsockClient
17、_Connect() 如果與服務(wù)器連接成功,則向用戶提供下列信息如果與服務(wù)器連接成功,則向用戶提供下列信息 M s g B o x 你 成 功 地 與 聊 天 服 務(wù) 器 進(jìn) 行 了 連 接你 成 功 地 與 聊 天 服 務(wù) 器 進(jìn) 行 了 連 接 , vbInformationEnd SubPrivate Sub WinsockClient_DataArrival(ByVal BytesTotal As Long) 當(dāng)服務(wù)器有信息發(fā)送來時,利用當(dāng)服務(wù)器有信息發(fā)送來時,利用WinsockClient控件的控件的GatData方法讀取數(shù)據(jù)方法讀取數(shù)據(jù) 并將其顯示在并將其顯示在txtReceive
18、文本框中文本框中 Dim MyStr As String WinsockClient.GetData MyStr txtReceive.Text = MyStrEnd Sub14演示聊天程序演示聊天程序15 2 Winsock控件及網(wǎng)絡(luò)應(yīng)用程序設(shè)計(jì)基礎(chǔ)控件及網(wǎng)絡(luò)應(yīng)用程序設(shè)計(jì)基礎(chǔ) Winsock控件是建立在控件是建立在TCP協(xié)議的基礎(chǔ)上,能夠完成協(xié)議的基礎(chǔ)上,能夠完成遠(yuǎn)程計(jì)算機(jī)間的通信,用途非常廣泛。即使我們對遠(yuǎn)程計(jì)算機(jī)間的通信,用途非常廣泛。即使我們對TCP/IP,TCP這些知識不太熟悉,只要理解了網(wǎng)絡(luò)應(yīng)這些知識不太熟悉,只要理解了網(wǎng)絡(luò)應(yīng)用程序設(shè)計(jì)的一般原理,并對用程序設(shè)計(jì)的一般原理,并對Wi
19、nsock的主要屬性、方的主要屬性、方法和事件有所了解,也可以在很短時間內(nèi)創(chuàng)建一個簡單法和事件有所了解,也可以在很短時間內(nèi)創(chuàng)建一個簡單的網(wǎng)絡(luò)通信程序。的網(wǎng)絡(luò)通信程序。16 2.1 Winsock控件的主要屬性控件的主要屬性Winsock控件主要有八個屬性:控件主要有八個屬性:1. BytesReceived屬性:返回接收到的數(shù)據(jù)。通常用屬性:返回接收到的數(shù)據(jù)。通常用GetData方法來獲取這些數(shù)據(jù)。方法來獲取這些數(shù)據(jù)。2. LocalHostName屬性:返回本地計(jì)算機(jī)的名稱。屬性:返回本地計(jì)算機(jī)的名稱。3. LocalIP屬性:返回本地計(jì)算機(jī)的屬性:返回本地計(jì)算機(jī)的IP地址。地址。4. Lo
20、calPost屬性:返回或者設(shè)置所用的端口,如果設(shè)置為屬性:返回或者設(shè)置所用的端口,如果設(shè)置為0,則使用隨機(jī)端口。則使用隨機(jī)端口。5. Protocol屬性:返回或設(shè)置屬性:返回或設(shè)置Winsock所用的協(xié)議(所用的協(xié)議(TCP或或UDP)。)。6. RemoteHostName屬性,返回或設(shè)置遠(yuǎn)程計(jì)算機(jī)的名稱。屬性,返回或設(shè)置遠(yuǎn)程計(jì)算機(jī)的名稱。7. RemoteHostIP屬性,返回遠(yuǎn)程計(jì)算機(jī)的屬性,返回遠(yuǎn)程計(jì)算機(jī)的IP地址。地址。 State屬性:返回屬性:返回Winsock控件的當(dāng)前狀態(tài)??丶漠?dāng)前狀態(tài)。1718符號常數(shù)符號常數(shù)值值含義含義sckClosed0關(guān)閉狀態(tài),缺省值關(guān)閉狀態(tài),缺
21、省值sckOpen1打開狀態(tài)打開狀態(tài)sckListening2偵聽狀態(tài)偵聽狀態(tài)sckConnectionPending3連接狀態(tài)連接狀態(tài)sckResolvingHost4解析主機(jī)解析主機(jī)sckHostResolved5以解析的主機(jī)以解析的主機(jī)sckConnecting6正在連接正在連接Sckconnected7已經(jīng)連接已經(jīng)連接sckClosing8客戶端正在關(guān)閉連接客戶端正在關(guān)閉連接sckErros9錯誤錯誤Winsock控件的控件的State屬性屬性3. 如果希望得到本地計(jì)算機(jī)的如果希望得到本地計(jì)算機(jī)的IP地址,可以使用地址,可以使用Winsock控件的控件的 屬性。屬性。答案:答案:Loc
22、alIP4. Winsock控件的控件的BytesReceived屬性返回接收到的屬性返回接收到的數(shù)據(jù),通常使用數(shù)據(jù),通常使用 方法來獲取這些數(shù)據(jù)。方法來獲取這些數(shù)據(jù)。答案:答案:GetData3. 如果如果Winsock1.LocaPort=0,那么應(yīng)用程序那么應(yīng)用程序?qū)?。答案:使用隨機(jī)端口答案:使用隨機(jī)端口19 2.2 Winsock 2.2 Winsock控件的主要方法控件的主要方法WinsockWinsock控件的方法主要有六個:控件的方法主要有六個:1. Listen1. Listen方法方法語法:語法: WinsockWinsock對象對象.Listen.Listen作用:使服
23、務(wù)器處于偵聽狀態(tài),等待客戶訪問。作用:使服務(wù)器處于偵聽狀態(tài),等待客戶訪問。2. Connect2. Connect方法方法語法:語法: WinsockWinsock對象對象.Connect.Connect遠(yuǎn)程主機(jī)遠(yuǎn)程主機(jī)IPIP,遠(yuǎn),遠(yuǎn)程端口程端口 作用:用于向遠(yuǎn)程主機(jī)發(fā)出連接請求。作用:用于向遠(yuǎn)程主機(jī)發(fā)出連接請求。3. Accept3. Accept方法方法語法:語法: WinsockWinsock對象對象.Accept RequestID.Accept RequestID作用:用于接受一個連接請求,其中作用:用于接受一個連接請求,其中RequestIDRequestID是客戶機(jī)發(fā)來的請求信
24、號是客戶機(jī)發(fā)來的請求信號20 2.2 Winsock 2.2 Winsock控件的主要方法控件的主要方法WinsockWinsock控件的方法主要有六個:控件的方法主要有六個:4. SendData4. SendData方法方法語法:語法: WinsockWinsock對象對象.SendData .SendData 數(shù)據(jù)數(shù)據(jù)作用:用于發(fā)送數(shù)據(jù)作用:用于發(fā)送數(shù)據(jù)5. GetData5. GetData方法方法語法:語法: WinsockWinsock對象對象. GetData . GetData 變量變量 數(shù)據(jù)類型數(shù)據(jù)類型 ,最大長度最大長度 作用:用來獲得接收到的數(shù)據(jù)作用:用來獲得接收到的數(shù)據(jù)
25、6. Clcse6. Clcse方法方法語法:語法: WinsockWinsock對象對象.Close.Close作用:關(guān)閉當(dāng)前連接作用:關(guān)閉當(dāng)前連接215. Winsock1.Listen語句的含義是語句的含義是 。答案:答案:LocalIP使服務(wù)器處于偵聽狀態(tài),等待客戶訪問。使服務(wù)器處于偵聽狀態(tài),等待客戶訪問。22 2.3 Winsock 2.3 Winsock控件的主要事件控件的主要事件WinsockWinsock控件的事件主要有兩個:控件的事件主要有兩個:1.DataArrival1.DataArrival事件:一旦數(shù)據(jù)到達(dá),就會觸發(fā)事件:一旦數(shù)據(jù)到達(dá),就會觸發(fā)該事件。它通常與該事件。
26、它通常與GetDataGetData方法一起使用,通方法一起使用,通過過GetDataGetData方法獲得新到達(dá)的數(shù)據(jù)。方法獲得新到達(dá)的數(shù)據(jù)。2. ConnectionRequest2. ConnectionRequest事件:當(dāng)客戶機(jī)使用事件:當(dāng)客戶機(jī)使用ConnectConnect方法請求連接時觸發(fā)該事件,它通常方法請求連接時觸發(fā)該事件,它通常與與AcceptAccept方法一起使用,用來接受客戶機(jī)的連方法一起使用,用來接受客戶機(jī)的連接請求。接請求。231. 一旦數(shù)據(jù)到達(dá),將首先觸發(fā)一旦數(shù)據(jù)到達(dá),將首先觸發(fā)Winsock控件的(控件的( )。)。A. DataArrival事件事件B.
27、ConnectionRequest事件事件C. DataSand事件事件D. DataGet事件事件答案:答案:B242. 要發(fā)送數(shù)據(jù),通常使用要發(fā)送數(shù)據(jù),通常使用Winsock控件的(控件的( )。)。A. SendData方法方法B. Listen方法方法C. Accept方法方法D. GetData方法方法答案:答案:A253. 當(dāng)當(dāng)Winsock控件處于關(guān)閉狀態(tài)時,其控件處于關(guān)閉狀態(tài)時,其State屬性的屬性的值是(值是( )。)。A. 1B. 0C. 2D. 6答案:答案:B264. 當(dāng)當(dāng)Winsock控件的控件的LocalPort屬性的作用是(屬性的作用是( )。)。A. 僅返回所
28、有端口僅返回所有端口B. 僅設(shè)置所有端口僅設(shè)置所有端口C. 返回或設(shè)置所有端口返回或設(shè)置所有端口D. 返回或設(shè)置返回或設(shè)置IP地址地址答案:答案:B275. 當(dāng)使用當(dāng)使用SendData將數(shù)據(jù)發(fā)送到主機(jī)后時,將觸發(fā)將數(shù)據(jù)發(fā)送到主機(jī)后時,將觸發(fā)的的Winsock控件的是(控件的是( )。)。A. SendProgressB. MouseDownC. ClickD. KeyPress答案:答案:A28 2.4 2.4 網(wǎng)絡(luò)應(yīng)用程序設(shè)計(jì)基礎(chǔ)網(wǎng)絡(luò)應(yīng)用程序設(shè)計(jì)基礎(chǔ)1. 1. 基于基于SocketSocket的通信過程的通信過程WinsockWinsock控件是基于控件是基于SocketSocket接口(
29、套接字)創(chuàng)建的。接口(套接字)創(chuàng)建的。它是現(xiàn)在它是現(xiàn)在TCP/IPTCP/IP網(wǎng)絡(luò)中最通用的網(wǎng)絡(luò)中最通用的APIAPI(應(yīng)用程序(應(yīng)用程序接口),也是在接口),也是在InternetInternet上進(jìn)行應(yīng)用程序開發(fā)最上進(jìn)行應(yīng)用程序開發(fā)最通用的通用的APIAPI。Windows SocketWindows Socket規(guī)范已成為規(guī)范已成為WindowsWindows網(wǎng)絡(luò)編程的標(biāo)準(zhǔn)。網(wǎng)絡(luò)編程的標(biāo)準(zhǔn)。SocketSocket在計(jì)算機(jī)中提供了一個通信端口,可以通在計(jì)算機(jī)中提供了一個通信端口,可以通過這個端口與任何一個也同樣具有過這個端口與任何一個也同樣具有SocketSocket接口的接口的計(jì)算機(jī)進(jìn)
30、行通信。應(yīng)用程序在網(wǎng)絡(luò)上傳輸、接收計(jì)算機(jī)進(jìn)行通信。應(yīng)用程序在網(wǎng)絡(luò)上傳輸、接收的信息都通過這個的信息都通過這個SocketSocket接口來實(shí)現(xiàn)。基于接口來實(shí)現(xiàn)。基于SocketSocket的通信過程如下頁圖所示:的通信過程如下頁圖所示:2930SocketSocket應(yīng)用程序應(yīng)用程序A發(fā)送發(fā)送發(fā)送發(fā)送接收接收接收接收應(yīng)用程序應(yīng)用程序B通信細(xì)節(jié)通信細(xì)節(jié)利用利用Socket進(jìn)行網(wǎng)絡(luò)編程,只需對進(jìn)行網(wǎng)絡(luò)編程,只需對Socket接口進(jìn)行接口進(jìn)行數(shù)據(jù)的讀寫操作,根本不必關(guān)心兩臺計(jì)算機(jī)間的通數(shù)據(jù)的讀寫操作,根本不必關(guān)心兩臺計(jì)算機(jī)間的通信細(xì)節(jié)就能夠完成數(shù)據(jù)的發(fā)送和接收工作。信細(xì)節(jié)就能夠完成數(shù)據(jù)的發(fā)送和接收工
31、作。31SocketSocket應(yīng)用程序應(yīng)用程序A發(fā)送發(fā)送發(fā)送發(fā)送接收接收接收接收應(yīng)用程序應(yīng)用程序B通信細(xì)節(jié)通信細(xì)節(jié) 利用利用Socket進(jìn)行網(wǎng)絡(luò)編程,只需對進(jìn)行網(wǎng)絡(luò)編程,只需對Socket接口進(jìn)行數(shù)據(jù)的接口進(jìn)行數(shù)據(jù)的讀寫操作,根本不必關(guān)心兩臺計(jì)算機(jī)間的通信細(xì)節(jié)就能夠完讀寫操作,根本不必關(guān)心兩臺計(jì)算機(jī)間的通信細(xì)節(jié)就能夠完成數(shù)據(jù)的發(fā)送和接收工作。成數(shù)據(jù)的發(fā)送和接收工作。P 215 習(xí)題習(xí)題 三三 問答題問答題1. 簡述基于簡述基于Socket的通信過程。的通信過程。2. 2.基于基于WinsockWinsock控件的開發(fā)模式控件的開發(fā)模式VBVB提供的提供的WinsockWinsock控件正是基
32、于控件正是基于SocketSocket規(guī)范創(chuàng)建的。規(guī)范創(chuàng)建的。利用利用WinsockWinsock控件開發(fā)網(wǎng)絡(luò)通信系統(tǒng)時,通常要涉控件開發(fā)網(wǎng)絡(luò)通信系統(tǒng)時,通常要涉及到服務(wù)器和客戶機(jī)兩類應(yīng)用程序:及到服務(wù)器和客戶機(jī)兩類應(yīng)用程序:(1 1)服務(wù)器程序的開發(fā)模式)服務(wù)器程序的開發(fā)模式v服務(wù)器程序必須設(shè)置好服務(wù)器程序必須設(shè)置好LocalPortLocalPort屬性,作為偵聽屬性,作為偵聽端口。該值可設(shè)置成任何一個整數(shù),只要其它應(yīng)端口。該值可設(shè)置成任何一個整數(shù),只要其它應(yīng)用程序沒有使用過的值即可,單習(xí)慣上應(yīng)大于用程序沒有使用過的值即可,單習(xí)慣上應(yīng)大于10001000。v使用使用ListenListen
33、方法使服務(wù)器進(jìn)入偵聽狀態(tài),等待客戶方法使服務(wù)器進(jìn)入偵聽狀態(tài),等待客戶機(jī)的連接請求。機(jī)的連接請求。322. 2.基于基于WinsockWinsock控件的開發(fā)模式控件的開發(fā)模式(1 1)服務(wù)器程序的開發(fā)模式)服務(wù)器程序的開發(fā)模式v客戶機(jī)程序發(fā)出連接請求后,將觸發(fā)服務(wù)器程序客戶機(jī)程序發(fā)出連接請求后,將觸發(fā)服務(wù)器程序的的ConnectionRequestConnectionRequest事件,該事件得到一個參數(shù)事件,該事件得到一個參數(shù)RequestIDRequestID。v服務(wù)器程序使用服務(wù)器程序使用AcceptAccept方法接受客戶機(jī)程序的方法接受客戶機(jī)程序的RequestIDRequestID
34、請求。至此,服務(wù)器程序就可以使用請求。至此,服務(wù)器程序就可以使用SendDataSendData方法向客戶機(jī)發(fā)送數(shù)據(jù)了。方法向客戶機(jī)發(fā)送數(shù)據(jù)了。v當(dāng)服務(wù)器接收到數(shù)據(jù)時,會產(chǎn)生當(dāng)服務(wù)器接收到數(shù)據(jù)時,會產(chǎn)生DataArrivalDataArrival事件。事件。在該事件中可使用在該事件中可使用GetDataGetData方法接收數(shù)據(jù)。方法接收數(shù)據(jù)。33343. 簡述基于簡述基于Winsock控件的開發(fā)過程。控件的開發(fā)過程。答:答:1 1)服務(wù)器程序的開發(fā)模式)服務(wù)器程序的開發(fā)模式服務(wù)器程序必須設(shè)置好服務(wù)器程序必須設(shè)置好LocalPortLocalPort屬性,作為偵聽端屬性,作為偵聽端口。使用口。
35、使用ListenListen方法使服務(wù)器進(jìn)入偵聽狀態(tài),等待方法使服務(wù)器進(jìn)入偵聽狀態(tài),等待客戶機(jī)的連接請求。客戶機(jī)程序發(fā)出連接請求后,客戶機(jī)的連接請求??蛻魴C(jī)程序發(fā)出連接請求后,將觸發(fā)服務(wù)器程序的將觸發(fā)服務(wù)器程序的ConnectionRequestConnectionRequest事件,該事事件,該事件得到一個參數(shù)件得到一個參數(shù)RequestIDRequestID。服務(wù)器程序使用。服務(wù)器程序使用AcceptAccept方法接受客戶機(jī)程序的方法接受客戶機(jī)程序的RequestIDRequestID請求。至請求。至此,服務(wù)器程序就可以使用此,服務(wù)器程序就可以使用SendDataSendData方法向客
36、戶機(jī)方法向客戶機(jī)發(fā)送數(shù)據(jù)了。當(dāng)服務(wù)器接收到數(shù)據(jù)時,會產(chǎn)生發(fā)送數(shù)據(jù)了。當(dāng)服務(wù)器接收到數(shù)據(jù)時,會產(chǎn)生DataArrivalDataArrival事件。在該事件中可使用事件。在該事件中可使用GetDataGetData方法方法接收數(shù)據(jù)。接收數(shù)據(jù)。353. 簡述基于簡述基于Winsock控件的開發(fā)過程??丶拈_發(fā)過程。2 2)客戶機(jī)程序的開發(fā)模式)客戶機(jī)程序的開發(fā)模式首先設(shè)置好首先設(shè)置好RemoteHost屬性,用來指向運(yùn)行服務(wù)器屬性,用來指向運(yùn)行服務(wù)器程序的遠(yuǎn)程計(jì)算機(jī)的的主機(jī)名或程序的遠(yuǎn)程計(jì)算機(jī)的的主機(jī)名或IP地址。設(shè)置地址。設(shè)置RemotePort屬性,用來指向服務(wù)器程序的偵聽端口屬性,用來指向服
37、務(wù)器程序的偵聽端口號。使用號。使用Connect方法向服務(wù)器提出連接請求。如方法向服務(wù)器提出連接請求。如果服務(wù)器接受了上述請求,客戶機(jī)程序就會產(chǎn)生果服務(wù)器接受了上述請求,客戶機(jī)程序就會產(chǎn)生Connect事件。連接成功后,就可以根據(jù)需要使用事件。連接成功后,就可以根據(jù)需要使用SendData方法向服務(wù)器發(fā)送數(shù)據(jù)了。當(dāng)客戶機(jī)程序方法向服務(wù)器發(fā)送數(shù)據(jù)了。當(dāng)客戶機(jī)程序接收的數(shù)據(jù)時,就會產(chǎn)生接收的數(shù)據(jù)時,就會產(chǎn)生DataArrival事件,可以用事件,可以用GetData方法接收數(shù)據(jù)。方法接收數(shù)據(jù)。36 3 3 其它網(wǎng)絡(luò)應(yīng)用程序設(shè)計(jì)其它網(wǎng)絡(luò)應(yīng)用程序設(shè)計(jì) 3.1 3.1 局域網(wǎng)中保證聯(lián)網(wǎng)計(jì)算機(jī)時間同步局域
38、網(wǎng)中保證聯(lián)網(wǎng)計(jì)算機(jī)時間同步 當(dāng)采用客戶機(jī)當(dāng)采用客戶機(jī)/ /服務(wù)器模式在局域網(wǎng)上開發(fā)系統(tǒng)時,服務(wù)器模式在局域網(wǎng)上開發(fā)系統(tǒng)時,必須保證所有計(jì)算機(jī)的時鐘時間一致。在就需要用到統(tǒng)必須保證所有計(jì)算機(jī)的時鐘時間一致。在就需要用到統(tǒng)一的時間,以便協(xié)調(diào)工作,最號的方法就是通過程序的一的時間,以便協(xié)調(diào)工作,最號的方法就是通過程序的方法,解決時鐘同步的問題。方法,解決時鐘同步的問題。3738數(shù)據(jù)服務(wù)器數(shù)據(jù)服務(wù)器MyServer應(yīng)用程序應(yīng)用程序1應(yīng)用程序應(yīng)用程序2應(yīng)用程序應(yīng)用程序n這是某一應(yīng)用系統(tǒng)的網(wǎng)絡(luò)拓補(bǔ)結(jié)構(gòu),我們可以采用這是某一應(yīng)用系統(tǒng)的網(wǎng)絡(luò)拓補(bǔ)結(jié)構(gòu),我們可以采用Winsock控件解決眾多客戶機(jī)與數(shù)據(jù)服務(wù)器間的
39、時間同步問題??丶鉀Q眾多客戶機(jī)與數(shù)據(jù)服務(wù)器間的時間同步問題。 解決時鐘同步的基本思路是:首先精確調(diào)整服解決時鐘同步的基本思路是:首先精確調(diào)整服務(wù)器的時鐘,然后,當(dāng)客戶機(jī)啟動時與服務(wù)器連接,務(wù)器的時鐘,然后,當(dāng)客戶機(jī)啟動時與服務(wù)器連接,并與服務(wù)器并與服務(wù)器“對時對時”。這樣,每當(dāng)執(zhí)行應(yīng)用程序時,。這樣,每當(dāng)執(zhí)行應(yīng)用程序時,客戶機(jī)就會與服務(wù)器時鐘同步了。客戶機(jī)就會與服務(wù)器時鐘同步了。394. 如何保證局域網(wǎng)中聯(lián)網(wǎng)的計(jì)算機(jī)同步運(yùn)行?如何保證局域網(wǎng)中聯(lián)網(wǎng)的計(jì)算機(jī)同步運(yùn)行? 答:答:解決時鐘同步的基本思路是:首先精確調(diào)整服解決時鐘同步的基本思路是:首先精確調(diào)整服務(wù)器的時鐘,然后,當(dāng)客戶機(jī)啟動時與服務(wù)器
40、連接,務(wù)器的時鐘,然后,當(dāng)客戶機(jī)啟動時與服務(wù)器連接,并與服務(wù)器并與服務(wù)器“對時對時”。這樣,每當(dāng)執(zhí)行應(yīng)用程序時,。這樣,每當(dāng)執(zhí)行應(yīng)用程序時,客戶機(jī)就會與服務(wù)器時鐘同步了。客戶機(jī)就會與服務(wù)器時鐘同步了。40P215 習(xí)題習(xí)題 三、問答題三、問答題 1.1.客戶機(jī)程序的主要代碼客戶機(jī)程序的主要代碼(1 1)與服務(wù)器建立連接)與服務(wù)器建立連接在客戶機(jī)主窗體的在客戶機(jī)主窗體的LoadLoad事件中連接服務(wù)器程序,具體方法與聊事件中連接服務(wù)器程序,具體方法與聊天程序相同。天程序相同。Private Sub Form_Load() 設(shè)置聊天服務(wù)器的偵聽端口設(shè)置聊天服務(wù)器的偵聽端口 WinsockClien
41、t.RemotePort = 10001 讀取本機(jī)的讀取本機(jī)的IP地址地址 txtClientIP.Text = WinsockClient.LocalIP根據(jù)根據(jù)txtServerIP文本框中輸入的服務(wù)器文本框中輸入的服務(wù)器IP,連接聊天服務(wù)器,連接聊天服務(wù)器 WinsockClient.RemoteHost = txtServerIP.Text WinsockClient.Connect如果與服務(wù)器連接成功,則向用戶提供下列信息如果與服務(wù)器連接成功,則向用戶提供下列信息 MsgBox 你成功地與聊天服務(wù)器進(jìn)行了連接你成功地與聊天服務(wù)器進(jìn)行了連接,End Sub41(2)其它代碼)其它代碼P
42、rivate Sub WinsockClient_DataArrival(ByVal bytesTotal) 當(dāng)收到服務(wù)器發(fā)來的數(shù)據(jù)時,完成以下工作:當(dāng)收到服務(wù)器發(fā)來的數(shù)據(jù)時,完成以下工作: (1)日期數(shù)據(jù)類型接收數(shù)據(jù);)日期數(shù)據(jù)類型接收數(shù)據(jù); (2)設(shè)置本機(jī)的系統(tǒng)日期)設(shè)置本機(jī)的系統(tǒng)日期 定義一個日期類型數(shù)據(jù)變量定義一個日期類型數(shù)據(jù)變量 Dim MyDate As Date 以日期數(shù)據(jù)類型接受服務(wù)器日期數(shù)據(jù)以日期數(shù)據(jù)類型接受服務(wù)器日期數(shù)據(jù) WinsockClient.GetData MyDate,VbDate 使本機(jī)的系統(tǒng)日期等于服務(wù)器日期使本機(jī)的系統(tǒng)日期等于服務(wù)器日期 Date=MyDat
43、eEnd Sub422. 2.服務(wù)端程序主要代碼服務(wù)端程序主要代碼Private Sub WinsockServer_ConnectionRequest _ (ByVal RequestID As Long) 當(dāng)收到客戶機(jī)的連接請求時,完成以下工作:當(dāng)收到客戶機(jī)的連接請求時,完成以下工作: (1)結(jié)束)結(jié)束Winsock的偵聽狀態(tài);的偵聽狀態(tài); (2)接受連接請求;)接受連接請求; (3)將服務(wù)器的系統(tǒng)日期發(fā)送給客戶機(jī))將服務(wù)器的系統(tǒng)日期發(fā)送給客戶機(jī) WinsockServer.Close WinsockServer.Accept RequestID 將系統(tǒng)當(dāng)前的時間將系統(tǒng)當(dāng)前的時間Date發(fā)
44、送給提出請求的客戶機(jī)發(fā)送給提出請求的客戶機(jī) WinsockServer.SendDateEnd Sub43 3.2 Web 3.2 Web瀏覽器瀏覽器1.1.一個簡單的瀏覽器應(yīng)用程序示例一個簡單的瀏覽器應(yīng)用程序示例(1 1)創(chuàng)建一個新的)創(chuàng)建一個新的“標(biāo)準(zhǔn)標(biāo)準(zhǔn)EXEEXE”工程。利用工程。利用“工程工程”菜單的菜單的“部件部件”選項(xiàng)添加選項(xiàng)添加“Windows Internet ControlsWindows Internet Controls”以獲得對以獲得對WebBrowserWebBrowser控件的支持??丶闹С?。(2 2)在)在Form1Form1窗口上添加窗口上添加Text1Te
45、xt1、Command1Command1和和WebBrowser1WebBrowser1等等控件??丶#? 3)在)在Command1Command1控件的控件的ClickClick事件中,添加如下代碼:事件中,添加如下代碼: Private Sub Command1_Click( )Private Sub Command1_Click( ) 連接要瀏覽的網(wǎng)站地址連接要瀏覽的網(wǎng)站地址 WebBrowser1.Navigate Text1.TextWebBrowser1.Navigate Text1.Text End Sub End Sub(4 4)運(yùn)行程序。在)運(yùn)行程序。在Text1Text1輸入網(wǎng)址后,單擊輸入網(wǎng)址后,單擊Command1Command1連接按連接按鈕,即可進(jìn)入有關(guān)網(wǎng)頁。(演示)
溫馨提示
- 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 委托水稻收購協(xié)議
- 2025年江蘇南京溧水商貿(mào)旅游集團(tuán)招聘筆試參考題庫含答案解析
- 2025版學(xué)生入學(xué)協(xié)議書(含國際化教育與合作交流)3篇
- 2025版旅游商品銷售合同模板(含行程安排)
- 2025-2030全球空調(diào)箔行業(yè)調(diào)研及趨勢分析報(bào)告
- 2025-2030全球數(shù)字按鍵鍵盤行業(yè)調(diào)研及趨勢分析報(bào)告
- 2025年度裝修工程合同糾紛處理范本4篇
- 2024年平安、自護(hù)、維權(quán)知識競賽試題及答案
- 2024年教師資格之中學(xué)教育知識與能力題庫綜合試卷A卷(附答案) (二)
- 維修門樓的簡單合同書
- 《健康體檢知識》課件
- 《大模型原理與技術(shù)》全套教學(xué)課件
- 2023年護(hù)理人員分層培訓(xùn)、考核計(jì)劃表
- 生產(chǎn)計(jì)劃主管述職報(bào)告
- GB/T 44769-2024能源互聯(lián)網(wǎng)數(shù)據(jù)平臺技術(shù)規(guī)范
- 2025年四川省新高考八省適應(yīng)性聯(lián)考模擬演練(二)地理試卷(含答案詳解)
- 【經(jīng)典文獻(xiàn)】《矛盾論》全文
- 部編版語文五年級下冊 第一單元 專項(xiàng)訓(xùn)練課外閱讀(含答案)
- 2024年寧夏回族自治區(qū)中考英語試題含解析
- 光伏發(fā)電項(xiàng)目試驗(yàn)檢測計(jì)劃
- 《老山界》第1第2課時示范公開課教學(xué)PPT課件【統(tǒng)編人教版七年級語文下冊】
評論
0/150
提交評論