局域網(wǎng)聊天程序的實現(xiàn)-無憂無慮畢設網(wǎng)_第1頁
局域網(wǎng)聊天程序的實現(xiàn)-無憂無慮畢設網(wǎng)_第2頁
局域網(wǎng)聊天程序的實現(xiàn)-無憂無慮畢設網(wǎng)_第3頁
局域網(wǎng)聊天程序的實現(xiàn)-無憂無慮畢設網(wǎng)_第4頁
局域網(wǎng)聊天程序的實現(xiàn)-無憂無慮畢設網(wǎng)_第5頁
已閱讀5頁,還剩22頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

無憂無慮畢設網(wǎng) ():畢業(yè)設計源碼下載 畢業(yè)設計源碼下載: 本文配套程序下載地址 : 無憂無慮畢設網(wǎng) ()-大學生畢業(yè)設計站 ,免費畢業(yè)設計論文 ,無憂無慮畢設網(wǎng) 大學生畢業(yè)設計 ,出售各類畢業(yè)設計源碼 ,論文 ,程序源碼 ,網(wǎng)站源碼 ,免費視頻教程 ,我們將竭誠為您服務! 分類號: TP311.1 U D C: D10621-032-(2007)6165-0 密 級:公 開 編 號: 2003032147 成 都 信 息 工 程 學 院 學 位 論 文 局域網(wǎng)的聊天程序的實現(xiàn) 無憂無慮畢設網(wǎng) ():畢業(yè)設計源碼下載 畢業(yè)設計源碼下載: 論文作者 姓名: 吳劍輝 申請學位專業(yè): 網(wǎng)絡工程 申請學位類別: 工學學士 指導教師姓名(職稱): 王海春(教授) 論文提交日期: 2007 年 06 月 10 日 局域網(wǎng)的聊天程序的實現(xiàn) 摘 要 網(wǎng)絡通訊是目前計算機用戶進行交流最普遍的方式,各種各樣的聊天軟件也層出不窮;服務提供商也提供了越來越豐富的通訊服務功能。 本文介紹了在Windows 環(huán)境下開發(fā)局域網(wǎng)聊天程序 思路 和方法。系統(tǒng)使用流行的 Delphi7.0 開發(fā)軟件,采用 Socket 技術實現(xiàn)網(wǎng)絡通訊。數(shù)據(jù)庫使用 Delphi 自帶的 Database desktop。系統(tǒng)采用典型的 C/S(服務器 /客戶 端 )構(gòu)架 。 系統(tǒng)主要實現(xiàn)了用戶注冊、登錄、聊天、服務器管理等功能。 本系統(tǒng)從需求分析、系統(tǒng)的設計、具體功能的實現(xiàn)都嚴格遵循了軟件設計工程的思想。 關鍵詞 : Socket; TCP/IP; C/S 無憂無慮畢設網(wǎng) ():畢業(yè)設計源碼下載 畢業(yè)設計源碼下載: The Implementation of LAN Chatting Program Abstract Network is the most popular way of communication between computer users, therefore a lot of chatting softwares come out; on the other hand, more communication services are provided by the ISP. This paper introduces the ideas and methods of LAN chatting program which are developed on Windows. This system is developed by the Delphi7.0 software, and uses the Socket technology to implement network communications. Database using its own database desktop. Software is based on C/S architecture. The system mainly implements the functions of user registration, login, chatting, server management etc. From requirement analysis, outline design, detailed design to coding, function test, the implementation of the function in this essay absolutely follow the process of the software development. Key words: Socket; TCP/IP; C/S無憂無慮畢設網(wǎng) ():畢業(yè)設計源碼下載 畢業(yè)設計源碼下載: 目 錄 論文總頁 數(shù): 22 頁 1 引 言 . 1 2 局域網(wǎng)聊天程序系統(tǒng)分析 . 1 2.1 系統(tǒng)理論基礎 . 1 2.1.1 TCP/IP 的特點 . 1 2.1.2 客戶機 /服務器模式 . 2 2.1.3 Socket 介紹 . 3 2.2 系統(tǒng)需求分析 . 5 2.3 系統(tǒng)設計目標 . 6 2.4 系運行環(huán)境 . 6 2.5 系統(tǒng)開發(fā)環(huán)境 . 6 3 局域網(wǎng)聊天程序系統(tǒng)設計 . 7 3.1 系統(tǒng)結(jié)構(gòu)設計 . 7 3.2 數(shù)據(jù)庫設計 . 7 3.3 客戶端服務器功能設計 . 7 3.4 客戶端設計 . 8 3.5 服務器端設計 . 9 3.6 聊天中公聊和私聊的設計 . 10 3.7 界面設計 . 11 3.7.1 客戶端界面設計 . 11 3.7.2 服務器界面設計 . 12 4 系統(tǒng)實現(xiàn)及核心代碼 . 13 4.1 網(wǎng)絡通信核心代碼 . 13 4.2 用戶注冊登錄下線模塊功能代碼 . 15 5 系統(tǒng)測試 . 17 5.1 測試方法 . 17 5.2 測試結(jié)果 . 17 5.3 測試結(jié)論 . 17 無憂無慮畢設網(wǎng) ():畢業(yè)設計源碼下載 畢業(yè)設計源碼下載: 5.4 程序運行截圖 . 18 結(jié) 論 . 18 參考文獻 . 19 致 謝 . 20 聲 明 . 21 無憂無慮畢設網(wǎng) ():畢業(yè)設計源碼下載 第 1 頁 共 22 頁 1 引 言 即時通訊軟件的出現(xiàn)正在逐漸改變?nèi)藗兊臏贤ㄅc交際方式。無論近在咫尺,還是遠隔重洋,也只是在鍵盤和鼠標之間就可以解決問題 。 即時通訊服務非常適合企業(yè)內(nèi)部或企業(yè)和客戶之間的交流。網(wǎng)絡聊天程序 .越來越 影響著我們的網(wǎng)絡生活 。 習慣了通過類似 ICQ、 QQ、 MSN 之類的程序和朋友聊天、發(fā)信息,不過所有聊天程序都需要 Internet 的支持,而無法在 局域網(wǎng)內(nèi)部 “大顯身手 ”,那么你是否想到過要讓單位內(nèi)部的員工 ,寢室周圍的同學 ,不用上 Internet 就可以輕松體驗到聊天的快樂呢? 基于以上原因,開發(fā) 局域網(wǎng) 聊天程序就有了必要性 ,讓單位員工 或?qū)嬍彝瑢W 不出內(nèi)網(wǎng)就能自由聊天 。 隨著全球信息化進程的不斷發(fā)展,網(wǎng)絡也在飛速發(fā)展。出于高效、快速地處理各種事務的目的,越來越多的企業(yè) 和單位 在其內(nèi)部使用局域網(wǎng)來進行工作 和交流 。在內(nèi)部局域網(wǎng) 的幫助下,企業(yè)得以簡化信息流程,提高信息交換的速度,從而提高工作效率。然而,隨著 局域網(wǎng) 規(guī)模的擴大,業(yè)務量的增加,在局域網(wǎng)上運行的應用越來越多,如知識庫、網(wǎng)絡會議、數(shù)據(jù)庫應用和數(shù)據(jù)的同步與備份等,這些應用對局域網(wǎng)的信息吞吐、處理能力的要求也越來越高。這些在原有局域網(wǎng)設計之初未曾考慮到的新情況的出現(xiàn)使得局域網(wǎng)不堪重負,容易發(fā)生信息阻塞,此時,局域網(wǎng)不但不能提高生產(chǎn)效率,反而成為 工作效率 的瓶頸。 為了解決上述矛盾, 前輩們 提出了許多方法。提升網(wǎng)絡帶寬及增加服務器的吞吐能力是解決此矛盾的一種方法。然而,從 局域網(wǎng) 運行的 成本方面考慮,無論是單純地提升網(wǎng)絡帶寬或增加服務器的吞吐能力都不能從根本上解決局域網(wǎng)資源緊張的問題,對舊有局域網(wǎng)的大規(guī)模硬件改造反而會增加 成本 的負擔。 基于 Socket 的局域網(wǎng)聊天室是局域網(wǎng)通信軟件的具體實例之一,它很好地詮釋了 Socket 通信的原理,并且在 局域網(wǎng) 部通信、教學、討論等應用中都具有一定的實用價值。它具有信息收發(fā)速度快,保密性好,占用網(wǎng)絡帶寬資源低,占用服務器吞吐能力低,易于編程實現(xiàn)等優(yōu)點。 2 局域網(wǎng)聊天程序系統(tǒng)分析 2.1 系統(tǒng)理論基礎 2.1.1 TCP/IP 的特點 TCP/IP 協(xié)議的核心 部分是傳輸層協(xié)議 (TCP、 UDP),網(wǎng)絡層協(xié)議 (IP)和物理接口層,這三層通常是在操作系統(tǒng)內(nèi)核中設計。因此用戶一般不涉及。 TCP 是面無憂無慮畢設網(wǎng) ():畢業(yè)設計源碼下載 第 2 頁 共 22 頁 向連接的,通信雙方保持一條通路,好比目前的電話線,使用 telnet 登陸 BBS,用的就是 TCP 協(xié)議; UDP 是無連接的,通信雙方都不保持對方的狀態(tài),瀏覽器訪問 Internet 時使用的 HTTP 協(xié)議就是基于 UDP 協(xié)議的。編程時,編程界面有兩種形式:一、是由內(nèi)核心直接提供的系統(tǒng)調(diào)用;二、使用以庫函數(shù)方式提供的各種函數(shù)。前者為核內(nèi)設計,后者為核外設計。用戶服務要通過核外的應用程序才能設計, 所以要使用套接字 (socket)來設計。 2.1.2 客戶機 /服務器模式 C/S 結(jié)構(gòu)( Client/Server 結(jié)構(gòu))是大家熟知的客戶機和服務器結(jié)構(gòu)。它是軟件系統(tǒng) 體系結(jié)構(gòu) ,通過它可以充分利用兩端硬件環(huán)境的優(yōu)勢,將任務合理分配到Client 端和 Server 端來實現(xiàn),降低了系統(tǒng)的通訊開銷。目前大多數(shù)應用 軟件 系統(tǒng)都是 Client/Server 形式的兩層結(jié)構(gòu),由于現(xiàn)在的軟件應用系統(tǒng)正在向分布式的Web 應用發(fā)展, Web 和 Client/Server 應用都可以進行同樣的業(yè)務處理,應用不同的模塊共享邏輯 組件 ;因此,內(nèi)部的和外部的用戶都可以訪問新的和現(xiàn)有的應用系統(tǒng),通過現(xiàn)有應用系統(tǒng)中 的邏輯可以擴展出新的應用系統(tǒng)。這也就是目前應用系統(tǒng)的發(fā)展方向。 首先服務器方要啟動,并根據(jù)請求提供相應服務 : ( 1) 打開一通信通道并告知本地主機,它在某一公認地址端口上 (如 http 為80)接受客戶請求。 ( 2) 等待客戶請求到達該端口。 ( 3) 接收到重復服務請求,處理該請求并發(fā)送應答信號。接收并發(fā)服務請求,要激活一新進程來處理這個客戶請求。新進程處理此客戶請求,并不需要對其他請求做出應答。服務完成后,關閉此新進程與客戶的通信鏈路,并終止。 ( 4) 返回第二步,等待另外的客戶請求 ( 5) 關閉服務器。 客戶方 : ( 1) 打開一通信通道,并連接到服務器所在主機的特定端口。 ( 2) 向服務器發(fā)出服務請求報文,等待并接收應答;繼續(xù)提出請求。 ( 3) 請求結(jié)束后關閉通信通道并終止。 從上面的描述過程可知: ( 1) 客戶與服務器進程的作用是非對稱的。因此編碼不同。 無憂無慮畢設網(wǎng) ():畢業(yè)設計源碼下載 第 3 頁 共 22 頁 ( 2) 服務進程一般是先于客戶請求啟動的。只要系統(tǒng)運行,該進程一直存在,直到正常終止或者強迫終止。 在 TCP/IP 網(wǎng)絡中兩個進程間的相互作用的主機模式是客戶機 /服務器模式(Client/Server model)。該模式的建立基于以下兩點: 1、非對等作用; 2、通信完全是異步的 ??蛻魴C /服務器模式在操作過程中采取的是主動請求服務響應的方式 ,如圖 1 所示:客 戶 端 A客 戶 端 B服 務 器 : 監(jiān) 聽局 域 網(wǎng)請求A請求B響應B響應A請 求 A響應A響應B請求B 圖 1 客戶端服務器模式 2.1.3 Socket 介紹 Socket 是建立 在傳輸層協(xié)議 (主要是 TCP 和 UDP)上的一種套接字規(guī)范,最初是由美國加州 Berkley 大學提出,它定義兩臺計算機間進行通信的規(guī)范(也是一種編程規(guī)范),如果說兩臺計算機是利用一個 “通道” 進行通信,那么這個 “ 通道 ” 的兩端就是兩個套接字。套接字屏蔽了底層通信軟件和具體操作系統(tǒng)的差異,使得任何兩臺安裝了 TCP 協(xié) 議軟件和實現(xiàn)了套接字規(guī)范的計算機之間的通信成為可能。 微軟的 Windows Socket 規(guī)范 (簡稱 Winsock)對 Berkley 的套接字規(guī)范進行了擴展,利用標準的 Socket 的方法,可以同任何平臺上的 Socket 進行通信;利用其擴展,可以更有效地實現(xiàn)在 Windows 平臺上計算機間的通信。 Socket 減輕了編寫計算機間通信軟件的難度; 無憂無慮畢設網(wǎng) ():畢業(yè)設計源碼下載 第 4 頁 共 22 頁 標 準的 Socket 的應用程序框架如下: Server 方: Socket() 新建一個 Socket Bind() 同服務器地址 綁 定 Listen() Accept() block wait read()接受消息,在 windows 平臺中,方法為 send(TCP),或者是 send to(UDP)處理服務請求 Write()發(fā)送消息 ,在 windows 平臺中,方法為 send(TCP), 或者為 send to(UDP)。 Client 方相對簡單: Socket() Connect()通過一定的 port 連接特定的服務器,這是與服務器建立連接 Write() Read()。 Socket 可以是基于 TCP 的,也可以是基于 UDP,同時 Socket 甚至建立在 其他的協(xié)議,比如 IPX/SPX, DECNet 等。在新建一個 Socket 時,可以指定新建何類Socket。 Bind()用來同服務器的地址 綁定 ,如果一個主機只有一個 IP 地址,實際上 綁 定的作用就相對多余了。 Listen()開始監(jiān)聽網(wǎng)絡, Accept()用于接受連接,其返回值是保持同客戶機聯(lián)系的 Socket。 在 Delphi 中,其底層的 Socket 也應該是 Windows 的 Socket。 Inprise 在 Delphi中對 Windows Socket 進行了有效的封裝,使得用戶可以很方便地編寫網(wǎng)絡通信程序。 Socket 系 統(tǒng)調(diào)用包括創(chuàng)建 Socket、 將創(chuàng)建的 Socket 與本地端口綁定 、 建立Socket 連接服務器 、 監(jiān)聽是否有連接 、 請求數(shù)據(jù)的可控緩沖發(fā)送 和 可控緩沖接收 ,到最后 關閉 Socket。 首先在服務器方,利用 socket()函數(shù)建立流式套接字,返回套接字號 s,接著利用 bind()函數(shù)將套接字 s 與本地地址綁定,緊接著利用 listen()函數(shù)通知 TCP,監(jiān)聽客戶方,服務器準備接收連接,沒有連接的話,服務器方通過 closesocket()關閉套接字 s,服務結(jié)束。有連接的話,在客戶方,通過 socket()函數(shù)建立流式套接字 s,此時 在服務器方,建立連接,通過 accept()返回,得到新的套接字 ns,客戶方通過 connect()將套接字 s 與遠程地址連接 ,此時服務器方 /客戶方在 ns/s 上讀 /寫數(shù)據(jù),直到交換完成。交換完成后,服務器方 /客戶方關閉套接字 ns/s,最后服務器方通過 closesocket()關閉最初套接字 s,服務結(jié)束。 具體流程如圖 2 所示: 無憂無慮畢設網(wǎng) ():畢業(yè)設計源碼下載 第 5 頁 共 22 頁 服 務 器 方接 收 連 接 A c c e p t ( ) 等 待 客 服 端的 連 接 監(jiān) 聽 連 接 請 求 l i s t e n ( )與 本 地 地 址 綁 定 b i n d ( )建 立 服 務 器 s e r v e r s o c k e t ( )建 立 連 接 C l i e n t C o n n e c t ( )接 收 / 發(fā) 送 數(shù) 據(jù) r e c v ( )/ s e n d ( )關 閉 連 接 c l o s e s o c k e t ( )關 閉 服 務 器客 戶 端 方建 立 客 戶 端 c l i e n t s o c k e t ( )與 遠 程 地 址 連 接 c o n n e c t ( )R e m o t e A d d r e s s發(fā) 送 / 接 收 數(shù) 據(jù) s e n d ( ) / r e c v ( )關 閉 連 接 c l o s e s o c k e t ( ) 圖 2 面向連接的套接字的系統(tǒng)調(diào)用 流程 圖 2.2 系統(tǒng)需求分析 局域網(wǎng)聊天程序的實現(xiàn)主要為局域網(wǎng)內(nèi)的計算機提供交流的平臺。完成一個無憂無慮畢設網(wǎng) ():畢業(yè)設計源碼下載 第 6 頁 共 22 頁 基 于服務器和客戶端的局域網(wǎng)通訊軟件,類似于聊天室,可進行注冊、登錄、系統(tǒng)信息記錄、聊天等功能。用戶容易使用,便于管理。 2.3 系統(tǒng)設計目標 局域網(wǎng)聊天程序的實現(xiàn),主要 為需要局域網(wǎng)內(nèi)聊天的用戶設計一個聊天平臺; 本系統(tǒng)的目的是為了讓 局域網(wǎng)內(nèi)的計算機用戶如寢室、辦公室 能隨時隨地通過網(wǎng)絡進行 交流。 局域網(wǎng)聊天程序 的設計目標為一個高性能的,易于使用的,面向局域網(wǎng) 的 即時信息軟件。最終的 程序 應具有如下功能 : 客戶端使用 簡便, 服務器端運行穩(wěn)定??蛻舳伺c服務器端可運行在多種 系統(tǒng)平臺,具有良好的兼容性能。 客戶端與服務器端功 能獨立,可獨立運行在不同的計算機上或運行在同一臺計算機上 ,具有最大的靈活性。 能夠 進行注冊,設置自己的用戶名和密碼, 自動更新其他用戶的名單。 選擇特定用戶并與其交談 ,還可以向在所有在線的用戶發(fā)送消息 。 服務器能夠記錄所有用戶的登錄、退出、注冊等系統(tǒng)消息。 2.4 系統(tǒng)運行環(huán)境 硬件環(huán)境: CPU: Intel Pentium-M 725 1.6GHz 內(nèi)存: 512 MB 硬盤: 60 G 軟件環(huán)境: 操作系統(tǒng): Microsoft Windows XP Professional 應用軟件: Delphi 7.0 + Database Desktop 2.5 系統(tǒng)開發(fā)環(huán)境 本系統(tǒng)開發(fā)環(huán)境采用 Borland 公司新推出的 Delphi7.0 Delphi 是全新的可視化編程環(huán)境 ,為我們提供了一種方便、快捷的 Windows應用程序開發(fā)工具。它使用了 Microsoft Windows 圖形用戶界面的許多先進特性和設計思想 ,采用了彈性可重復利用的完整的面向?qū)ο蟪绦蛘Z言 (Object-Oriented Language)、當今世界上最快的編輯器、最為領先的數(shù)據(jù)庫技術。對于廣大的程序開發(fā)人員來講 ,使用 Delphi 開發(fā)應用軟件 ,無疑會大大地 提高編程效率 ,而且隨著應用的深入 ,您將會發(fā)現(xiàn)編程不再是枯燥無味的工作 Delphi 的每一個設計細節(jié) ,都將帶給您一份欣喜 。 無憂無慮畢設網(wǎng) ():畢業(yè)設計源碼下載 第 7 頁 共 22 頁 3 局域網(wǎng)聊天程序系統(tǒng)設計 3.1 系統(tǒng)結(jié)構(gòu)設計 本系統(tǒng)采用 C/S 結(jié)構(gòu), 最重要的特點是非對等相互作用 ,即客戶與服務器處于不平等的地位 ,服務器擁有客戶所不具備的硬軟件資源 ,客戶和服務器分別是服務的請求者和提供者。網(wǎng)絡中各個機器的資源是不平等的 ,網(wǎng)絡的真正目的就是共享這些不均 等資源 源 ,非對等相互作用特點也正好體現(xiàn)和適應了客觀現(xiàn)實中資源的不均等現(xiàn)象。 局域網(wǎng) 上不同主機進程間通信完全是異步的 ,通 信時機具有隨機性 ,所以必須 用這種 為通信雙方的數(shù)據(jù)交換提供同步的機制 。 3.2 數(shù)據(jù)庫設計 局域網(wǎng)聊天程序的 數(shù)據(jù)庫設計 (Database Design)把系統(tǒng)中大量的數(shù)據(jù)按一定的模型組織起來,提供存儲、維護、檢索數(shù)據(jù)的功能,使信息系統(tǒng)可以方便、及時、準確地從數(shù)據(jù)庫中獲得所需的信息。 設計數(shù)據(jù)庫應該具備數(shù)據(jù)庫的基本知識和數(shù)據(jù)庫設計技術 , 計算機科學的基礎知識和程序設計的方法和技巧 及 軟件工程的原理和方法應用領域的知識 。 根據(jù) 局域網(wǎng)聊天程序系統(tǒng) 的一般要求,通過對整個系統(tǒng)運行過程和數(shù)據(jù)流程分析,得出本系統(tǒng)的實體表:用戶 基本信息表。本系統(tǒng)設計了一個簡單的數(shù)據(jù)庫包括 username 和 password 兩個字段。用戶基本信息表如表 1: 表 1 用戶基本信息表: DB_USER 中文名稱 字段名 類型 長度 是否允許空 備注 用戶名 username nvarchar 10 not null PK 密碼 password nvarchar 100 not null 3.3 客戶端服務器功能設計 客戶端主要功能有用戶注冊、用戶登錄、在線用戶列表、消息收發(fā)模塊。而消息收發(fā)模塊又分為公聊和私聊兩種??蛻舳说墓δ苣K如圖 3 所示; 局 域 網(wǎng) 聊 天 程 序 客 戶 端在 線 用 戶 列 表用 戶 登 錄用 戶 注 冊消 息 收 發(fā) 圖 3 客戶端功能模塊圖 無憂無慮畢設網(wǎng) ():畢業(yè)設計源碼下載 第 8 頁 共 22 頁 服務器主要功能有消息處理、系統(tǒng)消息、在線用戶列表、監(jiān)聽狀態(tài)控制,如圖 4 所示 : 局 域 網(wǎng) 聊 天 程 序 服 務 器監(jiān) 聽 狀 態(tài) 控 制在 線 用 戶 列 表系 統(tǒng) 消 息消 息 處 理 圖 4 服務器功能模塊圖 3.4 客戶端設計 客戶端設計時以用戶使用為出發(fā)點,功能分登錄、注冊、輸入服務器 IP、聊天、用戶列表和關于這幾個詳細模塊。 首先設計一個連接模塊,即輸入服務器 IP 后看能否連接到服務器,要能先連接到服務器才能再進行登錄注冊等操作,這樣做可以讓用戶知道服務器是否在運行。連接 到服務器后,進行注冊,登錄時系統(tǒng)要能根據(jù)用戶輸入的用戶名和密碼判斷該用戶是否為合法用戶;如果用戶輸入的用戶名或密碼錯誤,系統(tǒng)將給出相應的提示,并要求用戶進行注冊或重新登錄;如果用戶輸入的用戶名和密碼正確,可進行聊天操作。這里需要說明的是,在連接到服務器、登錄、注冊等程序沒有完成時聊天模塊和用戶列表模塊設計成非激活狀態(tài),登錄成功后再激活這兩個模塊。用戶列表只是顯示在線用戶,當有新用戶上線時用戶列表動態(tài)刷新。具體流程圖如圖 5 所示: 無憂無慮畢設網(wǎng) ():畢業(yè)設計源碼下載 第 9 頁 共 22 頁 開 始連 接 到 服 務 器登 錄獲 得 在 線 用 戶列 表聊 天斷 開 連 接登 錄 界 面有 新 用 戶 上 線刷 新 用 戶 列 表退 出 程 序成 功失 敗提 示 用 戶 進 行注 冊注 冊 圖 5 客戶端系統(tǒng)流 程圖 3.5 服務器端設計 服務器端分為監(jiān)聽控制、系統(tǒng)信息欄、及時狀態(tài)顯示和用戶列表幾個詳細模塊。服務器運行時要能對監(jiān)聽狀態(tài)進行控制,可以在不退出程序的情況下關閉服務器。服務器設計一個系統(tǒng)信息欄,記錄服務器的各種狀態(tài)變化和用戶的登錄、注冊、下線、客戶端的連接等信息,方便管理員進行管理。服務器同樣設計一個可以動態(tài)刷新的在線用戶列表,管理員可以看到當前的用戶在線情況。具體流程圖如圖 6 所示: 無憂無慮畢設網(wǎng) ():畢業(yè)設計源碼下載 第 10 頁 共 22 頁 開 始處 于 監(jiān) 聽 狀 態(tài)檢 測 到 客 戶 端連 接 到 服 務 器關 閉 服 務 器退 出 程 序在 線 用 戶 列 表 刷 新 ,系 統(tǒng) 信 息 欄 顯 示 系 統(tǒng) 信 息登 錄成 功提 示 用 戶 重 新 登 錄失 敗 圖 6 服務器端系統(tǒng)流程圖 3.6 聊天中公聊和私聊的設計 聊 天時可以向在線用戶中其中一個發(fā)送消息也可以向所有在線用戶發(fā)送消息。每個在線用戶都和服務器建立了一個獨立的連接,如果其中一個用戶 A 向用戶 B 發(fā)送消息 a,工作原理是:用戶先把消息 a 發(fā)給服務器,服務器在把此消息發(fā)給用戶 B;如果用戶 A 向所有在線用戶發(fā)送消息 b,工作原理是:用戶先把消息 b 發(fā)給服務器,服務器再把此消息發(fā)給所有在線用戶。如圖 7 所示: 無憂無慮畢設網(wǎng) ():畢業(yè)設計源碼下載 第 11 頁 共 22 頁 服 務 器在 線 用 戶 B在 線 用 戶 A 在 線 用 戶 C在 線 用 戶 D消 息 a ( 私 聊 )消 息 b ( 公 聊 )消 息 b消息a消息b消息b 圖 7 公聊私聊的處理 3.7 界面設計 3.7.1 客戶端界面設計 通過初步規(guī)劃,客戶端的界面應該包括以下內(nèi)容: IP 輸入欄、用戶登錄欄、用戶注冊欄、用戶列表欄、聊天記錄顯示欄、聊天信息輸入欄和關于對話框。 總體思想是上下,下分兩欄,使用框架做布局,此方法可以使整個系統(tǒng)更加符合信息空間的信息存儲,運行速度更快,信息層次更加清晰,用戶操作則更方便,更有條理。 整體界面的設計的下欄為聊天區(qū),下欄右邊為用戶列表,左邊為聊天記錄和登錄信息的顯示欄,下方為聊天記錄輸入框,注冊和關于為彈出對話框。示意圖如圖 8、圖 9、圖 10: 無憂無慮畢設網(wǎng) ():畢業(yè)設計源碼下載 第 12 頁 共 22 頁 圖 8 客戶端界面設計 圖 9 注冊欄設計 圖 10 關于對話框設計 3.7.2 服務器界面設計 客戶端 的界面應該包括以下內(nèi)容:服務器監(jiān)聽狀態(tài)控制欄、在線用戶列表欄、無憂無慮畢設網(wǎng) ():畢業(yè)設計源碼下載 第 13 頁 共 22 頁 系統(tǒng)信息欄和關于對話框,如圖 11 所示: 局 域 網(wǎng) 聊 天 程 序 服 務 器幫 助 信 息用 戶 列 表服 務 器 監(jiān) 聽 狀 態(tài) 控 制 欄用 戶 注 冊 欄 圖 11 服務器功能圖 整體界面的設計同樣為上下分開布局,下欄為服務器監(jiān)聽狀態(tài)控制欄,通過點擊右邊用戶列表欄的用戶來完成用戶的選擇。上欄為用戶列表和系統(tǒng)信息欄,注冊為彈出對話框,同客戶端一樣,示意圖略。示意圖如圖 12: 圖 12 服務器界面設計 4 系統(tǒng)實現(xiàn)及核心代碼 4.1 網(wǎng)絡通信核心代碼 begin if not serversocket1.Active then begin serversocket1.Active:=true; /如果 serversocket 沒有激活則激活它 無憂無慮畢設網(wǎng) ():畢業(yè)設計源碼下載 第 14 頁 共 22 頁 memo1.Lines.Add(服務器連接! +Datetimetostr(now)+); /狀態(tài)欄顯示服務器當前時間狀態(tài) end else showmessage(已經(jīng)在監(jiān)聽狀態(tài) ); end; /點擊監(jiān)聽按鈕時服務器開始監(jiān)聽請求 begin clientip:=socket.RemoteAddress end; /客戶端的 IP 地址 procedure TForm1.ServerSocket1Listen(Sender: TObject;Socket: TCustomWinSocket); begin statusbar1.SimpleText:=監(jiān)聽狀態(tài) .; counter:=0; end; /服務器處于監(jiān)聽狀態(tài)時狀態(tài)欄顯示“監(jiān)聽狀態(tài) ” begin tmptext := socket.ReceiveText; if pos(%&%&%&,tmptext)0 then / 當服務器收到的 text 中有 %&%&%&字符串時表示私聊 begin tmptext := copy(tmptext,1,length(tmptext)-6); signpos:= pos(&,tmptext); chattext:= copy(tmptext,1,signpos-1); member:=copy(tmptext, signpos+2,pos($,tmptext)-2-signpos); usename:=copy(tmptext,pos($,tmptext)+2,length(tmptext)-pos($,tmptext)+2); /從 text 中分別提取聊天信息,發(fā)送人,接收人等相關信息 for i:=0 to counter-1 do begin if member=chatnamei then begin serversocket1.Socket.Connectionsi.SendText(usename+對你說: +chattext); break; /發(fā)送聊天信息給接收人 end; end; 無憂無慮畢設網(wǎng) ():畢業(yè)設計源碼下載 第 15 頁 共 22 頁 end else / 當無任何標記時表示公聊 begin for i:=0 to counter-1 do serversocket1.Socket.Connectionsi.SendText(tmptext); /對所有人發(fā)送信息 end; end; 以上是聊天部分的代碼,服務器通過特殊的字符串來區(qū)分公聊和私聊,當有%&%&%&字符串時表示私聊;當無任何標記時表示公聊。 4.2 用戶注冊登錄下線模塊功能代碼 if pos($%$%$%,tmptext)0 then / 當有 $%$%$%表示有登陸信息 begin tmptext := copy(tmptext,1,length(tmptext)-6); chatnamecounter:=tmptext; listbox1.Items.add(tmptext); /用戶列表添加新登錄的用戶 check :=(table1.lookup(usename,tmptext,password); socket.SendText(check+#$%&); memo1.Lines.Add(用戶 +tmptext+上線了。 ); if counter0 then begin for i:=0 to counter-1 do begin serversocket1.Socket.Connectionscounter.SendText (chatnamei+()&*%); serverSocket1.Socket.Connectionsi.SendText(tmptext+()&*%); sleep(300); end; end; inc(counter); end else if pos(?*#,tmptext)0 then /當有 ?*#字符串表示注冊信息 begin 無憂無慮畢設網(wǎng) ():畢業(yè)設計源碼下載 第 16 頁 共 22 頁 signpos:=pos(?*#,tmptext); member:=copy(tmptext,1,signpos-1); chattext:=copy(tmptext,signpos+6,length(tmptext)-6-length(member); with table1 do begin if table1.FindField(usename).AsString=member then socket.SendText(用戶名已經(jīng)有人用了,請檢查后重新注冊。 ) else /注冊時進行用戶名驗證 begin insertrecord(member,chattext); memo1.Lines.Add(新用戶: +member+注冊成功! ); socket.SendText(注冊成功,請先登陸再進行聊天! ); end; /注冊成功后提示 end; end else if pos(*&%#),tmptext)0 then / 當有 *&%#)字符 串表示有人下線了 begin tmptext:=copy(tmptext,1,length(tmptext)-8); memo1.Lines.Add(用戶 +tmptext+下線了。 ); for i:=0 to counter-1 do serversocket1.Socket.Connectionsi.SendText(tmptext+$%#$); for i:=listbox1.items.Count downto 1 do if listbox1.Items.Stringsi-1=tmptext then begin listbox1.Items.Delete(i-1); /從用戶列表中去除下線的用戶 dec(counter); end; end 客戶端與服務器進行通信時同樣是通過附加不同的特殊字符串來讓服務器區(qū)分登錄、注冊、下線等信息,當有 *&%#)字符串表示有人下線了,listbox1.Items.Delete(i-1);表示從用戶列表中刪除下線的用戶 ;當有 ?*#字符串表示注冊信息;當有 $%$%$%表示有登陸信息。 無憂無慮畢設網(wǎng) ():畢業(yè)設計源碼下載 第 17 頁 共 22 頁 5 系統(tǒng) 測試 5.1 測試方法 ( 1)運行服務器,看能否對服務器的監(jiān)聽狀態(tài)進行管理,開關服務器看系統(tǒng)信息欄有沒有相關記錄。 ( 2)運行客戶端,輸入服務器的 ip 地址,測試看能否連接到服務器。 ( 3)客戶端連接到服務器后,進行注冊,注冊成功后看能否成功登錄,登錄后看聊天模塊是否激活。 ( 4)注冊若干個用戶進行登錄,看服務器 和客戶端的在線戶列表是否刷新和同步。 ( 5)看能否進行聊天,公聊和私聊能否正常進行。 ( 6)看服務器的系統(tǒng)信息欄是否記錄了客戶端的連接,用戶的注冊、登錄、下線等信息。 5.2 測試結(jié)果 ( 1)服務器能夠正常運行,能夠?qū)Ψ掌鞯谋O(jiān)聽狀態(tài)進行管理,并且系統(tǒng)信息欄有相關記錄。 ( 2)客戶端能夠連接到服務器,并能夠進行注冊和登錄 ( 3)在有新用戶登錄時,用戶列表動態(tài)刷新 ( 4)聊天功能可以正常進行 ( 5)服務器系統(tǒng)信息欄記錄了用戶的注冊、登錄、下線等相關信息 5.3 測試結(jié)論 以上的測試案例是單獨進行測試的,還需要 進一步的交叉案例測試。通過以上簡單測試說明了設計方法的正確性,它已經(jīng)初步具備了局域網(wǎng)聊天程序的基本框架,具有良好的檢測性能和準確的檢測結(jié)果。但系統(tǒng)構(gòu)架和代碼設計還需要進一步優(yōu)化,以提高系統(tǒng)的運行效率,降低所耗的系統(tǒng)資源,為用戶提供更好的服務。 無憂無慮畢設網(wǎng) ():畢業(yè)設計源碼下載 第 18 頁 共 22 頁 5.4 程序運行截圖 圖 13 服務器運行界面 圖 14 客戶端運行界面 結(jié) 論 經(jīng)過了 3 個月的忙碌,局域網(wǎng)聊天程序基本開發(fā)完畢。其功能基本符合用戶需求。從解決不了細小問題的苦惱到問題最終解決的喜悅,一直伴隨著整個設計過程。整個設計過程是不斷學習,不斷 發(fā)現(xiàn)問題、分析問題、解決問題的過程。使我受益良多。設計期間有許多的感觸、想法、經(jīng)驗,教訓,對以后的學習、工無憂無慮畢設網(wǎng) ():畢業(yè)設計源碼下載 第 19 頁 共 22 頁 作有很大的益處。 另外,在使用參考書籍的過程中,有很多的精湛的細節(jié)值得認真學習和領悟。 本設計在查閱了大量的文獻后進行理論研究的同時,借鑒了其他聊天程序的優(yōu)缺點,在此基礎上展開了研究工作,歸納起來,論文取得的成果和創(chuàng)新點主要有以下幾個方面: 通過網(wǎng)絡編程,設計了基本的聊天功能和登錄注冊功能。 對典型的 C/S 結(jié)構(gòu)有了基本了解。 將數(shù)據(jù)庫和網(wǎng)絡編程相結(jié)合,利用 DELPHI7.0 這一軟件進行編程,將在大學里學到 的知識進行了很好的綜合。 利用 TCP/IP 協(xié)議中的 TCP 協(xié)議,即面向連接的服務,進行數(shù)據(jù)的傳輸,對網(wǎng)絡中數(shù)據(jù)的傳輸過程進行了認真的分析。 至 此,一個基于 TCP/IP 協(xié)議的 局域網(wǎng) 聊天室就完成了。在局域網(wǎng)內(nèi)運行該程序并進行設置,即可自由的聊天了。當然,由于時間緊迫,所設計的軟件難免有不足之處,敬請各位評委老師指導。 在 使 用 Delphi 7.0 制作基于 Socket 的局域網(wǎng)聊天室時,我們一般不需要直接進行套接字編程。 Delphi 帶有大量完成專門網(wǎng)絡連接功能的部件,使用這些部件完全可以滿足我們大多數(shù)編程的需要。由于 Delphi 封裝 了 WindowsSocketAPI,使得我們在 Delphi 環(huán)境下編寫 WindowsSocket 程序變得非常輕松。聊天室的制作是件煩瑣而有挑戰(zhàn)性的工作,涉及面廣,與實踐教學環(huán)節(jié)密不可分,與課程內(nèi)容密切相關,要多參考用其他語言是如何制作聊天室的,多搜集一點網(wǎng)上的資料。 由于時間和個人水平的有限,

溫馨提示

  • 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

提交評論