




版權(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 弓形體病性鞏膜炎的臨床護(hù)理
- 調(diào)研新質(zhì)生產(chǎn)力
- 頭部震顫的臨床護(hù)理
- 2025年一級(jí)建造師之一建水利水電工程實(shí)務(wù)練習(xí)題(二)及答案
- 新質(zhì)生產(chǎn)力峰會(huì)
- 神經(jīng)膠質(zhì)母細(xì)胞瘤的臨床護(hù)理
- 用好新質(zhì)生產(chǎn)力
- 2025設(shè)備租賃合同寫(xiě)作格式
- 2025傾力湖南省娛樂(lè)酒店商業(yè)行業(yè)勞動(dòng)合同模板
- 陜西中考數(shù)學(xué)試卷真題及答案b卷
- 重點(diǎn)監(jiān)管的危險(xiǎn)化學(xué)品名錄完整版及相關(guān)解讀
- 2024年福建國(guó)有企業(yè)海峽人力南平分公司招聘筆試參考題庫(kù)含答案解析
- 七年級(jí)下冊(cè)英語(yǔ)單詞默寫(xiě)表直接打印
- 菜品退單原因分析報(bào)告
- 《塵肺病及其預(yù)防》課件
- 新能源電動(dòng)汽車(chē)技術(shù)簡(jiǎn)介
- 天融信運(yùn)維安全審計(jì)系統(tǒng)V3
- 2024年初級(jí)社會(huì)工作者《社會(huì)工作實(shí)務(wù)(初級(jí))》考試練習(xí)題(含答案)
- 教學(xué)勇氣:漫步教師心靈
- 卷料加工中的跑偏與糾偏控制
- 波紋鋼裝配式檢查井通用技術(shù)規(guī)范
評(píng)論
0/150
提交評(píng)論