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

下載本文檔

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

文檔簡(jiǎn)介

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

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

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

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

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

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

7、ontName = "宋體" End IfEnd SubPrivate Sub Check2_Click() '設(shè)置下劃線(xiàn)字體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名稱(chēng).RemotePort = 1001 連接的端口號(hào).Bind 1002 綁定到本地的端口End WithEnd SubPrivate Sub txtSend_Change() UDPSever.SendData txtSend.Text 在鍵入文本時(shí),立即將其發(fā)送出去End SubPrivate Sub UDPSever _DataArrival (ByVal bytesTotal As Long) 在服務(wù)器接收框中顯示客戶(hù)端傳送的消息Dim strData

10、 As StringUDPSever.GetData strDatatxtOutput.Text = strDataEnd Sub2 通過(guò)建立工程,設(shè)計(jì)出網(wǎng)絡(luò)客戶(hù)端程序,其設(shè)計(jì)過(guò)程及源程序代碼如下。UDP聊天客戶(hù)端程序:(1) 在工程中添加一個(gè)標(biāo)準(zhǔn)窗體。(2) 將窗體的名字修改為 frmPeerB。(3) 將窗體的標(biāo)題修改為“Peer B”。(4) 在窗體中放入一個(gè) Winsock 控件,并將其命名為 udpClient。(5) 在“屬性”頁(yè)上,單擊“協(xié)議”并將協(xié)議修改為“UDPProtocol”。(6) 在窗體上添加兩個(gè) TextBox 控件。將第一個(gè)命名為 txtSend,第二個(gè)命名為 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“ 客戶(hù)端主機(jī)IP名稱(chēng).RemotePort = 1002 連接的端口號(hào).Bind 1001 綁定到本地的端口 End

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

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

溫馨提示

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

評(píng)論

0/150

提交評(píng)論