實現(xiàn)一對一聊天程序_第1頁
實現(xiàn)一對一聊天程序_第2頁
實現(xiàn)一對一聊天程序_第3頁
實現(xiàn)一對一聊天程序_第4頁
實現(xiàn)一對一聊天程序_第5頁
已閱讀5頁,還剩2頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、實現(xiàn)一個一對一的聊天程序一 實習(xí)題目實現(xiàn)一個一對一的聊天程序。其基本過程如下:服務(wù)器首先啟動,創(chuàng)建套接字后等待客戶的連接;客戶啟動以后,創(chuàng)建套接字,然后和服務(wù)器建立連接;連接建立后,客戶機(jī)和服務(wù)器可以通過建立的套接字連接進(jìn)行通信。服務(wù)器和客戶端可以是一臺電腦上的兩個進(jìn)程,也可以分別部署在兩臺電腦上。二 原理概述本題是一個簡單的聊天室程序,采用客戶/服務(wù)器模式,分為客戶端程序和服務(wù)器端程序。由于服務(wù)器只能支持一個客戶,實際上是一個點對點通信的程序??蛻舳顺绦蚝头?wù)器程序通過網(wǎng)絡(luò)交換聊天字符串內(nèi)容,并在窗口的列表框中顯示。重點是流式套接字對象的使用,處理網(wǎng)絡(luò)事件的方法。本此課程設(shè)計是利用網(wǎng)絡(luò)聊天程

2、序的基本設(shè)計思想,并按照網(wǎng)絡(luò)通信的協(xié)議設(shè)計出來的一個基于UDP的網(wǎng)絡(luò)聊天程序。端口號拼接到IP地址即構(gòu)成了套接字(socket)。套接字(socket)=(IP地址:端口號)。在網(wǎng)絡(luò)編程時常常把套接字作為應(yīng)用進(jìn)程和運輸層協(xié)議之間的接口。當(dāng)應(yīng)用進(jìn)程(客戶或服務(wù)器)需要使用網(wǎng)絡(luò)進(jìn)行通信時,必須首先發(fā)出socket系統(tǒng)調(diào)用,請求操作系統(tǒng)為其創(chuàng)建一個“套接字”。這個調(diào)用的實際效果是請求操作系統(tǒng)把網(wǎng)絡(luò)通信所需要的一些資源分配給該應(yīng)用進(jìn)程。操作系統(tǒng)為這些資源的總和用一個叫做套接字描述符的號碼來表示,然后把這個套接字描述符返回給應(yīng)用進(jìn)程。此后,應(yīng)用進(jìn)程所進(jìn)行的網(wǎng)絡(luò)操作都必須使用這個套接字描述符。三 設(shè)計方案

3、1 問題分析: 本次計算機(jī)網(wǎng)絡(luò)與通信實習(xí)的任務(wù)是設(shè)計一個一對一的聊天程序。根據(jù)課程設(shè)計要求程序采用客戶/服務(wù)器模式,分為客戶端程序和服務(wù)器端程序。其基本過程如下:服務(wù)器首先啟動,創(chuàng)建套接字后等待客戶的連接;客戶啟動以后,創(chuàng)建套接字,然后和服務(wù)器建立連接;連接建立后,客戶機(jī)和服務(wù)器可以通過建立的套接字連接進(jìn)行通信。服務(wù)器和客戶端可以是一臺電腦上的兩個進(jìn)程,也可以分別部署在兩臺電腦上。客戶端程序和服務(wù)器程序通過網(wǎng)絡(luò)交換聊天字符串內(nèi)容,并在窗口的列表框中顯示。重點是流式套接字對象的使用,處理網(wǎng)絡(luò)事件的方法。2 設(shè)計思路:程序采用VB語言編寫,運用UDP面向無連接數(shù)據(jù)報協(xié)議完成實驗,程序的核心是運用的

4、空間為VB網(wǎng)絡(luò)編程中的Winsock控件。數(shù)據(jù)之前不必建立連接,只需要將Winsock綁定到一個端口上,其他無連接協(xié)議的Winsock若想向此處發(fā)送數(shù)據(jù),需要指明地址和端口。(1)將 RemoteHost 屬性設(shè)置為另一臺計算機(jī)的名稱或者IP地址。(2)將 RemotePort 屬性設(shè)置為另一臺計算機(jī)Winsock控件所綁定的 LocalPort 屬性。(3)調(diào)用 Bind 方法,指定使用的LocalPort。3 系統(tǒng)模塊結(jié)構(gòu):根據(jù)程序設(shè)計要求,設(shè)計出整個網(wǎng)絡(luò)聊天程序的設(shè)計框圖。 服務(wù)器 客戶端數(shù)據(jù)創(chuàng)建Winsock控件綁定到一個端口關(guān)閉連接創(chuàng)建Winsock控件綁定到一個端口關(guān)閉連接數(shù)據(jù) 系

5、統(tǒng)總設(shè)計流程圖 主程序在對方接收端口中顯示發(fā)送消息調(diào)用發(fā)送消息函數(shù)txtSend_Change采用Winsock 控件連接服務(wù)器端開始結(jié)束開始采用Winsock 控件連接客戶端調(diào)用發(fā)送消息函數(shù)txtSend_Change在對方接收端口中顯示發(fā)送消息結(jié)束服務(wù)器端主流程圖 客戶端主流程圖四 程序編寫1 通過建立工程,設(shè)計出網(wǎng)絡(luò)服務(wù)器程序,其設(shè)計過程及源程序代碼如下。(1)創(chuàng)建一個新的Standard EXE 工程。(2)將缺省的窗體的名稱修改為PeerA。(3)將窗體的標(biāo)題修改為“服務(wù)器”。(4)在窗體中放入一個 Winsock 控件,并將其命名為 UDPSever。(5)在Winsock 控件的

6、“屬性”頁上,單擊“Protocol”屬性,并將該屬性值修改為 UDPProtocol。(6)在窗體中添加兩個TextBox控件。將第一個命名為 txtSend,第二個命名為 txtOutput。(7)為窗體增加如下的代碼。UDP聊天服務(wù)器程序: Private Sub Combo1_Click() TxtSend.Font.Name = Combo1.TextEnd SubPrivate Sub Check1_Click() '設(shè)置隸書字體If Check1.Value = 1 Then TxtSend.FontName = "隸書" Else TxtSend.F

7、ontName = "宋體" End IfEnd SubPrivate Sub Check2_Click() '設(shè)置下劃線字體If Check2.Value = 1 Then TxtSend.FontUnderline = True Else TxtSend.FontUnderline = False End IfEnd SubPrivate Sub Check3_Click() '設(shè)置斜體字體If Check3.Value = 1 ThenTxtSend.FontItalic = TrueElse TxtSend.FontItalic = False En

8、d IfEnd SubPrivate Sub Check4_Click() '設(shè)置字體大小為18榜If Check4.Value = 1 Then TxtSend.FontSize = 18Else TxtSend.FontSize = 10 End IfEnd SubPrivate Sub Form_Load()Combo1.Text = TxtSend.Font.Name 設(shè)置下拉框,選擇更多的字體 Dim i As Integer For i = 0 To Screen.FontCount - 1 Combo1.AddItem Screen.Fonts(i) NextWith U

9、DPSever 控件的名字為UDPSever.RemoteHost= "4" 服務(wù)器主機(jī)IP名稱.RemotePort = 1001 連接的端口號.Bind 1002 綁定到本地的端口End WithEnd SubPrivate Sub txtSend_Change() UDPSever.SendData txtSend.Text 在鍵入文本時,立即將其發(fā)送出去End SubPrivate Sub UDPSever _DataArrival (ByVal bytesTotal As Long) 在服務(wù)器接收框中顯示客戶端傳送的消息Dim strData

10、 As StringUDPSever.GetData strDatatxtOutput.Text = strDataEnd Sub2 通過建立工程,設(shè)計出網(wǎng)絡(luò)客戶端程序,其設(shè)計過程及源程序代碼如下。UDP聊天客戶端程序:(1) 在工程中添加一個標(biāo)準(zhǔn)窗體。(2) 將窗體的名字修改為 frmPeerB。(3) 將窗體的標(biāo)題修改為“Peer B”。(4) 在窗體中放入一個 Winsock 控件,并將其命名為 udpClient。(5) 在“屬性”頁上,單擊“協(xié)議”并將協(xié)議修改為“UDPProtocol”。(6) 在窗體上添加兩個 TextBox 控件。將第一個命名為 txtSend,第二個命名為 t

11、xtOutput。(7)在窗體中添加如下的代碼。 Private Sub Form_Load()Combo1.Text = TxtSend1.Font.Name 設(shè)置下拉框,選擇更多的字體 Dim i As Integer For i = 0 To Screen.FontCount - 1 Combo1.AddItem Screen.Fonts(i) NextWith udpClient 控件的名字為udpPeerB.RemoteHost="4“ 客戶端主機(jī)IP名稱.RemotePort = 1002 連接的端口號.Bind 1001 綁定到本地的端口 End

12、WithEnd SubPrivate Sub txtSend_Change()udpClient.SendData txtSend.Text 在鍵入文本時,立即將其發(fā)送出去End SubPrivate Sub udpClient_DataArrival (ByVal bytesTotal As Long) 在客服端接收框中顯示服務(wù)器傳送的消息Dim strData As StringudpPeerB.GetData strDatatxtOutput.Text = strDataEnd Sub五 運行結(jié)果(1)運行界面(2)服務(wù)器發(fā)送消息通過在發(fā)送消息欄輸入文字,并在下面字體選擇欄中選擇自己喜歡

13、的字體,進(jìn)行發(fā)送,消息馬上即可在客戶端接收。如圖(3)客戶端發(fā)送消息同樣,客戶端發(fā)送消息與上圖類似。六 實習(xí)心得和體會計算機(jī)網(wǎng)絡(luò)與通信課程講述計算機(jī)網(wǎng)絡(luò)的原理,尤其是TCP/IP協(xié)議棧的原理和應(yīng)用,是一門理論性、應(yīng)用性、實踐性都比較強(qiáng)的課程。計算機(jī)網(wǎng)絡(luò)與通信實習(xí)是學(xué)習(xí)完計算機(jī)網(wǎng)絡(luò)與通信課程后進(jìn)行的一次全面的綜合實習(xí),是本專業(yè)實踐性重要環(huán)節(jié)之一。計算機(jī)網(wǎng)絡(luò)與通信實習(xí)是從原理和實踐的角度,在計算機(jī)上編程模擬實現(xiàn)計算機(jī)網(wǎng)絡(luò)的基本協(xié)議,或者架設(shè)一個小型局域網(wǎng)并對其進(jìn)行相應(yīng)配置。通過一周的實習(xí),我對計算機(jī)網(wǎng)絡(luò)的原理有了非常深刻的認(rèn)識和理解,同時進(jìn)一步鍛煉了自己的動手能力。本次計算機(jī)網(wǎng)絡(luò)課程設(shè)計讓我對計算機(jī)網(wǎng)絡(luò)協(xié)議有了更深入的了解,以前只是知道UDP及TCP等協(xié)議,但是不知道能夠具體的用來編寫小軟件,這也是在計算機(jī)網(wǎng)絡(luò)學(xué)習(xí)過程中打下的基礎(chǔ),有了計算機(jī)網(wǎng)絡(luò)基礎(chǔ)知識,讓我在具體實踐過程中更加順利。借助本次實驗自

溫馨提示

  • 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論