南昌大學計算機綜合課程設計即時通訊系統的設計及實現_第1頁
南昌大學計算機綜合課程設計即時通訊系統的設計及實現_第2頁
南昌大學計算機綜合課程設計即時通訊系統的設計及實現_第3頁
南昌大學計算機綜合課程設計即時通訊系統的設計及實現_第4頁
南昌大學計算機綜合課程設計即時通訊系統的設計及實現_第5頁
已閱讀5頁,還剩19頁未讀 繼續免費閱讀

下載本文檔

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

文檔簡介

1、 計算機綜合課程設計課程設計題 目: 即時通訊系統的設計與實現 學生姓名: 詹凱 學 號: 6103214020 專業班級: 網絡工程141班 指導教師: 韓清 二0一七 年 六 月 三十 日即時通訊系統的設計與實現專 業: 網絡工程 學 號:6103214020學生姓名: 詹凱 指導教師: 韓清摘要近年來,隨著Internet的飛速發展,計算機網絡得到了越來越廣泛的應用,并且已經逐步走進千家萬戶。自邁入信息時代以來,距離已經不再是人們之間聯絡溝通的障礙,也正因為如此,人們對溝通交流的需求和依賴也越來越強烈,各行各業對信息交流的要求也越來越高。如今,通過各種即時通信軟件,人們已經可以在足不出戶

2、的情況下,與遠距離甚至世界各地的人進行實時的聊天交流,這樣的交流不僅滿足了人們對交流溝通的需求,同時也給人與人之間的交流帶來了極大的便捷和大量的經濟節省。因此,即時通信(Instant Messaging)在人們的生活工作和學習中得到了更廣泛的應用。目前,已經有不少即時通信軟件在社會公眾中流行,像騰訊QQ,新浪微博等,都是國內人們所熟知的知名流行即時通信軟件,其技術方面也都處于國際領先水平。同時,由于即時通信軟件的便利,其應用已經由最初的簡單的聊天交友得到了巨大的拓展。適應各種場合的各式即時通信軟件也開始出現在軟件市場上,這就包括了一些與企業管理相關的即時通信軟件,一個具有企業自己特色的集信息

3、管理和即時通信為一體的內部應用軟件,能夠使一個企業或者團隊更像一個整體,同時也能夠給企業的管理和信息交流帶來極大的便利,在一定程度上提高工作效率。同樣的,對于軟件設計與開發的行業來說,過去的那種僅適用于PC機上的應用程序的開發已經遠遠不能滿足市場的多樣化的需求,網絡程序的廣泛應用和廣大需求使學習與掌握與網絡相關的編程技術顯得尤為重要。本論文將結合一個具體的局域網即時通信系統的開發編寫,以現有的各種技術,介紹講解網絡IM軟件開發中的重要知識,并討論其中關鍵環節的技術問題和各種解決方案和設計策略。關鍵詞:即時通信; 信息交流; IM軟件; 網絡編程Design and implementation

4、 of instant messenger systemAbstractIn recent years, with the rapid development of Internet, computer network has been more and more widely used, and has gradually entered the tens of thousands of households. Since entering the information age, the distance between people is no longer the commu

5、nication obstacles, because of this, people on the communication demand and dependence are increasingly strong, demand for the exchange of information is more and more high. Now, through a variety of instant messaging software, people can stay at home situation, and even remote people around th

6、e world for real-time chat communication, such communication not only to meet the communication needs, but also brought great convenience and economy to save a lot of communication between people. Therefore, instant messaging (Instant Messaging) has been widely used in people's life, work a

7、nd study.At present, there have been a lot of popular instant messaging software, in the public like Tencent QQ, Sina and micro-blog, are well-known domestic popular instant messaging software known as, its technology has reached the international advanced level. At the same time, due to the co

8、nvenience of instant messenger software, its application has been greatly expanded by the initial simple chatting and dating. To adapt to all kinds of instant communication software on various occasions also began to appear in the software market, which includes a number of enterprise managemen

9、t and related internal instant messaging software, application software is a set of enterprise information management has its own characteristics and instant communication as a whole, can make a company or team as a whole, at the same time it can bring great convenience to the management of enterpri

10、ses and the exchange of information, improve the work efficiency to a certain extent.Similarly, for the design and development of software industry, application development past that applies only to the PC machine on the market can not meet the diversified needs, widely used and the demand of networ

11、k program to learn and master the network related programming technology is very important.This paper will combine the development of instant communication system of a specific LAN written in various existing techniques, introduce important knowledge in software development of IM network, the key te

12、chnical problems and solutions and discuss and design strategies.Keyword: Nitrides;MOCVD;LED;Photoluminescence;RBS/channeling;Optical absorption目錄摘要2Abstract31. 問題描述41.1. 題目內容41.2. 數據要求52. 分析與設計52.1. 功能描述52.2. 程序流程圖的設計52.3. 數據庫結構描述62.4. 測試數據、運行界面圖及期望結果72.5. 模塊結果及各個模塊的實現方法描述103. 源代碼113.1. 服務器端113.2.

13、客戶端144. 總結165. 參考文獻161. 問題描述1.1. 題目內容即時通訊是指為網絡在線用戶提供通過客戶端和服務器度端軟件進行實時信息交流的服務,即時通訊軟件提供了兩臺主機間的網絡高層協議。本文內容即為即時通訊系統的設計與實現。1.2. 數據要求1、實現實驗室局域網內的即時通訊軟件,在線的兩臺主機之間可以互 發文字信息、音頻信息,可以傳遞文件;2、軟件自動掃描網內用戶并加入好友組群,用戶名以實驗桌號定義;3、所有用戶間可以共享文件,實現方式可以是將文件拉入組群或設立共享空間自行下載。2. 分析與設計2.1. 功能描述本系統的使用對象為個人用戶,要完成的主要功能為實時聊天會話功能,以及與

14、之伴隨的用戶信息管理,并包括網絡即時通信的相關通行功能。在擴展方面還應當加入固定群組會話與臨時會話組等功能,進階功能還包括文件傳輸,語音、視頻對話等高階功能。對于一個網絡即時通信系統而言,由于本系統采用基于TCP的集中式C/S結構,必須具備一些與網絡連接相關的通用功能,無論系統的最終用途是什么,這些功能都是必不可少的,具體包括:(1)客戶端登陸(2)新用戶注冊(3)找回、修改密碼(4)登錄設置(5)發送接受消息(6)聊天記錄(7)查找添加刪除好友(8)傳送文件等。2.2. 程序流程圖的設計在SOCKET網絡編程中,socket函數通常是以阻塞方式進行的,即在執行數據收發過程的時候,程序線程會在

15、收發過程完成之前阻塞,只有在完成了當前數據收發工作后,才會執行其他指令,這樣一來,接收數據、發送數據、處理數據、邏輯過程等都無法同步進行,在頻繁的網絡數據傳輸過程中,各種傳輸工作以及處理工作都有可能同時發生,無法同步顯然會造成用戶使用過程中過多的等待,給用戶操作帶來極大的不良感覺。在這樣的情況下,必須通過自行創建額外線程來輔助程序主線程的工作,以多線程同步的方法來解決阻塞方式數據傳輸帶來的不良影響。為此,除了主線程外,每一次數據接收、數據發送、數據處理等工作都將分別單獨占用一個線程,以此來完成數據接收發送以及處理的同步工作。CSeesion隊列是否收到連接請求請求消息外來連接請求監聽SOCKE

16、T服務器邏輯控制按照驗證數據包的形式讀取解析該連接上首次收取的數據接受連接,創建管理該連接的CSession對象,并首次首取數據是否通過驗證?丟棄該連接,刪除其CSession對象給該CSession對象發放ID,進入連接管理隊列,并將其驗證信息所對應的用戶ID與此CSession的ID做關聯,放入關聯容器map中用戶IDCSessionID新的關聯關系用戶IDCSessionID用戶IDCSessionID用戶IDCSessionIDstaffed_SessionID_MAP新的CSession對象已經存在的CSession對象圖1-2 服務端管理網絡連接的流程圖2.3. 數據庫結構描述在該

17、系統中,需要在服務器中存儲的數據信息主要包括用戶信息和用戶關系信息兩個方面,在用戶信息方面,又包含個人信息和操作信息兩個方面,其中,個人信息是用戶可以在獲得登陸帳號后自行修改的。下面將結合本系統的數據庫設計,介紹系統中包含的主要用戶信息數據。2.4. 測試數據、運行界面圖及期望結果首先開啟服務器程序注冊登錄頁:主頁、聊天面板:查找、添加好友:文件傳送:2.5. 模塊結果及各個模塊的實現方法描述2.5.1. 登陸認證功能的實現(1)用戶在界面中輸入用戶名,密碼,并點擊登陸按紐,客戶端界面向其邏輯處理層發送登陸消息。(2)邏輯層響應登陸消息,將用戶名密碼封裝成登陸認證包,寫進網絡連接管理對象的數據

18、發送緩沖區,并發出連接請求消息。(3)客戶端網絡連接管理對象嘗試進行連接。(4)服務端的網絡連接監聽模塊發現新來的連接請求,向服務端網絡傳輸模塊發出消息。(5)服務端網絡連接管理模塊暫時接受該連接請求,并收取其首次發來的數據,與數據庫中數據信息進行核對驗證,如果驗證失敗,則立即斷開連接,轉入(6);如果驗證通過,則跳過(6)轉到(7)(6)驗證失敗,客戶端網絡連接管理對象發現連接斷開,向用戶界面發出錯誤信息,界面顯示出錯誤提示。(7)驗證成功,服務器給此連接發放ID,并將其存入連接隊列,且根據數據庫中對應的用戶ID與連接管理ID進行關聯,向該連接客戶端發送連接成功應答包。其中包含著該用戶名對應

19、的ID號。2.5.2. 發送和接收聊天信息的實現(1)用戶打開列表中某其他在線用戶的聊天窗口,輸入信息后點擊發送。(2)邏輯層收到事件消息,獲取聊天窗口所對應的用戶信息(ID號)和聊天內容。將其封裝為數據包寫入網絡連接管理對象的發送緩沖區內并提請SEND事件。(3)網絡連接管理對象收到SEND消息后將發送緩沖區中內容發送出去。(4)服務端網絡連接收到數據包后(接收過程上一章已有詳細分析),將其送給服務端邏輯處理層(5)服務器邏輯處理層僅解開包頭,得知為聊天信息,從包頭中獲得發送方和接收方的ID號,并想網絡傳輸控制模塊發出相應指令。(6)網絡傳輸控制模塊在得到指令后,通過MAP中關聯信息在連接隊

20、列中找出接收方ID對應的連接管理對象,將數據復制入其發送緩沖區中進行發送。(7)接收方客戶端網絡連接管理對象收到網絡數據后,通過預處理包頭得知為聊天信息數據,并從包頭中獲取了數據發送方ID,將數據地址作為聊天消息到來的系統消息發送給邏輯處理層。(8)邏輯處理層接收到消息后,根據數據地址將數據讀出并解包,得到對方的聊天信息,并通過對方ID找到其在界面TREE列表中的對應項,向界面發送指令,告知有來自某項的聊天消息。(9)界面處理層根據邏輯層的指令,完成對聊天消息到來的處理,在聊天窗口已打開時激活并顯示新消息,若窗口未打開,則更改對應圖標為信息未讀圖標。2.5.3. 查找和添加好友的實現(1)用戶

21、在界面中ID號,并點擊查找按紐,客戶端界面向其邏輯處理層發送查找消息。(2)邏輯層響應查找消息,將用戶名密碼封裝成登陸認證包,寫進網絡連接管理對象的數據發送緩沖區,并發出連接請求消息。(3)服務端的網絡連接監聽模塊發現新來的連接請求,向服務端網絡傳輸模塊發出消息。(4)服務端網絡連接管理模塊暫時接受該連接請求,并收取其首次發來的數據,與數據庫中數據信息進行查詢并返回查詢結果。2.5.4. 傳送文件的實現(1)用戶打開列表中某其他在線用戶的聊天窗口,點擊傳送文件按鈕選擇文件。(2)邏輯層收到事件消息,獲取聊天窗口所對應的用戶信息(ID號)和文件信息。將其封裝為數據包寫入網絡連接管理對象的發送緩沖

22、區內并提請SEND事件。(3)接收方客戶端網絡連接管理對象收到網絡數據后,通過預處理包頭得知為聊天信息數據,并從包頭中獲取了數據發送方ID,彈出彈窗確認是否接受文件。(4)接受端若選擇接受,則接受信息流并寫入本地硬盤;若拒絕則丟棄該包并關閉連接。3. 源代碼3.1. 服務器端public class SQLServerProcess extends Threadpublic SQLServerProcess(PropertyFile propertyFile)pf = propertyFile;sqlPool = new SQLPoolServer(pf);/*獲取動態線程池.*/thread

23、Pool = Executors.newCachedThreadPool();setUserOutline();try serverSocket = new ServerSocket(PORT); catch (IOException e) e.printStackTrace();JOptionPane.showMessageDialog(null, PORT + "端口被占用,請停止此端口的服務再從新啟動", "錯誤",JOptionPane.ERROR_MESSAGE);System.exit(0);/*啟動垃圾處理*/new GC();new My

24、Tray(sqlPool, threadPool, serverSocket);start();/* * 靜態方法.獲取本機IP地址. * return String 本機IP地址的字符串. * */public static String getLocalAddress()String ip = null;try ip = InetAddress.getLocalHost().getHostAddress(); catch (UnknownHostException e) return null;return ip;/* * 服務器啟動時. * 將所有用戶設置為不在線狀態. * */priv

25、ate void setUserOutline()/*獲取數據庫連接資源*/DBSource db = sqlPool.getSQLServer();String SQL = "UPDATE USERIPINFO SET STATUS = 0"try Statement stat = db.getStatement();db.setAutoCommit(false);stat.executeUpdate(SQL);mit(); catch (SQLException e) db.rollback();e.printStackTrace();finally/*釋放資源*/db

26、.releaseConnection();Overridepublic void run() while (!serverSocket.isClosed() try /* 監聽服務器端口 */threadPool.execute(new ProcessThread(serverSocket.accept(); catch (IOException e) e.printStackTrace();3.2. 客戶端public class ServiceFactory /* 登陸 */public static final String TASK_LOGIN = "0"/* 注銷

27、 */public static final String TASK_LOGOUT = "1"/* 新用戶注冊 */public static final String TASK_NEWUSER = "2"/* 更新用戶資料 */public static final String TASK_UPDATAINFO = "3"/* 查看好友資料 */public static final String TASK_GETINFO = "4"/* 搜索好友 */public static final String TAS

28、K_SEARCH = "5"/* 添加好友 */public static final String TASK_ADDTION = "6"/* 刪除好友 */public static final String TASK_REMOVE = "7"/* 離線消息 */public static final String TASK_LEFTINFO = "8"/* 獲取更改密碼 */public static final String TASK_PASSWORD = "9"/* 其他跟新 */pub

29、lic static final String TASK_NORMAL = "10"private static final String TYPE = "tocol.tcp.server.LoginService","tocol.tcp.server.LogoutService", "tocol.tcp.server.RegisterService","tocol.tc

30、p.server.UpdateInfoService","tocol.tcp.server.FriendInfoService", "tocol.tcp.server.SearchService","tocol.tcp.server.AddtionService", "tocol.tcp.server.RemoveService","com.jq.client.

31、protocol.tcp.server.LeftInfoService", "tocol.tcp.server.PasswordService" ;public static Service<?, ?> getService(String serviceType, String IP, int port) Class<?> c;Constructor<?> constructor;try c = Class.forName(TYPEInteger.parseInt(serviceType);/*

32、 帶參數的構造器. */constructor = c.getConstructor(TCPServer.class);return (Service<?, ?>) constructor.newInstance(new TCPServer(IP, port); catch (Exception e) e.printStackTrace();return null;4. 總結本論文詳細的介紹了一個即時通信系統的設計和實現方案,該系統是一個針對中小型企業的集人事管理和內部交流與一體的即時通信系統。在論文中,從系統各個方面依次闡述其設計思想和實現方案,主要包括了以下幾個方面的內容:(1)系統功能的設計以及與功能相關的用戶信息數據的設計,在功能上盡可能作到完善且實用,在數據信息上盡量全面、沒有遺漏。(2)充分發揮面向對象的思想,使系統有一個良好的結構,便于團隊合作開發,同時也有為后期維護或擴展工作奠定良好的基礎。(3)良好的協調網絡傳輸與邏輯控制的模塊劃分以及二者的接口設計,網絡傳輸控制對象的設計更要能夠適應多種網絡通信應用程序,以減少在今后類似項目的開發中的編碼工作量,避免重

溫馨提示

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

評論

0/150

提交評論