基于java socket的聊天室項目文檔
《基于java socket的聊天室項目文檔》由會員分享,可在線閱讀,更多相關(guān)《基于java socket的聊天室項目文檔(36頁珍藏版)》請在裝配圖網(wǎng)上搜索。
1、 北京郵電大學(xué)軟件學(xué)院 2010-2011 學(xué)年第 1學(xué)期實訓(xùn)項目文檔 (每個項目小組一份) 課程名稱: 全日制研究生實訓(xùn) 項目名稱: 通信軟件實訓(xùn) 項目完成人: 姓名: 學(xué)號: 姓名: 學(xué)號: 姓名: 學(xué)號: 姓名: 學(xué)號: 姓名: 學(xué)號: 姓名: 學(xué)號: 指導(dǎo)教師: 日 期:2011年1月21日 l 基于java socket的聊天室實現(xiàn) 一 . 實訓(xùn)項目目的和要
2、求(說明通過本項目希望達到的目的和要求) 目的:熟練掌握socket編程原理,并用java socket實現(xiàn)聊天室 要求:實現(xiàn)p2p和聊天室功能 二 . 實訓(xùn)項目開發(fā)環(huán)境(說明本項目需要的環(huán)境) 開發(fā)工具:Eclipse SDK Version: 3.5.2 和 NetBeans 6.9.1 版本 系統(tǒng):win7 三 . 實訓(xùn)項目內(nèi)容(說明本項目的內(nèi)容,如:問題分析、設(shè)計方案、算法、設(shè)計圖等) 1.問題分析 網(wǎng)絡(luò)編程中兩個主要的問題一個是如何準確的定位網(wǎng)絡(luò)上一臺或多臺主機,另一個就是找到主機后如何可靠高效的進行數(shù)據(jù)傳輸。在TCP/IP協(xié)議中IP層主要負責(zé)網(wǎng)絡(luò)主
3、機的定位,數(shù)據(jù)傳輸?shù)穆酚?,由IP地址可以唯一地確定Internet上的一臺主機。而TCP層則提供面向應(yīng)用的可靠(tcp)的或非可靠(UDP)的數(shù)據(jù)傳輸機制,這是網(wǎng)絡(luò)編程的主要對象,一般不需要關(guān)心IP層是如何處理數(shù)據(jù)的。目前較為流行的網(wǎng)絡(luò)編程模型是客戶機/服務(wù)器(C/S)結(jié)構(gòu)。即通信雙方一方作為服務(wù)器等待客戶提出請求并予以響應(yīng)??蛻魟t在需要服務(wù)時向服務(wù)器提 出申請。服務(wù)器一般作為守護進程始終運行,監(jiān)聽網(wǎng)絡(luò)端口,一旦有客戶請求,就會啟動一個服務(wù)進程來響應(yīng)該客戶,同時自己繼續(xù)監(jiān)聽服務(wù)端口,使后來的客戶也 能及時得到服務(wù)。 兩類傳輸協(xié)議:TCP;UDP。TCP是Tranfer Control Pro
4、tocol的 簡稱,是一種面向連接的保證可靠傳輸?shù)膮f(xié)議。通過TCP協(xié)議傳輸,得到的是一個順序的無差錯的數(shù)據(jù)流。發(fā)送方和接收方的成對的兩個socket之間必須建 立連接,以便在TCP協(xié)議的基礎(chǔ)上進行通信,當(dāng)一個socket(通常都是server socket)等待建立連接時,另一個socket可以要求進行連接,一旦這兩個socket連接起來,它們就可以進行雙向數(shù)據(jù)傳輸,雙方都可以進行發(fā)送 或接收操作。 兩類傳輸協(xié)議:TCP;UDP。TCP是Tranfer Control Protocol的 簡稱,是一種面向連接的保證可靠傳輸?shù)膮f(xié)議。通過TCP協(xié)議傳輸,得到的是一個順序的無差錯的數(shù)據(jù)流。發(fā)送方和
5、接收方的成對的兩個socket之間必須建 立連接,以便在TCP協(xié)議的基礎(chǔ)上進行通信,當(dāng)一個socket(通常都是server socket)等待建立連接時,另一個socket可以要求進行連接,一旦這兩個socket連接起來,它們就可以進行雙向數(shù)據(jù)傳輸,雙方都可以進行發(fā)送 或接收操作。 UDP是User Datagram Protocol的簡稱,是一種無連接的協(xié)議,每個數(shù)據(jù)報都是一個獨立的信息,包括完整的源地址或目的地址,它在網(wǎng)絡(luò)上以任何可能的路徑傳往目的地,因此能否到達目的地,到達目的地的時間以及內(nèi)容的正確性都是不能被保證的。 比較: UDP:1,每個數(shù)據(jù)報中都給出了完整的地址信息,因此
6、無需要建立發(fā)送方和接收方的連接。 2,UDP傳輸數(shù)據(jù)時是有大小限制的,每個被傳輸?shù)臄?shù)據(jù)報必須限定在64KB之內(nèi)。 3,UDP是一個不可靠的協(xié)議,發(fā)送方所發(fā)送的數(shù)據(jù)報并不一定以相同的次序到達接收方 TCP:1,面向連接的協(xié)議,在socket之間進行數(shù)據(jù)傳輸之前必然要建立連接,所以在TCP中需要連接 時間。 2,TCP傳輸數(shù)據(jù)大小限制,一旦連接建立起來,雙方的socket就可以按統(tǒng)一的格式傳輸大的數(shù)據(jù)。 3,TCP是一個可靠的協(xié)議,它確保接收方完全正確地獲取發(fā)送方所發(fā)送的全部數(shù)據(jù)。 應(yīng)用: 1,TCP在網(wǎng)絡(luò)通信上有極強的生命力,例如遠程連接(Telnet)和文件傳輸(FTP)都
7、需要不定長度的數(shù)據(jù)被可靠地傳輸。但是可靠的傳輸是要付出代價的,對數(shù)據(jù)內(nèi)容正確性的檢驗必然占用計算機的處理時間和網(wǎng)絡(luò)的帶寬,因此TCP傳輸?shù)男什蝗鏤DP高。 2,UDP操作簡單,而且僅需要較少的監(jiān)護,因此通常用于局域網(wǎng)高可靠性的分散系統(tǒng)中client/server應(yīng)用程序。例如視頻會議系統(tǒng),并不要求音頻視頻數(shù)據(jù)絕對的正確,只要保證連貫性就可以了,這種情況下顯然使用UDP會更合理一些。 2.設(shè)計方案 基于Socket的java網(wǎng)絡(luò)編程。網(wǎng)絡(luò)上的兩個程序通過一個雙向的通訊連接實現(xiàn)數(shù)據(jù)的交換,這個雙向鏈路的一端稱為一個Socket。Socket通常用來實現(xiàn)客戶方和服務(wù)方的連接。Sock
8、et是TCP/IP協(xié)議的一個十分流行的編程界面,一個Socket由一個IP地址和一個端口號唯一確定。 但是,Socket所支持的協(xié)議種類也不光TCP/IP一種,因此兩者之間是沒有必然聯(lián)系的。在Java環(huán)境下,Socket編程主要是指基于TCP/IP協(xié)議的網(wǎng)絡(luò)編程。 Socket通訊的過程。Server端Listen(監(jiān)聽)某個端口是否有連接請求,Client端向Server 端發(fā)出Connect(連接)請求,Server端向Client端發(fā)回Accept(接受)消息。一個連接就建立起來了。Server端和Client 端都可以通過send,recv等方法與對方通信。 3.設(shè)計圖
9、 圖1:聊天室用例圖 用例說明文本: 1、 用戶登錄用例:客戶端運行,用戶可以用用戶名和端口號登陸到服務(wù)器。 2、 服務(wù)器注冊用例:服務(wù)器根據(jù)用戶輸入的用戶名和端口號和sip地址記錄用戶信息并把信息廣播給所有的在線用戶。 3、 客戶端發(fā)送消息用例:客戶端縣服務(wù)器帶有關(guān)鍵字(群聊/私聊/登錄/退出)的消息到服務(wù)器。 4、 服務(wù)器轉(zhuǎn)發(fā)消息用例:服務(wù)器解析收到的消息,提取目的端sip地址,并把消息轉(zhuǎn)發(fā)到目的端。 5、 客戶端退出用例:客戶端向服務(wù)器發(fā)送log on消息。服務(wù)器把該客戶信息從用戶列表中刪除,并更新在線列表。 圖2聊天室領(lǐng)域模型 圖3登錄順序圖 圖4聊天順序
10、圖 四 . 實訓(xùn)項目結(jié)果及分析 項目分析: 客戶端實現(xiàn): 以服務(wù)方主機地址和端口號為參數(shù)調(diào)用 Socket 類的構(gòu)造函數(shù)去創(chuàng)建一個 Socket 對象. 創(chuàng)建過程包含了向服務(wù)方請求建立通訊連接。使用 Socket 對象的 getInputStream() 和 getOutputStream() 方法創(chuàng)建用于網(wǎng)絡(luò)傳輸?shù)妮斎?輸出流。使用所得的網(wǎng)絡(luò)流對象讀寫數(shù)據(jù),網(wǎng)絡(luò)流對象將讀寫轉(zhuǎn)換成對 Socket 數(shù)據(jù)的接收和發(fā)送。工作完畢, 關(guān)閉網(wǎng)絡(luò)流對象 服務(wù)器實現(xiàn):以某端口號為參數(shù)調(diào)用 ServerSocket 類的構(gòu)造函數(shù)去創(chuàng)建一個 ServerSocket 對象,作為服務(wù)器的Sock
11、et。調(diào)用被創(chuàng)建的 ServerSocket 對象的 accept() 方法在指定端口監(jiān)聽客戶方的連接請求。收到客戶請求后,accept() 方法返回一個新建的 Socket 對象, 該對象代表和客戶方建立起來的通訊連接在服務(wù)方的通訊端點。使用 Socket 對象的 getInputStream() 和 getOutputStream() 方法創(chuàng)建用于網(wǎng)絡(luò)傳輸?shù)妮斎?輸出流。使用所得的網(wǎng)絡(luò)流對象讀寫數(shù)據(jù),網(wǎng)絡(luò)流對象將讀寫轉(zhuǎn)換成對 Socket 的數(shù)據(jù)的接收和發(fā)送。工作完畢, 關(guān)閉網(wǎng)絡(luò)流對象 項目實現(xiàn): 五 . 實訓(xùn)項目人員、進度安排及完成過程 小組一共六個人,在這一星期的實訓(xùn)中,
12、每個人都認真學(xué)習(xí)了java socket的內(nèi)容,并在此基礎(chǔ)上進一步完成聊天室功能實現(xiàn)。由于基礎(chǔ)不同,我小組分工及人員完成情況如下: 小組組長:在這個項目里主要負責(zé)協(xié)調(diào)各個組員之間的協(xié)作,進行項目分工,畫用例模型,總結(jié)整理組員的工作。 技術(shù)經(jīng)理:主要負責(zé)java socket的研究并回答小組其他成員的疑問,在聊天室的設(shè)計過程中,對一些功能實現(xiàn)提出了建設(shè)性的意見。 技術(shù)人員:主要負責(zé)幾個聊天室程序的分析與設(shè)計,設(shè)計文檔的撰寫,聊天室程序編寫的大部分工作。 測試人員:負責(zé)聊天室程序的測試工作,需求文檔的撰寫,負責(zé)文檔的整理,資料的搜集以及小組PPT的制作。 六 . 實訓(xùn)項目心得及體會 心
13、得體會: 理解了socket工作流程和實現(xiàn)方法,熟練掌握socket編程,實現(xiàn)了簡單的聊天室功能,對多線程有了更進一步的理解。通過老師對SIP協(xié)議的講解,使我對SIP協(xié)議有了一個初步的認識,使我明白了SIP(Session Initiation Protocol)是一個應(yīng)用層的信令控制協(xié)議。用于創(chuàng)建、修改和釋放一個或多個參與者的會話。這些會話可以好似Internet多媒體會議、IP電話或多媒體分發(fā)。會話的參與者可以通過組播(multicast)、網(wǎng)狀單播(unicast)或兩者的混合體進行通信。在學(xué)習(xí)網(wǎng)絡(luò)傳輸?shù)倪^程中,對兩種網(wǎng)絡(luò)傳輸協(xié)議有了更進一步的理解和深刻的體會。 七 . 附錄(附上實
14、訓(xùn)項目其他文檔,具體內(nèi)容根據(jù)項目要求確定) 1. 需求分析文檔錯誤!未找到索引項。 2. 設(shè)計文檔 3. 項目PPT 4. 源程序 l Linux操作系統(tǒng)下基于c語言的 socket聊天室實現(xiàn) 一 . 實訓(xùn)項目目的和要求(說明通過本項目希望達到的目的和要求) 基于Linux系統(tǒng)下的socket編程——P2P聊天系統(tǒng) 1.掌握Linux環(huán)境下socket編程的基本過程; 2.熟練掌握C語言編程方法; 3.了解GCC編譯器的編譯過程,并能在Linux系統(tǒng)下熟練使用。 二 . 實訓(xùn)項目開發(fā)環(huán)境(說明本項目需要的環(huán)境) 系統(tǒng)環(huán)境:Linux系統(tǒng) 編譯環(huán)境:GCC編譯器 三
15、. 實訓(xùn)項目內(nèi)容(說明本項目的內(nèi)容,如:問題分析、設(shè)計方案、算法、設(shè)計圖等) 問題分析:如何通過socket實現(xiàn)Linux環(huán)境下的點對點通信。 設(shè)計方案: 1. 目的:在Linux系統(tǒng)中實現(xiàn)點對點通信 2. 要求:使用socket、C語言編程 3. 步驟:(1)根據(jù)socket通信機制,編寫C源程序; (2)對源程序進行反復(fù)測試、修改; (3)實現(xiàn)點對點通信功能。 設(shè)計圖: 四 . 實訓(xùn)項目結(jié)果及分析 P2P網(wǎng)絡(luò)聊天系統(tǒng)的測試結(jié)果如下: 結(jié)果分析: 該測試是在一臺計算機上進行的,若要實現(xiàn)兩臺計算機間的點
16、對點通信,只需修改相應(yīng)的IP地址和端口號即可。 如圖所示,該系統(tǒng)實現(xiàn)了P2P通信,即通信雙方之間可以相互發(fā)送和接收消息,達到了預(yù)期目的,滿足了用戶需求。 五 . 實訓(xùn)項目人員、進度安排及完成過程 小組一共六個人,在這一星期的實訓(xùn)中,每個人都認真學(xué)習(xí)了linux操作系統(tǒng)環(huán)境下的C socket的內(nèi)容,及GCC的編譯環(huán)境,并在此基礎(chǔ)上進一步完成聊天室功能實現(xiàn)。具體的分工如下: 負責(zé)UDP通訊協(xié)議下聊天室的程序編寫。 負責(zé)TCP通訊寫一下的聊天室的程序編寫。 同學(xué),主要負責(zé)編寫需求分析,繪制領(lǐng)域模型等工作。 六 . 實訓(xùn)項目心得及體會 Linux環(huán)境對于我們都是一個陌生的環(huán)境,
17、通過這個項目的聯(lián)系,收獲的不僅是C Socket的通信編程。更大的收獲是對linux環(huán)境的學(xué)習(xí),了解了linux的文件構(gòu)成。 七 . 附錄(附上實訓(xùn)項目其他文檔,具體內(nèi)容根據(jù)項目要求確定 部分核心代碼 if(fork()==0) { char msg[256]; while(strcmp(msg,"@") != 0) { printf("enter input message\n"); scanf("%s",msg); sendto(sockffdd, msg, sizeof(msg), 0, (struct sockaddr *)&server1,
18、 sizeof(struct sockaddr)); printf("send successful\n"); usleep(100000); } close(sockffdd); } ///////////////////////////////////////////////// char buf[4096]; int resize, the_len; the_len = sizeof(struct sockaddr); while(true){ printf("ok"); resize = recvfrom(soc
19、kfd, buf, sizeof(buf), 0, (struct sockaddr *)&their, &the_len); printf("receive message is:%s", buf); printf("\t\t%s\n", inet_ntoa(their.sin_addr)); } l 基于JAIN-SIP聊天室的開發(fā) 一 . 實訓(xùn)項目目的和要求(說明通過本項目希望達到的目的和要求) l 熟悉JAIN-SIP協(xié)議規(guī)定的通信工程; l 完成一個有GUI界面的聊天室,最基本要實現(xiàn)公聊和私聊內(nèi)容; 二 . 實訓(xùn)項
20、目開發(fā)環(huán)境(說明本項目需要的環(huán)境) 開發(fā)工具:Eclipse 3.2版本 和 NetBeans 6.9.1 版本 系統(tǒng)要求:裝有Java 虛擬機的 Windows XP 及高版本 、Linux等其他系統(tǒng) 接口/協(xié)議約束:必須使用JAIN-SIP協(xié)議棧,支持IPv4接口 用戶界面的約束:用戶界面要求操作系統(tǒng)能支持Java 虛擬機,并有GUI桌面。 軟件質(zhì)量的約束:正確實現(xiàn)了網(wǎng)上聊天室的群聊、私聊、顯示在線列表,新建聊天室功能,選擇進入聊天室。服務(wù)器端通過JAIN-SIP封裝的類使用多線程分別處理監(jiān)聽,發(fā)送功能。但本軟件的主要實現(xiàn)通信的只有一個類,略有龐大,并且與多個界面有聯(lián)系,之間互相
21、有操作、調(diào)用關(guān)系,故程序的耦合度比較大。 三 . 實訓(xùn)項目內(nèi)容(說明本項目的內(nèi)容,如:問題分析、設(shè)計方案、算法、設(shè)計圖等) 3.1本系統(tǒng)介紹: 本聊天室系統(tǒng)適用于大多數(shù)用戶,對用戶操作能力的要求低。同時,該系統(tǒng)的界面簡潔,系統(tǒng)資源占用少,運行速度快,對于小型局域網(wǎng)內(nèi)的用戶可以起到很好的交流作用。所謂聊天室就是一個可以讓許多用戶同時相互通信的網(wǎng)上園地,個人用戶可以通過網(wǎng)上聊天室將自未自己獲取更多的知識和更多的閱歷。 本聊天室主要用登錄界面、聊天室界面、私聊界面、創(chuàng)建聊天室界面等構(gòu)成,這個設(shè)計簡潔明了,實用,使用簡單。 系統(tǒng)的總體框架圖如圖2所示: 聊天室系統(tǒng) 服務(wù)器 客戶端
22、 監(jiān) 聽 請 求 用 戶 退 出 顯示登錄情況 用 戶 登 錄 轉(zhuǎn) 發(fā) 請 求 私 聊 創(chuàng)建聊天室 群 聊 本系統(tǒng)的主要功能: (1) 聊天室系統(tǒng)界面由登錄界面,聊天窗口,私聊窗口組成,聊天窗口分為聊天室名稱,在線人數(shù),消息發(fā)送區(qū),消息顯示區(qū)。 (2) 用戶首先在登錄界面輸入昵稱,點擊登錄按鈕登錄系統(tǒng)??蛻舳穗S即與服務(wù)端進行三次握手,收到“ok”回應(yīng)后打開群聊窗口。 (3) 用戶可以在群聊窗口的點擊用戶在聊天室中的在線用戶列表中可以雙擊某個用戶,隨后彈出私聊窗口,進行對被點擊用戶之間的私聊。 (4) 用戶可以創(chuàng)建新的聊天室,其他用戶
23、可以進入到新建的聊天室里。 (5) 用戶在聊天窗口可以發(fā)送消息,服務(wù)器收到消息后廣播給所有登錄用戶。并且在消息顯示區(qū)顯示消息發(fā)送方的昵稱。 (6) 服務(wù)器端可以記載所有用戶的聊天的信息,包括私聊信息。并能通過打開一個在線用戶列表用戶??梢詫崟r看到用戶列表。 (7) 聊天室系統(tǒng)界面由登錄界面,聊天窗口,私聊窗口組成,聊天窗口分為聊天室名稱,在線人數(shù),在線用戶列表區(qū),聊天室創(chuàng)建/選擇,消息發(fā)送區(qū),消息顯示區(qū)。 (8) 用戶首先在登錄界面輸入昵稱,點擊登錄按鈕登錄系統(tǒng)??蛻舳穗S即與服務(wù)端進行三次握手,收到“ok”回應(yīng)后打開聊天窗口。 (9) 用戶可以在聊天窗口的點擊聊天室標簽,進
24、行創(chuàng)建新的聊天室,或選擇一個已有的 聊天室。用戶創(chuàng)建新聊天可以點擊創(chuàng)建后輸入聊天室名稱,然后點確定。 (10) 用戶在聊天窗口可以發(fā)送消息,服務(wù)器收到消息后廣播給所有登錄用戶。并且在消息顯示區(qū)顯示消息發(fā)送方的昵稱,發(fā)送時間,消息內(nèi)容。 用戶在聊天室中的在線用戶列表中可以雙擊某個用戶,隨后彈出私聊窗口,進行私聊。 3.1子系統(tǒng)結(jié)構(gòu)圖 (1)客戶端子系統(tǒng) (2)服務(wù)端子系統(tǒng) 3.3分解系統(tǒng)的目的: 聊天室的系統(tǒng)主要由客戶端和服務(wù)端組合而成,故可以分為兩個子系統(tǒng)。這兩個子系統(tǒng)可以獨立的處理客戶和服務(wù)器的各自的需求,如客戶可以填寫發(fā)送的消息,服務(wù)器可以查看用戶的消息和用戶的是
25、否在線。 3.4子系統(tǒng)之間的關(guān)系 兩者之間采用JAIN-SIP協(xié)議通過請求消息和響應(yīng)消息建立通信機制。 3.5模塊匯總 3.5.1 登錄系統(tǒng) 如表1所示: 用例名稱 登錄系統(tǒng) 范圍 聊天室系統(tǒng)應(yīng)用 級別 用戶目標 主要參與者 登錄用戶 前置條件 無 成功保證 成功登錄聊天室系統(tǒng) 主成功場景 1. 用戶進入登錄窗口界面 2. 用戶輸入昵稱,并點擊登陸,向服務(wù)器端發(fā)送登陸請求 3. 系統(tǒng)驗證用戶身份,返回客戶端一個響應(yīng) 4. 用戶成功登錄系統(tǒng),并進入相應(yīng)的聊天室系統(tǒng) 擴展 2a. 登錄超時 1. 系統(tǒng)給出登錄超時的提示 1
26、. 用戶重新輸入昵稱,并提交 表1 3.5.2 群聊 如表2所示: 用例名稱 用戶群聊 范圍 聊天室系統(tǒng)應(yīng)用 級別 用戶目標 主要參與者 成功登錄的用戶 前置條件 用戶登陸成功 成功保證 成功進行群聊 主成功場景 1. 用戶成功登錄后,選擇右側(cè)下方的消息輸入?yún)^(qū) 2. 在輸入?yún)^(qū)輸入消息,并回車,消息發(fā)送 3. 客戶端將用戶發(fā)送的信息打包傳送給服務(wù)器 4. 服務(wù)器對數(shù)據(jù)進行分析后,并將用戶的信息進行正確處理 5. 傳給處在聊天室的所有在線其他用戶 6. 將消息正常顯示在上方的消息顯示區(qū)
27、 擴展 3a. 消息發(fā)送失敗 1. 系統(tǒng)給出消息發(fā)送失敗的提示 2. 用戶重新輸入消息,進行發(fā)送 表2 3.5.3私聊 如表3所示: 用例名稱 用戶私聊 范圍 聊天室系統(tǒng)應(yīng)用 級別 用戶目標 主要參與者 成功登錄的用戶 前置條件 用戶登錄成功,私聊的對方在線 成功保證 成功進行私聊 主成功場景 1. 用戶雙擊在線列表中的某個用戶 2. 系統(tǒng)彈出私聊窗口 3. 在窗口下方輸入消息,點擊發(fā)送按鈕 4. 系統(tǒng)轉(zhuǎn)發(fā)消息,發(fā)送到指定的私聊用戶,消息顯示在私聊窗口的消息顯示區(qū),進行雙方私聊
28、 5. 私聊結(jié)束,點擊關(guān)閉按鈕 擴展 3a. 消息發(fā)送失敗 1. 系統(tǒng)給出消息發(fā)送失敗的提示 2. 用戶重新輸入消息,進行發(fā)送 特殊需求 不能與不在線的用戶進行私聊 表3 3.5.4 創(chuàng)建聊天室 如表4所示: 用例名稱 創(chuàng)建聊天室 范圍 聊天室系統(tǒng)應(yīng)用 級別 用戶目標 主要參與者 成功登錄的用戶 前置條件 用戶登錄成功 成功保證 成功創(chuàng)建聊天室 主成功場景 1. 用戶成功登錄后,點擊創(chuàng)建聊天室 2. 系統(tǒng)彈出新窗口 3. 用戶輸入聊天室名稱點擊確認 4. 創(chuàng)建新聊天室,進行聊
29、天 擴展 3a. 用戶如果輸入已經(jīng)存在的聊天室名稱 1. 系統(tǒng)給出創(chuàng)建失敗的提示 2. 用戶重新輸入,進行確認 表4 3.5.5 退出系統(tǒng) 如表5所示: 用例名稱 用戶退出系統(tǒng) 范圍 聊天室系統(tǒng)應(yīng)用 級別 用戶目標 主要參與者 成功登錄的用戶 前置條件 用戶成功登錄聊天室 成功保證 用戶在正常情況下退出了聊天室 主成功場景 1. 用戶向服務(wù)器發(fā)送用戶退出消息 2. 服務(wù)器進行用戶退出的數(shù)據(jù)處理 3. 服務(wù)器向聊天室其他用戶發(fā)送退出消息 4. 刷新其他在線用戶的用戶列表信息,并顯示
30、當(dāng)前在線人數(shù) 表5 3.6模塊間關(guān)系 領(lǐng)域模型如下圖所示: 群聊順序圖 私聊順序圖 四 . 實訓(xùn)項目結(jié)果及分析 登陸界面如下: 聊天界面如下: 創(chuàng)建群界面如下: 五 . 實訓(xùn)項目人員、進度安排及完成過程 小組成員 分工及安排 組長,組織大家討論聊天室UML設(shè)計模型,編程設(shè)計思路,解決程序出現(xiàn)的問題。 編程人員,主要負責(zé)通信模式設(shè)計 編程人員,主要負責(zé)分析JAIN-SIP API。 調(diào)試程序,分析并解決問題。 調(diào)試程序,分
31、析并解決問題。 編程人員,主要負責(zé)消息處理,界面設(shè)計 六 . 實訓(xùn)項目心得及體會 通過本次的實訓(xùn)項目的練習(xí),讓我們充分熟悉了sip協(xié)議以及sip在java編程中的實現(xiàn)方法——jain-sip作為API來調(diào)用。熟練了我們在java的GUI方面的應(yīng)用、強化了我們對于面向?qū)ο蟾拍畹睦斫狻⒔涌诘淖饔?;讓我們對UML和OOAD的認識又更近了一層,如何用它們知道需求分析、進一步細分軟件的功能實現(xiàn)到具體的人員分工。 七 . 附錄(附上實訓(xùn)項目其他文檔,具體內(nèi)容根據(jù)項目要求確定 7.1穩(wěn)定性和可擴展性 提示:在“軟件”生命周期內(nèi),判斷哪些需求是不變的,預(yù)測哪些需求可能發(fā)生的變化。 在總體
32、設(shè)計的時候,既要使總體結(jié)構(gòu)穩(wěn)定,又要適應(yīng)需求變化。 當(dāng)出現(xiàn)代碼異常時,部分會出現(xiàn)正確的提示,但客戶端的問題不會影響到服務(wù)器端正常的運行。用戶之間信息傳輸不會因為數(shù)據(jù)封裝問題出現(xiàn)丟失或亂碼。因用戶的誤操作產(chǎn)生的非法輸入信息會得到驗證及時的處理或信息提示。 軟件應(yīng)正常完成所有功能需求。服務(wù)器能長時間運行無故障,但當(dāng)客戶訪問量大時或客戶發(fā)送信息量大時,服務(wù)器可能會出現(xiàn)端口阻塞現(xiàn)象,消息得不到響應(yīng),甚至服務(wù)器癱瘓。 由于采用JAVA設(shè)計,故可移植性較好。該軟件項目將界面程序和后臺處理程序分在不同的包中,服務(wù)器和客戶端也是在不同的包中,這樣將來還一些可以擴展系統(tǒng)的功能。 7.2 性能分析
33、提示: (1)本系統(tǒng)應(yīng)當(dāng)具備哪些性能指標才能滿足用戶的需求? (2)如何實現(xiàn)性能指標? 1. 安全性 用戶的合法性不能被偽裝。防止網(wǎng)絡(luò)對服務(wù)器的攻擊。用戶的信息應(yīng)該盡可能不能被黑客截取。該軟件項目目前的安全性還有待進一步提升,考慮沒有使用數(shù)據(jù)庫,且傳輸安全模式還有待進一步測試。 2. 擴展性 系統(tǒng)建成后,應(yīng)在現(xiàn)行系統(tǒng)上不需要做大的改動或不影響整個系統(tǒng)結(jié)構(gòu),就可以增加功能模塊,這就必須在系統(tǒng)設(shè)計時留有接口,使其具有可擴展性和維護性。該軟件使用了接口,為了將來的擴展留有空間。 3. 易用性 系統(tǒng)操作的界面必須簡潔、操作方便易用、設(shè)計合理。由于這次是實驗軟件,功能并不
34、繁多,簡單易用,但界面不夠美化。可以通過設(shè)計更好的Swing界面解決。 l 基于O-SIP聊天室的開發(fā) 一 . 實訓(xùn)項目目的和要求(說明通過本項目希望達到的目的和要求) l 熟悉JAIN-SIP協(xié)議規(guī)定的通信工程; l 完成一個基于控制臺的聊天室,最基本要實現(xiàn)公聊和私聊內(nèi)容; 二 . 實訓(xùn)項目開發(fā)環(huán)境(說明本項目需要的環(huán)境) 軟件環(huán)境 各種版本的widows操作系統(tǒng)(X86) 硬件環(huán)境 CPU:英特爾80386以上配置 內(nèi)存:32MB 硬盤空間:128M 接口/協(xié)議的約束:支持標準的IP,TCP傳輸協(xié)議 軟件質(zhì)量的約束,如正確性、健壯
35、性、可靠性、效率(性能)、易用性、 清晰性、安全性、可擴展性、兼容性、可移植性等等。 軟件需求能在各種Windows操作系統(tǒng)上使用;能連續(xù)工作7*24小時, 界面清晰,易于使用;最大支持2000個用戶同時在線聊天;支持可以進一步擴大在線人數(shù),切在客戶端可以進一步添加功能。 三 . 實訓(xùn)項目內(nèi)容(說明本項目的內(nèi)容,如:問題分析、設(shè)計方案、算法、設(shè)計圖等) 3.1軟件系統(tǒng)結(jié)構(gòu)圖 3.2.1客戶端系統(tǒng)登錄模塊 3.2.2 客戶端聊天功能模塊 3.2.3 客戶端系統(tǒng)功能模塊 3.2.4 服務(wù)器端轉(zhuǎn)發(fā)功能模塊 3.2.5 服務(wù)器日志備份模塊
36、 3.3功能模塊設(shè)計概述 3.3.1 模塊匯總 子系統(tǒng)A O-SIP聊天室客戶端 模塊名稱 功能概述 系統(tǒng)登錄 登錄客戶端,需要輸入用戶名和客戶端所在的IP地址,自動分配一個(8000-999號)端口; 聊天功能 直接輸入想說的話可以實現(xiàn)聊天室公共發(fā)言; “$$$+想說的話”可以與某一在線用戶私密聊天(前提要先設(shè)置密聊對象); 接受公共聊天和私密聊天的內(nèi)容; 系統(tǒng)功能 發(fā)送“***list”,服務(wù)器可以返回當(dāng)前在線用戶URL; 發(fā)送“***help”客戶端會提供所有支持的系統(tǒng)功能提示; 發(fā)送“***quit”客戶端會退出,并發(fā)送離開消息給服務(wù)器,服務(wù)器給所有用戶
37、廣播此離開消息; O-SIP聊天室服務(wù)器端 模塊名稱 功能概述 轉(zhuǎn)發(fā)功能 接收用戶的信息并按照不同的類型,重新包裝發(fā)送(其中用戶登錄消息和離開消息為廣播,私聊消息為轉(zhuǎn)發(fā),查詢在線用戶消息為回發(fā)); 日志備份 接收每個用戶的每一條信息(包括公聊,私聊,以及系統(tǒng)信息),加入服務(wù)器的系統(tǒng)時間,保存在“D:\\log.txt”文件里; 3.4 模塊之間的關(guān)系 四 . 實訓(xùn)項目結(jié)果及分析 目前我們O-SIP的聊天室系統(tǒng)的開發(fā)主要是基于控制臺,由于開發(fā)時間比較倉促,所以用戶界面設(shè)計部分還未完成,在后續(xù)的開發(fā)和維護中我們將此部分予以完善,給用戶展示一個美觀,易用,可靠的用戶
38、界面。 五 . 實訓(xùn)項目人員、進度安排及完成過程 小組成員 分工及安排 組織大家討論聊天室UML設(shè)計模型,編程設(shè)計思路,解決程序出現(xiàn)的問題。 編程人員,主要負責(zé)通信模式設(shè)計 編程人員,主要負責(zé)分析O-SIP API。 調(diào)試程序,分析并解決問題。 調(diào)試程序,分析并解決問題。 編程人員,主要負責(zé)消息處理,界面設(shè)計 六 . 實訓(xùn)項目心得及體會 在這次O-SIP聊天室系統(tǒng)的開發(fā)過程中,雖然我們遇到過許多困難,經(jīng)歷了許多波折,但最終設(shè)計出的軟件還是符合我們最初的設(shè)想,由于開發(fā)的時間比較倉促,軟件還有許多方面需要完善,但是我們?nèi)匀皇斋@很大,主要體
39、現(xiàn)在以下兩個方面: l 讓我們深刻理解了團隊的力量在軟件開發(fā)中的作用。在 開發(fā)過程中我們遇到過許多莫名其妙的問題,通過大家在一起交流,最后都一一解決了,如果讓個人去解決,由于每個人的思維定勢和編程經(jīng)驗的限制,可能最后解決這個問題會花費大量的時間,從而嚴重影響我們開發(fā)的效率。但是通過大家在一起討論,研究,這些問題很快就解決了,因此團隊協(xié)作的力量對開發(fā)效率的影響是不容忽視的,現(xiàn)在的軟件開發(fā)行業(yè)再不是個人英雄主義,而是更加注重團隊的力量。 l 采用科學(xué)的軟件設(shè)計的方法。在組長同學(xué)的組織下,我們首先對項目的需求分析進行討論,每個組員都可以表達自己的觀點,然后大家一起討論,確定最終的設(shè)計方案,因此我
40、們組花了大量的時間進行需求分析,運用軟件工程的思想和面向?qū)ο蠓治龊驮O(shè)計方面的知識,對整個項目進行設(shè)計,最終確定出我們認為最合理,最優(yōu)化的方案,然后分配給每個組員相應(yīng)的任務(wù),在限定的時間內(nèi)完成,然后再大家一起交流自己的任務(wù)完成情況,以及遇到的問題,充分發(fā)揮集體的智慧大家一起解決,這樣提高了我們開發(fā)項目的效率,同時在我們實際項目中采用迭代式開發(fā)方式,對于這種開發(fā)方式的好處,經(jīng)過這次實際項目的鍛煉,讓我們才真正領(lǐng)悟到它的長處。在設(shè)計時運用UML方法,讓我們的設(shè)計方案更加規(guī)范,整個項目分析和設(shè)計流程更加合理,同時也取得比較好的結(jié)果。 七 . 附錄(附上實訓(xùn)項目其他文檔,具體內(nèi)容根據(jù)項目要求確定 由
41、于開發(fā)時間比較倉促,以及我們開發(fā)團隊技術(shù)能力和經(jīng)驗方面的限制,所以在以下幾個方面還有不足之處,在后續(xù)的開發(fā)過程中我們將予以改進和完善。 l 容錯性需求 當(dāng)出現(xiàn)代碼異常時,出現(xiàn)正確的提示,不會影響整個系統(tǒng)的運行。用戶之 間信息傳輸不會因為數(shù)據(jù)封裝問題出現(xiàn)丟失或亂碼。因用戶的誤操作產(chǎn)生的異常應(yīng)作為及時的處理或信息提示。 l 軟件設(shè)計可靠性 要確定合適的模塊粒度,各模塊之間要求松耦合,高內(nèi)聚;從而使整個系統(tǒng)的可靠性和穩(wěn)定性得到提高,并且便于系統(tǒng)維護和新模塊的添加。 l 安全性 安全性是防止網(wǎng)絡(luò)方面的攻擊。在后續(xù)的開發(fā)中我們將采用數(shù)據(jù)加密存儲 技術(shù),因為數(shù)據(jù)大多數(shù)是明文存放,如果黑客一旦有機會侵入系統(tǒng),如果 是明文存放的,該數(shù)據(jù)很容易暴露出來。所以對一些核心數(shù)據(jù),需要在數(shù) 據(jù)存儲時,就進行了數(shù)據(jù)加密。 l 易用性 由于我們的系統(tǒng)是基于控制臺的,所以在用戶在客戶端操作起來不是很方便,因此在后續(xù)的開發(fā)中,我們將開發(fā)出基于MFC的圖形用戶界面,充分發(fā)揮“以用戶為中心的進行設(shè)計”設(shè)計理念,從設(shè)計過程的開端便把用戶所關(guān)注的東西包含于其中,并規(guī)定用戶應(yīng)該是任何設(shè)計決定中最重要的因素
- 溫馨提示:
1: 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
2: 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
3.本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
5. 裝配圖網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 統(tǒng)編版選擇性必修下冊《孔雀東南飛》課件
- 案例分析PPT模版
- 民生附加醫(yī)樂保醫(yī)療保險產(chǎn)品主要特色基本形態(tài)投保案例增值服務(wù)介紹課件
- 乳腺癌新輔助化療共識與進展課件
- 2021 2022學(xué)年新教材高中物理第2章勻變速直線運動的研究4自由落體運動ppt課件新人教版必修第一冊
- 《公司金融》資本預(yù)算
- 工程安全與結(jié)構(gòu)健康監(jiān)測
- 防水閘門制造取費、工期、質(zhì)量保證工作匯報
- 水處理技術(shù)基礎(chǔ)
- 腘窩囊腫綜述中英文對照-課件
- 平面構(gòu)成基本形
- 奧運福娃簡介
- 課題2元素 (3)
- “相約中秋”流程
- 勞動爭議處理課件