歡迎來到裝配圖網(wǎng)! | 幫助中心 裝配圖網(wǎng)zhuangpeitu.com!
裝配圖網(wǎng)
ImageVerifierCode 換一換
首頁 裝配圖網(wǎng) > 資源分類 > DOC文檔下載  

基于java socket的聊天室項(xiàng)目文檔

  • 資源ID:27781857       資源大?。?span id="szue1jf" class="font-tahoma">823.01KB        全文頁數(shù):36頁
  • 資源格式: DOC        下載積分:15積分
快捷下載 游客一鍵下載
會(huì)員登錄下載
微信登錄下載
三方登錄下載: 微信開放平臺(tái)登錄 支付寶登錄   QQ登錄   微博登錄  
二維碼
微信掃一掃登錄
下載資源需要15積分
郵箱/手機(jī):
溫馨提示:
用戶名和密碼都是您填寫的郵箱或者手機(jī)號(hào),方便查詢和重復(fù)下載(系統(tǒng)自動(dòng)生成)
支付方式: 支付寶    微信支付   
驗(yàn)證碼:   換一換

 
賬號(hào):
密碼:
驗(yàn)證碼:   換一換
  忘記密碼?
    
友情提示
2、PDF文件下載后,可能會(huì)被瀏覽器默認(rèn)打開,此種情況可以點(diǎn)擊瀏覽器菜單,保存網(wǎng)頁到桌面,就可以正常下載了。
3、本站不支持迅雷下載,請(qǐng)使用電腦自帶的IE瀏覽器,或者360瀏覽器、谷歌瀏覽器下載即可。
4、本站資源下載后的文檔和圖紙-無水印,預(yù)覽文檔經(jīng)過壓縮,下載后原文更清晰。
5、試題試卷類文檔,如果標(biāo)題沒有明確說明有答案則都視為沒有答案,請(qǐng)知曉。

基于java socket的聊天室項(xiàng)目文檔

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

注意事項(xiàng)

本文(基于java socket的聊天室項(xiàng)目文檔)為本站會(huì)員(仙***)主動(dòng)上傳,裝配圖網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)上載內(nèi)容本身不做任何修改或編輯。 若此文所含內(nèi)容侵犯了您的版權(quán)或隱私,請(qǐng)立即通知裝配圖網(wǎng)(點(diǎn)擊聯(lián)系客服),我們立即給予刪除!

溫馨提示:如果因?yàn)榫W(wǎng)速或其他原因下載失敗請(qǐng)重新下載,重復(fù)下載不扣分。




關(guān)于我們 - 網(wǎng)站聲明 - 網(wǎng)站地圖 - 資源地圖 - 友情鏈接 - 網(wǎng)站客服 - 聯(lián)系我們

copyright@ 2023-2025  zhuangpeitu.com 裝配圖網(wǎng)版權(quán)所有   聯(lián)系電話:18123376007

備案號(hào):ICP2024067431號(hào)-1 川公網(wǎng)安備51140202000466號(hào)


本站為文檔C2C交易模式,即用戶上傳的文檔直接被用戶下載,本站只是中間服務(wù)平臺(tái),本站所有文檔下載所得的收益歸上傳人(含作者)所有。裝配圖網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)上載內(nèi)容本身不做任何修改或編輯。若文檔所含內(nèi)容侵犯了您的版權(quán)或隱私,請(qǐng)立即通知裝配圖網(wǎng),我們立即給予刪除!