基于VB的點對點通信程序的設計_第1頁
基于VB的點對點通信程序的設計_第2頁
基于VB的點對點通信程序的設計_第3頁
基于VB的點對點通信程序的設計_第4頁
基于VB的點對點通信程序的設計_第5頁
已閱讀5頁,還剩3頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、=Word行業(yè)資料分享-可編輯版本-雙擊可刪=基于VB的點對點通信設計目標用Visual Basic編程,實現(xiàn)雙機點對點通信,能將鍵盤上輸入的數(shù)據(jù)發(fā)送到另一臺計算機上;能 將接收到的數(shù)據(jù)顯示到屏幕窗口內(nèi)。設計原理和方法首先應該建立兩個應用程序,一個作為服務器,一個作為客戶端,通過Winsock控件來實現(xiàn)雙機的點對點通信。Winsock控件是VB5.0的新增功能,它解決了以往應用 VB編程時網(wǎng)絡中應用程序之間無法實現(xiàn)點對 點通信的難題。利用 Winsock控件可以與遠程計算機建立連接,并通過用戶數(shù)據(jù)報文協(xié)議( UDP或傳 輸控制協(xié)議(TCP進行數(shù)據(jù)交換。這兩種協(xié)議都可以用來創(chuàng)建客戶與服務器應用程

2、序。1)在使用Winsock控件時,首先需要考慮使用什么協(xié)議。TCP協(xié)議控件是基于連接的協(xié)議,可以將它同電話系統(tǒng)相比。在開始數(shù)據(jù)傳輸之前,用戶必須先建 立連接,適用于傳送大容量、需要安全性保證的數(shù)據(jù)文件。UD的議是一種無連接協(xié)議,兩臺計算機之間的傳輸類似于傳遞郵件。消息從一臺計算機發(fā)送到另一臺計算機,但是兩者之間沒有明確的連接。另外,單次傳輸?shù)淖畲髷?shù)據(jù)量取決于具體的網(wǎng)絡。但本設計中要實現(xiàn)收發(fā)數(shù)據(jù)時,應用程序需要得到客戶端或者服務器的確認信息,而且點對點通 信要求通信質(zhì)量高,所以選擇TCP協(xié)議,即客戶端和服務器加入的控件協(xié)議均設置為sckTCPProtocol。TCP1、議是一個面向連接、全雙工

3、、可靠的、按序傳送的傳輸層協(xié)議,允許創(chuàng)建和維護與遠程計算機的連接,連接的計算機可彼此進行數(shù)據(jù)傳輸。如果創(chuàng)建客戶應用程序,就必須知道服務器計算機名或者IP 地址(RemoteHost屬性),還要知道進行“偵聽”的端口( RemotePort屬性),然后調(diào)用Connect方法。如果創(chuàng)建服務器應用程序,就應設置一個收聽端口 ( LocalPort屬性)并調(diào)用Listen方法。當客戶計算機需要連接時就會發(fā)生ConnectionRequest事件,為完成連接,可在ConnectionRequest事件中調(diào)用Accept方法。建立連接后,任何一方都可以通過 SendData發(fā)送和接收數(shù)據(jù),并借助GetDa

4、ta把 自己的數(shù)據(jù)分離出來。傳送數(shù)據(jù)時,需要先設定客戶機的LocalPort屬性,服務器則只需要把RemoteHost屬性設定為客戶機以太網(wǎng)的地址,并設定與客戶機LocalPort屬性相同的端口地址,借助SendData方法開始發(fā)送消息。客戶機則在GetData事件中通過DataArrival事件分離出發(fā)送的信息。Winsock控件的工作原理:客戶端向服務器端發(fā)出連接請求,服務器端則不停地監(jiān)聽客戶端的請求,當兩者的協(xié)議溝通時,客戶端和服務器端之間就建立了連接 ,這時客戶端和服務器端就可以實 現(xiàn)雙向數(shù)據(jù)傳輸。 TOC o 1-5 h z 一個連接的生存周期包括以下幾步:.服務器應用程序監(jiān)聽一個特

5、殊的窗口,.客戶程序請求和服務器程序建立連接,.服務器程序接受連接,.數(shù)據(jù)在客戶程序和服務器程序之間傳送,.客戶程序或服務器程序關閉連接。Winsock控件的主要方法 :Listen:將其設置為聆聽模式,才有可能接收另一方的連接請求;Close:將終止雙方的連接,而且對方也會引發(fā)close事件。SendData:將數(shù)據(jù)傳送給遠程計算機,一般傳送字符串數(shù)據(jù)時,只要將字符串當成自變量傳送即 可,如果是二進制數(shù)據(jù)的話,傳輸數(shù)據(jù)就必須以字節(jié)數(shù)組的方式儲存;GetData :截取目前的數(shù)據(jù)塊,將其存儲在參數(shù)所定的變量中;源-于-網(wǎng)-絡-收-集=Word行業(yè)資料分享-可編輯版本-雙擊可刪=Winsock控

6、件的編程參數(shù):LocalHostName屬性:返回本地計算機的IP地址,格式是IP地址加點字符串(xxx.xxx.xxx.xxx ), 在設計時是只讀的,而且是不可用的。LocalPort 屬性:返回或者設置所用到的本地端口。在設計時是可讀/可寫的,而且是可用的。對用戶說,該屬性用來指定發(fā)送數(shù)據(jù)的本地端口。如果應用程序不需要特定端口,則指定0為端口號。在這種情況下,控件將選擇一個隨機端口。在建立起連接之后,這就是用于TC睢接的本地端口。Protocol屬性:返回或設置 Winsock控件所使用的協(xié)議,本設計中選用TC曲、議,Protocol值為0。RemoteHostIP屬性:返回遠程計算機的

7、IP地址。RemotePort屬性:返回或設置要連接的遠程端口號。Port為要連接的端口,只要不是特定的端口,都可以,但是要確保客戶端和服務器的端口設置一致。Winsock控件的主要事件connectionrequest :請求連接時產(chǎn)生connect :接受連接時產(chǎn)生close :關閉連接時產(chǎn)生dataArrival :發(fā)送數(shù)據(jù)產(chǎn)生error :請求連接失敗時產(chǎn)生6)用Winsock控件設計應用程序VB6.0通過Winsock控件提供傳輸月艮務原語,傳輸月艮務原語包括:LISTEN、CONNEC TSEND RECEIEV和 DISCONNECT.窗體設計思路無論是客戶端還是服務器端,兩個窗

8、體中至少應該包含兩個文本框,一個顯示發(fā)送數(shù)據(jù),一個顯 示接收數(shù)據(jù);包含一個 winsock控件,控件屬性獨立設置,但應遵從TC曲議;一個命令按鈕控件,點擊發(fā)送信息??蛻舳舜绑w要連接到服務器,還應在界面上有一個輸入文本框供用戶選擇要連接的主機。另外再 添加兩個命令按鈕控件,分別作為建立連接和關閉連接。具體方法如下:.創(chuàng)建服務器應用程序(1)創(chuàng)建新的StandardEXE工程。(2)將窗體的標題改為“服務器”。(3)將默認的窗體的名稱改為frmServer ,文件名為frmServer.frm 。(4)在窗體上放置一個 Winsock控件,將其命名為tcpServer ”,在窗體的load事件中,

9、置Winsock 控件的本地端口號為“ 2008”,并調(diào)用listen方法開始偵聽。(5)在窗體上添加兩個框架,將第1個命名為“接收數(shù)據(jù)顯示窗口”,第2個命名為“發(fā)送數(shù)據(jù)顯示窗口”,并分別在兩個框架上各添加一個TextBox文本框控件。將第1個命名為“ txtOutPut ,第2個為“ txtSendData : 并將其Text屬性設置為“空”。再添加一個按鈕控件Command 1將其標題改為“發(fā)送信息”。為了讓文本框支持多行文本輸入,需要修改兩個文本框的屬性。即將 Multiline 屬性設置為Ture ,ScrollBars 屬性值設置為2 (Vertical )。當輸入多行文本時,出現(xiàn)垂

10、直滾動條。(6)在 Winsock控件的ConnectionRequest事件中調(diào)用 Winsock控件的Accept方法接受客戶機的連代碼如下:Private Sub tcpServer_ConnectionRequest(ByVal requestID As Long)If tcpServer.State sckClosed ThentcpServer.ClosetcpServer.Accept requestID End If源-于-網(wǎng)-絡-收-集=Word行業(yè)資料分享-可編輯版本-雙擊可刪=End Sub(7)在Winsock控件的DataArrival事件中,使用Winsock控件的

11、GetData方法捕獲發(fā)送端發(fā)來的消代碼如下:Private Sub tcpServer_DataArrival(ByVal bytesTotal As Long)Dim strData As StringtcpServer.GetData Tmp, vbStringTmp = TmptxtOutput.Text = TmpEnd Sub(8)在按鈕控件的Click事件中,調(diào)用Winsock控件的SendData方法將服務器輸出數(shù)據(jù)發(fā)送回去(作為一種最簡單的響應)。代碼如下:Private Sub Command1_Click()tcpServer.SendData txtSendData.T

12、extEnd Sub3.創(chuàng)建客戶端應用程序(1)在工程中創(chuàng)建一個新的窗體,標題改為“客戶端”。(2)將窗體名稱改為frmClient ,文件名為“frmClient.frm 。(3)在窗體上添加兩個框架,將第 1個命名為“接收數(shù)據(jù)顯示窗口”,第2個命名為“發(fā)送數(shù)據(jù)顯示窗口”,并分別在兩個框架上各添加一個TextBox文本框控件。將第1個命名為“ txtOutPut ,第2個為“txtSendData ,并將兩個文本框Text屬性設置為“空”。同服務器文本框支持多行輸入一樣, 修改兩個文本框的屬性,即將 Multiline 屬性設置為“ Ture ,ScrollBars 屬性值設置為“ 2”(V

13、ertical )。另外再在窗體上放置一個文本框,用來輸入服務器IP地址(text1);三個命令按鈕控件分別命名為cmdConnect、 Command2、 Command1,并將其標題改為“建立連接、關閉連接、 “發(fā)送信息”;一個Winsock控件并將其命名為“ tcpClient ”。(4)在連接按鈕的click事件中,設置Winsock控件的遠程IP地址(text1.text )和遠程端口號2008, 并調(diào)用Winsock控件的connect方法向服務器發(fā)起連接。代碼如下:Private Sub cmdConnect_Click()tcpClient.Connect Text1.Text

14、, 2008txtOutput.Text =恭喜您,已成功連接到服務器!End Sub(5)在發(fā)送按鈕的click事件中,調(diào)用Winsock控件的SendData方法向服務器發(fā)送數(shù)據(jù)。代碼如下:Private Sub Command1_Click()tcpClient.SendData txtSendData.TextEnd Sub(6)在關閉按鈕控件的 Click事件中,調(diào)用Winsock控件的Close方法響應服務器的斷開連接請求。 代碼如下:Private Sub Command2_Click()txtOutput.Text =您已斷開連接+ Chr$(13) + Chr$(10) +

15、txtOutput.Text源-于-網(wǎng)-絡-收-集=Word行業(yè)資料分享-可編輯版本-雙擊可刪=tcpClient.CloseEnd Sub(7)在Winsock控件的DataArrival事件中,使用Winsock控件的GetData方法捕獲發(fā)送端發(fā)來的消 息,并將消息顯示在響應文本框中。代碼如下:Private Sub tcpClient_DataArrival(ByVal bytesTotal As Long)Dim strData As StringtcpClient.GetData Tmp, vbStringTmp = TmptxtOutput.Text = TmpEnd Sub設計

16、的功能連接兩臺計算機,一臺作為服務器,另外一臺作為客戶端。兩機能實現(xiàn)全雙工通信,即都能發(fā)送 接收數(shù)據(jù),并顯示在應用程序的相應文本框中。程序框圖源-于-網(wǎng)-絡-收-集=Word行業(yè)資料分享-可編輯版本-雙擊可刪=五、程序清單服務器程序如下:Private Sub Form_Load() tcpServer.LocalPort = 2008 tcpServer.ListenEnd Sub設置本地連接端口偵聽是否有連接請求Private Sub tcpServer_ConnectionRequest(ByVal requestID As Long)If tcpServer.State sckClos

17、ed ThentcpServer.ClosetcpServer.Accept requestIDEnd IfEnd SubPrivate Sub Command1_Click()點擊按鈕發(fā)送數(shù)據(jù)tcpServer.SendData txtSendData.TextEnd Sub接收響應連接請求Private Sub tcpServer_DataArrival(ByVal bytesTotal As Long)接收數(shù)據(jù)Dim strData As StringtcpServer.GetData Tmp, vbStringTmp = TmptxtOutput.Text = Tmp 在接收文本框顯示

18、接收數(shù)據(jù)源-于-網(wǎng)-絡-收-集=Word行業(yè)資料分享-可編輯版本-雙擊可刪=End Sub客戶端程序如下:Private Sub cmdConnect_Click()獲彳導IP地址發(fā)出連接請求tcpClient.Connect Text1.Text, 2008 txtOutput.Text = 恭喜您,已成功連接到服務器!提示連接成功End SubPrivate Sub Command1_Click() 點擊發(fā)送數(shù)據(jù)tcpClient.SendData txtSendData.TextEnd SubPrivate Sub tcpClient_DataArrival(ByVal bytesTot

19、al As Long)接收數(shù)據(jù)Dim strData As StringtcpClient.GetData Tmp, vbStringTmp = TmptxtOutput.Text = Tmp 在接收文本框顯示接收數(shù)據(jù)End SubPrivate Sub Command2_Click() 關閉連接txtOutput.Text = 您已斷開連接+ Chr$(13) + Chr$(10) + txtOutput.Text tcpClient.Close End Sub換行輸出六、測試數(shù)據(jù)和結果源-于-網(wǎng)-絡-收-集=Word行業(yè)資料分享-可編輯版本-雙擊可刪=圖2總結從12月29號到1月10號我們

20、進行了為期兩周的課程設計,令我受益匪淺。計算機通信網(wǎng)絡是一 個熱門的課題,也是很深很廣的一個發(fā)揮平臺。網(wǎng)絡互連的實現(xiàn),不僅可使用戶能夠更好地實現(xiàn)資源 共享,消除地理位置的差異,而且可以從整體上提高網(wǎng)絡的效益和各種性能。我所選的題目是基于 VB的點對點通信,是使用 Winsock控件來實現(xiàn)的。從開始選題到最后老師驗 收,我都本著認真的心態(tài)和鉆研的態(tài)度,親力親為,所以我的感受頗深。雖然最后程序有些粗糙和不 盡人意,但我對自己在過程中所收獲的知識還是感到很高興。下面我來總結下自己這兩周的設計感想。我認為在設計前應先弄清楚課程設計的目的,它并不是讓我們在機房上網(wǎng)學會拷貝別人的實驗成 果,而是在于通過理論與實際的結合、人與人的溝通,進一步提高思想覺悟,尤其是觀察、分析和解 決問題的實際工作能力,以便培養(yǎng)成為能夠主動適應社會主義現(xiàn)代化建設需要的高素質(zhì)的復合型人才。 作為整個學習體系的有機組成部分,課程設計是我們運用學習成果,檢驗學習成果的一個最好的機會。接著開始思考自己的選題。首先我去圖書館借了很多相關資料,因為以前沒有使用過VB,所以感覺很陌生。通過查閱資料,對于課題有了一個大概輪廓。要實現(xiàn)點對點通信,就必須在兩臺計算機上 安裝兩個應用程序便于連接和接發(fā)信息,一個作為客戶端,一個作為服務器,通過控件的幾個主要事 件來實現(xiàn)。其中要掌握的基本概念有:事件驅(qū)動、控件

溫馨提示

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

評論

0/150

提交評論