




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
目錄摘要 第一章緒論1.1課題背景隨著互聯網逐步普及,人們的生活和工作也越來越離不開信息網絡的支持,而聊天室是人們最常見,最直接的網上交流的方式。本聊天系統以聊天交流為主,為廣大用戶提供一個借助網絡進行人際交往的平臺,也是網絡與現實最貼近的實用型網站。本文所介紹的C/S聊天系統是基于開放的JAVA應用程序開發設計的,其主要特性是能動態、實時的完成信息的傳遞,且具有高效的交互性,更有效的處理客戶請求,易于維護和更新,其運行所需環境及其工作流程和各個功能控件的工作原理將在本文依次介紹,并且文中提供了部分程序源代碼。本文中將討論一種基于Socket的即時通訊工具的設計與實現方法。1.2研究現狀即時通訊軟件屬于娛樂型軟件,它已經是眾多網民的必備軟件。即時通訊軟件是通過即時通訊技術來實現在線聊天、交流的軟件。目前有2種架構形式,1、一種是C/S架構,采用客戶端/服務器形式,用戶使用過程中需要下載安裝客戶端軟件,典型的代表有:QQ、百度HI、SkypeQQVSGU、Gtalk、新浪UC、MSN等;2、采用B/S架構,即瀏覽器/服務端形式,這種形式的即時通訊軟件,直接借助互聯網為媒介、客戶端無需安裝任何軟件,既可以體驗服務器端進行溝通對話,一般運用在電子商務網站的服務商,典型的代表有Websitelive、53KF、live800等。1.3本文的主要工作本文主要工作是設計一個基于WINDOWS平臺的即時通訊工具,然后闡述本軟件的功能、并詳細闡述開發本軟件所用的相關技術,具體分析本軟件的各個模塊的功能及實現方法,說明本軟件的設計思想及方法。1.4開發平臺及環境介紹本系統采用jdk1.6平臺開發,JDK(JavaDevelopmentKit)是SunMicrosystems針對Java開發員的工具。自從Java推出以來,JDK已經成為使用最廣泛的JavaSDK。JDK是整個Java的核心,包括了Java運行環境,Java工具和Java基礎的類庫。。從SUN的JDK5.0開始,提供了泛型等非常實用的功能,其版本也不斷更新,運行效率得到了非常大的提高。本系統正是采用了比較新的版本來開發。由于jdk對電腦硬件配置要求不是很高,所以只要內存在256M以上配備了windows的計算機就可以流暢的使用jdk1.6。第二章系統分析2.1功能要求(1)用戶端之間的信息發送,本程序需要實現的最基本的功能(2)在線用戶主機名列表的維護。(3)在C/S模式中,服務器與客戶端是相互依賴的。在客戶端啟用以后,需要查看服務器端是否在線,服務器在線才能正常使用客戶端,如果服務器不在線,則在檢測一定次數以后自動退出客戶端程序。在使用過程中,客戶端在指定時間內未向服務器端發送信息的,服務器認為客戶端下線;客戶端在一定時間內未收到服務器端信息的,認為服務器已經下線,則提示用戶并建議退出,在用戶一定時間后沒有退出的則自動關閉客戶端程序。2.2系統結構圖如圖圖2-1,采用三層C/S模式,使用Java語言開發,后臺數據庫采用Access。客戶間通訊使用UDP協議,客戶端與服務器之間的通訊采用TCP/IP協議。圖2-1聊天系統結構圖2.3性能要求首先要求程序要可靠,可以應付種種由于系統問題產生的錯誤,比如初始網絡失敗,對方突然下線等。要求提前設想到類似的盡可能多的可能發生的事件,做出相應的應對措施,并向用戶提交簡單易懂清晰明白的提示信息。程序要有良好的容錯性,當用戶進行非法操作時或者系統本身出現問題時要能以最好的方式退出程序,避免發生程序假死現象。開發文檔要有好的易理解性,如果系統又要交由別人接手開發,或者自己由于種種原因需要進行二次開發,那么要保證以后能夠清晰的理解整個系統的設計思路以及實現細節。要求程序對所運行之系統的硬件條件要求盡可能低,運行時內存占用盡可能小,響應速度要盡可能快。并且不發生內存泄漏之類影響系統運行的錯誤事件。并且要求易于維護及擴展。所以應該采用模塊化開發,各個模塊之間不要有太多的聯系,以免維護困難。第三章系統設計3.1數據庫設計本軟件的服務器端需要用到數據庫,二用戶端則無需安裝任何數據庫。這里選擇的數據庫平臺暫時定為Access,數據庫文件為MyQQ.mdb,采用JDBC-ODBC橋連接,ODBC數據源名稱也為myqq。在數據庫中,共有三張表,每張表的表名以及字段描述如下:FRIEND表該表記錄了每個用戶所擁有的好友號碼,字段說明如表3.1所示。字段名類型長度含義主鍵否QQNUM長整型自動用戶賬號否FRIEND長整型自動該賬號好友否表3-1QQNUM表該表記錄了所有合法的賬號,字段說明如表3-2所示。字段名類型長度含義主鍵否ID長整型自動用戶編碼是QQNUM長整型自動賬號否USER_INFO表字段名類型長度含義主鍵否QQNUM長整型自動用戶賬號是NAME文本16用戶名否PASSWORD文本10密碼否STATUS整型自動用戶狀態否IP文本16IP地址否INFO文本100描述信息否PIC文本50頭像名否SEX文本2性別否EMAIL文本50郵箱地址否PLACE文本50聯系地址否BIRTHDAY文本50生日否PORT整型自動通信端口否3.2服務器端軟件結構客戶與服務器的通信通過Socket(TCP/IP)的方式連接。服務器采用多線程方式滿足多用戶的請求,默認情況下,每個線程處理一個用戶的請求。并通過創建一個ServerSocket對象監聽來自客戶的連接請求,默認端口為5638,然后無限循環調用accept()方法介紹客戶程序的連接。服務器通過JDBC-ODBC與后臺數據庫連接。服務器的主類是ServerForm,此類啟動后是一個圖形界面,它能完成一些功能:啟動Server;以列表的形式顯示上線用戶的信息和上線的總人數;可以將某一用戶斷開與服務器的連接,并釋放占用的服務器資源;設置一文本區域,顯示服務器的工作日志,當程序退出時,能將這些日志寫入文件中,文件名以“日期+時間”命名。服務器端程序的功能結構如圖3-1所示。服務器端程序用戶下線處理處理好友刪除處理更新信息處理好友添加處理查找用戶處理用戶登錄處理注冊新用戶服務器端程序用戶下線處理處理好友刪除處理更新信息處理好友添加處理查找用戶處理用戶登錄處理注冊新用戶圖3-1服務器端程序的功能結構示意圖服務器端程序運行界面如圖3-2所示。圖3-2服務器端程序運行界面為了完成這些功能,需要用到下列基本方法。這里以偽代碼的形式描述這些方法的基本流程。處理注冊新用戶的方法:registerNewUser(){獲得數據庫連接對象讀取客戶端用戶的注冊信息直線SQL語句返回注冊用戶的QQ號碼向客戶端發送用戶的QQ號碼向客戶端發送結束信號}處理用戶登錄的方法:Login(){獲得數據庫連接對象讀取用戶名和密碼執行SQL語句并判斷是否為合法用戶If(是合法用戶)注冊用戶的IP地址查找好友返回成功信息else返回登錄失敗的消息}處理用戶查找其他用戶方法:queryUser(){獲得數據庫連接對象讀取用戶端發送的查找信息執行SQL語句If(找到用戶)返回用戶的信息else返回錯誤信息}處理用戶添加好友方法:addFriend(){獲得數據庫連接對象結束客戶端發來的客戶及其好友號碼將客戶和好友的號碼插入點FRIEND表中If(執行成功)向客戶端發送成功信息else向客戶端發送失敗信息}處理用戶刪除好友方法:deleteFriend(){獲得數據庫連接對象接受客戶端發來的客戶及其好友的號碼執行SQL語句(在FRIEND表中刪除此信息)If(執行成功)向客戶端發送成功信息else向客戶端發送失敗信息}處理用戶更新自己信息的方法:updeteOwnInfo(){獲得數據庫連接對象讀取客戶端發送的信息將此信息寫入數據庫If(執行成功)向客戶端發送成功信息else向客戶端發送失敗信息}處理用戶下線的方法:loginOut(){獲得數據庫連接對象獲得客戶端號碼將用戶的在線狀態改為下線并清空其IP地址If(執行成功)向客戶端發送成功信息else向客戶端發送失敗信息}服務器類框架publicclassServerimplementsRunnable{定義套接口定義輸入輸出流publicServer(Sockets,……){獲得傳遞參數創建輸入輸出流}publicvoidrun(){while(bool){獲得客戶端的輸入字符串判斷字符串的命令類型根據命令調用相應的處理方法}}}3.3客戶端軟件結構客戶通過Socket建立于服務器的連接。服務器建立輸入輸出流,然后雙方通過該輸入輸出流來相互傳遞信息,一旦受到客戶端的連接請求,服務器accept()方法返回一個新建的Socket對象。客戶端然后向服務器發送消息,例如注冊、登錄、查找好友等,服務器受到來自客戶的請求后,針對不同的消息處理請求,做出不同的響應。雖然UDP協議不是可靠的協議,但是對于網絡聊天程序而言,可靠性并不太重要,UDP具有通訊速度快的優點,所以客戶間發送信息采用UDP協議。用戶登錄時,通過類DatagramPacket和DatagramSocket創建UDP包,其中包含了本地介紹端口以及發送端口,通過取得好友的IP地址向好友發送消息和接受消息。當用戶通過UDP受到消息后,可以通過DatagramPacket的方法InetAddressgetAddress()得到對方的IP地址,通過對好友列表比較以判斷是誰并提示用戶受到某某的消息,然后用戶選擇該用戶查看消息,如果好友列表沒有該人就顯示受到陌生人的消息。客戶端與服務器交互的流程如圖3-3所示。創建Socket創建SocketServerSocket發送請求類型發送信息發送完畢接收信息做出處理等待客戶請求做出相應處理接收信息停止接收返回結果結束執行操作數據庫連接信息請求命令信息完畢信號結果結束信號客戶端服務器端圖3-3客戶端與服務器端交互流程客戶端的程序框架如圖3-4所示。客戶端程序客戶端程序登錄模塊主界面注冊模塊發送消息添加好友查找好友刪除好友查看信息更改信息上線提示下線提示圖3-3客戶端程序框架登錄模塊登錄模塊是本軟件客戶端執行的第一個模塊。用戶在界面上輸入自己的賬號和密碼,必要時還需要輸入服務器的IP地址和端口號。程序用此來與服務器建立連接,告訴服務器等去登錄的賬號和密碼。服務器收到后,讀取數據庫中的信息,然后與用戶輸入的信息比較,如果相同,就向客戶返回成功消息并將其Status字段設為1,表示上線及注冊其IP地址,否則返回錯誤標志。主界面如果登錄成功,登錄程序將打開主程序窗口。主程序將向服務器請求讀取好友名單,服務器收到該請求,開始讀取數據庫中的FRIEND表,得到好友的號碼后,再在USER表中讀取好友資料,然后向客戶端發送這些信息,客戶收到后就在主窗口顯示好友,例如,頭像昵稱等。該界面主要有5個功能:eq\o\ac(○,1)更新功能eq\o\ac(○,2)查看基本信息eq\o\ac(○,3)添加好友eq\o\ac(○,4)刪除好友eq\o\ac(○,5)聊天功能注冊模塊在登錄窗口中單擊“注冊”按鈕,就可以進入注冊窗口。當服務器收到用戶的注冊請求,便開始接受客戶傳遞的信息,諸如客戶的昵稱、性別、籍貫、頭像、個人資料等。接受完畢后,便與后臺數據庫連接,然后向數據庫添加記錄。如果成功,便向客戶返回其QQ號碼,并在數據庫中注冊用戶的IP地址,然后更新其Status為1,即用戶在線。客戶收到服務器返回的信息后便打開主程序窗口,并同時開始創建UDP以便在用戶之間建立聯系。3.4測試運行用二臺機器通過路由器構成一個局域網,進行正確的網絡配置,兩臺臺機器上都安裝的是WINDOWS操作系統,經過測試可正常運行。總結本學年論文實現了簡單的實時聊天功能,經過細心的調試和排錯解決了絕大部分的問題。但幾乎每一個計算機程序都會有這樣那樣的不足,尤其是未經過精心維護的非商業軟件。本聊天系統程序在調試過程中,尤其在開始初期,感覺邏輯復雜,難以控制,因此至今還有許多未能解決的缺陷。目前本聊天系統還有待完善的功能如下:(1)沒有實現文件發送功能;(2)沒有實現語音通信功能;(3)沒有實現視頻功能。盡管學年論文在此就完成了,但是對于上述的缺陷,本人還會不斷對聊天系統進一步的完善它,期望在今后的日子里憑借自身的技術把系統做成一套功能完善的聊天系統。因為綜合性的軟件對開發技術要求較高,但是限于我的
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 紙張與紙板生產的自動化設備選擇考核試卷
- 2024項目管理考試考生的成功案例試題及答案
- 棉麻行業客戶需求預測與供應鏈優化策略實踐考核試卷
- 農業農業機械產業鏈金融服務批發考核試卷
- 穿戴式設備在機器人控制與交互的融合考核試卷
- 注冊會計師職場禮儀知識試題及答案
- 電子樂器音頻效果器設計與實現考核試卷
- 礦石市場的市場定位與市場戰略考核試卷
- 焦炭應用領域與技術要求考核試卷
- 項目管理文化的營造方法試題及答案
- 大眾傳媒文化智慧樹知到期末考試答案章節答案2024年復旦大學
- 2024年《網絡反不正當競爭暫行規定》重點解讀
- NB-T20048-2011核電廠建設項目經濟評價方法
- 河南省信陽市固始縣2023-2024學年四年級下學期期末數學試題
- 修補外墻防水合同
- 20萬噸有機肥項目可行性研究報告
- 2024-2030年中國街舞培訓行業市場發展現狀及競爭格局與投資戰略研究報告
- 顱內感染的護理查房
- 幼小銜接 每日一練
- 電纜敷設施工質量控制案例分享
- 健身減肥訓練營計劃方案
評論
0/150
提交評論