使用VB設(shè)計(jì)聊天室多點(diǎn)對(duì)多點(diǎn)網(wǎng)絡(luò)程序設(shè)計(jì)_第1頁(yè)
使用VB設(shè)計(jì)聊天室多點(diǎn)對(duì)多點(diǎn)網(wǎng)絡(luò)程序設(shè)計(jì)_第2頁(yè)
使用VB設(shè)計(jì)聊天室多點(diǎn)對(duì)多點(diǎn)網(wǎng)絡(luò)程序設(shè)計(jì)_第3頁(yè)
使用VB設(shè)計(jì)聊天室多點(diǎn)對(duì)多點(diǎn)網(wǎng)絡(luò)程序設(shè)計(jì)_第4頁(yè)
使用VB設(shè)計(jì)聊天室多點(diǎn)對(duì)多點(diǎn)網(wǎng)絡(luò)程序設(shè)計(jì)_第5頁(yè)
已閱讀5頁(yè),還剩10頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、課 程 設(shè) 計(jì) 任 務(wù) 書 9.多點(diǎn)對(duì)多點(diǎn)網(wǎng)絡(luò)程序設(shè)計(jì),根據(jù)網(wǎng)絡(luò)數(shù)據(jù)傳輸原理設(shè)計(jì)聊天室軟件,具體要求:1) 學(xué)習(xí)計(jì)算機(jī)網(wǎng)絡(luò)連接原理; 2) 學(xué)習(xí)網(wǎng)絡(luò)數(shù)據(jù)傳輸?shù)幕驹恚?3) 學(xué)習(xí)網(wǎng)絡(luò)連接的底層協(xié)議; 4) 設(shè)計(jì)聊天室軟件; 5) 面向用戶的操作界面; 6) 具有文件共享功能。 目錄一、設(shè)計(jì)目的1二、設(shè)計(jì)任務(wù)與要求1三、開發(fā)軟件介紹1四、設(shè)計(jì)內(nèi)容41、設(shè)計(jì)框架42、設(shè)計(jì)程序53、運(yùn)行結(jié)果12五、設(shè)計(jì)總結(jié)15六、設(shè)計(jì)心得16七、參考文獻(xiàn)16一、設(shè)計(jì)目的通過(guò)本課程設(shè)計(jì)的學(xué)習(xí),學(xué)生將復(fù)習(xí)所學(xué)的專業(yè)知識(shí),使課堂學(xué)習(xí)的理論知識(shí)應(yīng)用于實(shí)踐,通過(guò)本課程設(shè)計(jì)的實(shí)踐使學(xué)生具有一定的實(shí)踐操作能力,為學(xué)生完成畢業(yè)設(shè)

2、計(jì)任務(wù)打下基礎(chǔ)。 二、設(shè)計(jì)任務(wù)與要求 多點(diǎn)對(duì)多點(diǎn)網(wǎng)絡(luò)程序設(shè)計(jì),根據(jù)網(wǎng)絡(luò)數(shù)據(jù)傳輸原理設(shè)計(jì)聊天室軟件,具體要求:1) 學(xué)習(xí)計(jì)算機(jī)網(wǎng)絡(luò)連接原理; 2) 學(xué)習(xí)網(wǎng)絡(luò)數(shù)據(jù)傳輸?shù)幕驹恚?3) 學(xué)習(xí)網(wǎng)絡(luò)連接的底層協(xié)議; 4) 設(shè)計(jì)聊天室軟件; 5) 面向用戶的操作界面; 6) 具有文件共享功能。三、開發(fā)軟件介紹微軟公司的Visual Basic 6.0是Windows應(yīng)用程序開發(fā)工具,使目前最為廣泛的、易學(xué)易用的面向?qū)ο蟮拈_發(fā)工具。Visual Basic提供了大量的控件,這些控件可用于設(shè)計(jì)界面和實(shí)現(xiàn)各種功能,減少了編程人員的工作量,也簡(jiǎn)化了界面設(shè)計(jì)過(guò)程,從而有效的提高了應(yīng)用程序的運(yùn)行效率和可靠性。故而,

3、實(shí)現(xiàn)本系統(tǒng)VB是一個(gè)相對(duì)較好的選擇。在 Visual Basic 中,可通過(guò)屬性、方法和事件來(lái)說(shuō)明和衡量一個(gè)對(duì)象的特征:事件(Event)事件是指發(fā)生在某一對(duì)象上的事情。事件又可分為鼠標(biāo)事件和鍵盤事件。例如,在命令按鈕(Command Button)這一對(duì)象上可能發(fā)生鼠標(biāo)單擊(Click)、鼠標(biāo)移動(dòng)(Mouse Move)、鼠標(biāo)按下(Mouse Down)等鼠標(biāo)事件,也可能發(fā)生鍵盤按下(Key Down)等鍵盤事件??傊?,事件指明了對(duì)象“什么情況下做?”,常用于定義對(duì)象發(fā)生某種反映的時(shí)機(jī)和條件。方法(Method)方法是用來(lái)控制對(duì)象的功能及操作的內(nèi)部程序。例如,人具有說(shuō)話、行走、學(xué)習(xí)、睡覺(jué)等功

4、能,在visual Basic中,對(duì)象所能提供的這些功能和操作,就稱作“方法”。以窗體為例,它具有顯示(show)或隱藏(hide)的方法??傊?,方法指明了對(duì)象“能做什么?”,常用于定義對(duì)象的功能和操作。屬性(Property)屬性是指用于描述對(duì)象的名稱、位置、顏色、字體等特征的一些指標(biāo)??梢酝ㄟ^(guò)屬性改變對(duì)象的特性。有些屬性可以在設(shè)計(jì)時(shí)通過(guò)屬性窗口來(lái)設(shè)置,不用編寫任何代碼;而有些屬性則必須通過(guò)編寫代碼,在運(yùn)行程序的同時(shí)進(jìn)行設(shè)置。可以在運(yùn)行時(shí)讀取和設(shè)置取值的屬性成為讀寫屬性,只能讀取的屬性成為只讀屬性。總之屬性指明了對(duì)象“是什么樣的?”,常用于定義對(duì)象的外觀。如同上面的內(nèi)容所描述的,不論您使用U

5、DP協(xié)議或是TCP協(xié)議,Winsock控件都可以允許與遠(yuǎn)程的設(shè)備連接,并且在相互之間交換數(shù)據(jù)。因此,依據(jù)上面的面熟而言,不論您使用的是哪一種協(xié)議都可以扮演主機(jī)端和客戶端的角色。同時(shí),當(dāng)您在使用Winsock控件的過(guò)程中,這個(gè)控件不會(huì)顯示在正在執(zhí)行的窗體之中。換句話說(shuō),Winsock控件是在后臺(tái)運(yùn)行的一種控件。在執(zhí)行過(guò)程之中,不會(huì)具有任何選用、可見(jiàn)的控件。那么該如何使用Winsock控件呢?它可以被應(yīng)用在那些類型的應(yīng)用程序之中呢?以下所列出的內(nèi)容,是這個(gè)控件可以應(yīng)用的大致范圍:*將客戶端所收集的數(shù)據(jù),傳送給主機(jī)端。*聊天和文件傳輸室應(yīng)用程序。*電子公告欄。*voip(voice over TCP

6、/ip)VB winsock介紹Winsock是Mcrosoft windows提供的網(wǎng)絡(luò)編程接口,它供了基于TCP/IP協(xié)議接口實(shí)現(xiàn)方法.通過(guò)網(wǎng)絡(luò)進(jìn)行的數(shù)據(jù)通信,需要用地址來(lái)表示網(wǎng)絡(luò)中的主機(jī).TCP/IP協(xié)議使用IP地址來(lái)作為主機(jī)的標(biāo)識(shí).實(shí)現(xiàn)的連接方式是通過(guò)IP地址來(lái)識(shí)別的.通常情況下每臺(tái)設(shè)備運(yùn)行的不止一個(gè)程序,所以為了使用應(yīng)用程序間的連接,還需要建立一個(gè)地址標(biāo)識(shí).在TCP/IP中使用端口來(lái)作為標(biāo)識(shí)號(hào)(PORT).IP地址+端口地址.TCP:實(shí)現(xiàn)提供雙向,有序無(wú)從復(fù)的數(shù)據(jù)流服務(wù),流量控制+差錯(cuò)檢測(cè)+糾錯(cuò)等功能.1.VB控件winsock是個(gè)運(yùn)行中不可件的控件,常用屬性如下:byte rece

7、ived 接收到的字節(jié)數(shù)local hostname 本地機(jī)器名Local IP 本地IP地址Local port 本地通信程序的端口Remote host 遠(yuǎn)程機(jī)器名Remote host IP 遠(yuǎn)程IP地址Remote port 遠(yuǎn)程通信程序端口Socket handle 提供調(diào)用API得句柄參數(shù)State 連接得當(dāng)前狀態(tài)Protocol 使用協(xié)議Bytereceived:反應(yīng)接收到得數(shù)據(jù)量,以字節(jié)為單位。State:返回當(dāng)前連接狀態(tài)0 關(guān)閉狀態(tài)1 打開狀態(tài)2 監(jiān)聽(tīng)狀態(tài)3 連接掛起4 解析域名5 正在連接6 以建立連接7 正在關(guān)閉8 出錯(cuò)2.控件accept接受一個(gè)連接請(qǐng)求。格式:對(duì)象.a

8、ccept request IDbind:多協(xié)議接口下,把接口卡,IP地址捆綁再一起。格式:對(duì)象。Bina端口號(hào),ip地址close:關(guān)閉連接。格式:對(duì)象。Closeconnect:發(fā)送連接請(qǐng)求。格式:對(duì)象。Connectip,遠(yuǎn)程端口getdata:取出數(shù)據(jù)后清除緩沖區(qū)。Peekdata:取出數(shù)據(jù)后不清楚緩沖區(qū)。格式:對(duì)象。Getdata(peekdata)變量,數(shù)據(jù)類型,最大長(zhǎng)度Listen:偵聽(tīng)。格式:對(duì)象。ListenSenddata:發(fā)送數(shù)據(jù)。格式:對(duì)象。Senddata3控件事件Close 遠(yuǎn)程設(shè)備關(guān)閉連接時(shí)觸發(fā)事件Connect 建立連接,進(jìn)行通信時(shí)觸發(fā)Connectreques

9、t 有連接請(qǐng)求時(shí)觸發(fā)Data arrival 有數(shù)據(jù)到達(dá)時(shí)觸發(fā)Error 錯(cuò)誤時(shí)觸發(fā)Send complete 完成一次數(shù)據(jù)傳送觸發(fā)Send progress 數(shù)據(jù)傳送進(jìn)度四、設(shè)計(jì)內(nèi)容1、設(shè)計(jì)框架客戶端服務(wù)端文件傳輸消息發(fā)送圖2 消息文件交互客戶端連接端口連接IP服務(wù)端圖1 建立連接2、設(shè)計(jì)程序服務(wù)端:Option Explicit /強(qiáng)制聲明變量Private Sub Command1_Click()If tcp.State = 7 And Text2.Text <> "" Then /winsock=7表示已連接 tcp.SendData Text2.Tex

10、t /發(fā)送數(shù)據(jù) Text1.Text = Text1.Text & "本機(jī):" & Text2.Text & vbCrLf /顯示自己發(fā)送的信息,換行顯示 Text2.Text = "" /文本清空 Text2.SetFocus /設(shè)置焦點(diǎn) End IfEnd SubPrivate Sub Command2_Click()Dim Form2 As New Form2 /定義數(shù)據(jù)傳輸窗口Form2.Show /顯示數(shù)據(jù)傳輸窗口End SubPrivate Sub Form_Load()tcp.LocalPort = 8888 /本地

11、監(jiān)聽(tīng)端口為8888tcp.Listen /開始監(jiān)聽(tīng)End SubPrivate Sub tcp_ConnectionRequest(ByVal requestID As Long) /連接請(qǐng)求If tcp.State <> 0 Then tcp.Close /如果不是關(guān)閉狀態(tài),關(guān)閉跳 tcp.Accept requested /接收請(qǐng)求ID End SubPrivate Sub tcp_DataArrival(ByVal bytesTotal As Long) /對(duì)方數(shù)據(jù)到達(dá)Dim strdata As String /定義字符串型 tcp.GetData strdata /獲取數(shù)

12、據(jù)傳遞給變量strdata Text1.Text = Text1.Text & "客戶端:" & strdata & vbCrLf /發(fā)送過(guò)來(lái)的信息,換行顯示End Sub圖3 編輯服務(wù)端主窗口客戶端:Option Explicit /強(qiáng)制聲明變量Private Sub Command1_Click()If tcp.State = 7 And Text2.Text <> "" Then /winsock=7表示已連接 tcp.SendData Text2.Text /發(fā)送數(shù)據(jù) Text1.Text = Text1.Te

13、xt & "本機(jī):" & Text2.Text & vbCrLf /顯示自己發(fā)送的信息,換行顯示 Text2.Text = "" /文本清空 Text2.SetFocus /設(shè)置焦點(diǎn)End If End SubPrivate Sub Command2_Click()Dim Form2 As New Form2 /定義數(shù)據(jù)傳輸窗口Form2.Show /顯示數(shù)據(jù)傳輸窗口End SubPrivate Sub tcp_DataArrival(ByVal bytesTotal As Long)Dim strdata As String /

14、定義strdata為字符串 tcp.GetData strdata /接收數(shù)據(jù) Text1.Text = Text1.Text & "服務(wù)端:" & strdata & vbCrLf /在文本框顯示消息,換行顯示End SubPrivate Sub zyq2_Click()Dim p, myip As String /定義p,myip為字符串p = InputBox("輸入對(duì)方的端口") /輸入端口號(hào)myip = InputBox("輸入對(duì)方的IP") /輸入IPtcp.RemotePort = p /設(shè)置端口

15、tcp.RemoteHost = myip /設(shè)置IPtcp.Connect /連接End Sub圖4 編輯客戶端主窗口傳輸窗口(服務(wù)端):Option ExplicitPrivate Sub cmdSend_Click() Dim FName_Only As String If txtFileName = "" Then MsgBox "你沒(méi)有選擇要發(fā)送的文件.", vbCritical Else If frmServer.tcpServer.State <> sckClosed Then FName_Only$ = GetFileName

16、(txtFileName) SendFile FName_Only$ End If End IfEnd Sub主要作用:發(fā)送用戶選擇的文件。Private Sub Form_Load() tcpServer.LocalPort = Port tcpServer.Listen bInconnection = False Status "偵察. (沒(méi)有連接)"End Sub主要作用:設(shè)置連接端口并偵察網(wǎng)絡(luò)。Private Sub Form_Unload(Cancel As Integer) SendData "服務(wù)器關(guān)閉," Pause 500 tcpSer

17、ver.Close EndEnd SubPrivate Sub tcpServer_Close() If tcpServer.State <> sckClosed Then tcpServer.Close Form_Load End SubPrivate Sub tcpServer_ConnectionRequest(ByVal requestID As Long) On Error GoTo IDERROR If tcpServer.State <> sckClosed Then tcpServer.Close tcpServer.Accept requestID b

18、Inconnection = True Status "偵察. 連接." SendData "Accepted," Exit SubIDERROR: MsgBox Err.Description, vbCriticalEnd Sub主要作用:判斷是否接收信息。Private Sub tcpServer_DataArrival(ByVal bytesTotal As Long) Dim Command As String Dim NewArrival As String Dim Data As String Static DataCnt As Long t

19、cpServer.GetData NewArrival$, vbString Command = EvalData(NewArrival$, 1) Data$ = EvalData(NewArrival$, 2) Select Case Command$ Case "OpenFile" ' open the file Dim Fname As String Fname$ = App.Path & "" & Data$ Open Fname$ For Binary As #1 Status "文件打開. " &a

20、mp; Data$ Case "CloseFile" ' close the file Close #1 Status "文件傳輸." Pause 3000 Status "偵察. (連接)" Case Else ' a 4169 byte string of incoming data Put #1, , NewArrival$ txtView = txtView & NewArrival$ DataCnt& = DataCnt& + 1 Status "Recieving Data

21、. " & (MAX_CHUNK * DataCnt&) & " bytes" End SelectEnd Sub主要作用:文件傳輸。Private Sub cmdBrowse_Click() cdOpen.ShowOpen If Not vbCancel Then txtFileName = cdOpen.FileName End IfEnd Sub主要作用:通過(guò)通用對(duì)話框打開需要傳送的文件。圖5 編輯服務(wù)端文件傳輸窗口傳輸窗口(客戶端):Private Sub cmdConnect_Click() bReplied = False tc

22、pClient.Connect Text1.Text, 1256 lTIme = 0 While (Not bReplied) And (lTIme < 100000) DoEvents lTIme = lTIme + 1 Wend If lTIme >= 100000 Then MsgBox "找不到服務(wù)器!", vbCritical, "Connection Error" tcpClient.Close Exit Sub End If cmdBrowse.Visible = True cmdSend.Visible = TrueEnd S

23、ub主要作用:實(shí)現(xiàn)與服務(wù)器的連接。Private Sub cmdSend_Click() Dim FName_Only As String If txtFileName = "" Then MsgBox "你沒(méi)有選擇要發(fā)送的文件.", vbCritical Else If tcpClient.State <> sckClosed Then FName_Only$ = GetFileName(txtFileName) SendFile FName_Only$ End If End IfEnd Sub主要作用:發(fā)送文件。Private Sub tcpClient_DataArrival(ByVal bytesTotal As Long) Dim Command As String Dim NewArrival As String Dim Data As String Static DataCnt As Long tcpClient.GetData NewArrival$, vbString Command$ = EvalData(NewArrival$, 1) Data$ = EvalData(N

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 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ì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論