freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

基于java聊天室的設(shè)計(jì)與實(shí)現(xiàn)-資料下載頁

2025-08-24 13:01本頁面

【導(dǎo)讀】們生活中不可或缺的一部分。即時(shí)通信即指信息的發(fā)布者與信息的接收者幾乎同時(shí)。達(dá)到傳送要求,延遲很小的系統(tǒng)工具。如常用的QQ工具,飛信,MSN等通訊系。該系統(tǒng)開發(fā)主要包括一個(gè)網(wǎng)絡(luò)聊天服務(wù)器程序和一個(gè)網(wǎng)絡(luò)聊天客戶程序兩個(gè)方面。后者通過與服務(wù)器建立連接,來進(jìn)行客戶端與客戶端的信息交流。了局域網(wǎng)通信機(jī)制的原理,通過直接繼承Thread類來建立多線程。式)、網(wǎng)絡(luò)編程的設(shè)計(jì)方法等。在網(wǎng)絡(luò)編程中對信息的讀取、發(fā)送,是利用流來實(shí)現(xiàn)信。經(jīng)過分析這些情況,該局域網(wǎng)聊天工具采用Eclipse為基本開發(fā)環(huán)境和Java語言。和改進(jìn),同時(shí),采用多線程、多任務(wù)的設(shè)計(jì)思想,開發(fā)出性能穩(wěn)定,功能全面的服務(wù)器。通過本次畢業(yè)設(shè)計(jì)可以學(xué)到如何應(yīng)用和實(shí)現(xiàn)面向?qū)ο蟮母鞣N方。面和靈活的系統(tǒng)可維護(hù)性;可以實(shí)現(xiàn)簡單的功能如注冊、登陸、查找好友、聊天等功能。并且服務(wù)端實(shí)現(xiàn)配置文件設(shè)置、用戶管理、日志顯示等功能。

  

【正文】 好友列表中刪除該好友。 服務(wù)器連接是在 ConnectServer()函數(shù)中實(shí)現(xiàn)的,此函數(shù)用到了具有連續(xù)性、有序性特點(diǎn)的流,根據(jù)服務(wù)器的 IP 地址和端口來完成客戶端與服務(wù)器端的連接。 IP 地址是網(wǎng)絡(luò)中的唯一的地址標(biāo)識(shí)。 消息通信的實(shí)現(xiàn) 本系統(tǒng)通信方式是采用數(shù)據(jù)報(bào)服務(wù)實(shí)現(xiàn)的,創(chuàng)建數(shù)據(jù)報(bào)的連接實(shí)現(xiàn)步驟是:首先創(chuàng)建一個(gè)發(fā)送連接,這是一個(gè)數(shù)據(jù)報(bào)式的連接;然后再創(chuàng)建 一個(gè)接受連接,當(dāng)然也是一個(gè)數(shù)據(jù)報(bào)式的連接;最后輸入連接的端口信息。 (1)發(fā)送消息 用戶通過在好友列表中找到好友的 IP 地址,利用 UDP 協(xié)議與其他用戶進(jìn)行信息交流。消息發(fā)送之前首先創(chuàng)建一個(gè)數(shù)據(jù)報(bào)文包,用來實(shí)現(xiàn)無連接的包傳送服務(wù),每個(gè)數(shù)據(jù)報(bào)文包是用 DategramPacket 類來創(chuàng)建的, DategramPacket 對象封裝數(shù)據(jù)報(bào)包數(shù)據(jù)、包長度、目標(biāo)地址和目標(biāo)端口。若客戶端發(fā)送數(shù)據(jù)報(bào)文包則構(gòu)造函數(shù)創(chuàng)建 DategramPacket對象,將需要發(fā)送的數(shù)據(jù)和包文目的地址信息放入對象之中。 在 發(fā)送的過程中利用構(gòu)造函數(shù) DategramPacket 構(gòu)造一個(gè)包長度為 length 的包,它是一個(gè)將數(shù)據(jù)傳送到指定主機(jī)指定端口號(hào)上的數(shù)據(jù)文包,參數(shù) length 必須小于等于。消息發(fā)送是通過調(diào)用 DategramSocket 對象的 send 方法實(shí)現(xiàn)的,它需要以 DategramPacket 對象為參數(shù),將剛才封裝進(jìn) DategramPacket 對象中的數(shù)據(jù)組成數(shù)據(jù)報(bào)發(fā)送出去的。 鼠標(biāo)事件相應(yīng)函數(shù)是屬于發(fā)送消息菜單,當(dāng)點(diǎn)擊發(fā)送消息菜單時(shí),執(zhí)行這個(gè)函數(shù),并創(chuàng)建一個(gè)發(fā)送消息的窗口。 通過 void sendmessage_mousePressed(MouseEvent e)來創(chuàng)建鼠標(biāo)監(jiān)聽事件。 5 系統(tǒng)的實(shí)現(xiàn) 16 (2)監(jiān)聽好友消息 首先用 run()啟用一線程,再將此線程無限監(jiān)聽好友的消息,無限監(jiān)聽在監(jiān)聽好友消息中定義一個(gè)空數(shù)組,該數(shù)組用于接受消息中的數(shù)據(jù);然后創(chuàng)建數(shù)據(jù)報(bào),使用 receive (receivePacket)函數(shù)等待并接受數(shù)據(jù)報(bào),用 byte[]date= receive ()函數(shù)來取得數(shù)據(jù)報(bào)中的數(shù)據(jù)。 (3)接受消息 Dategrampacket 類提供了四個(gè)函數(shù)來獲取消息: Public byte[] getDate():返回一個(gè)字節(jié)數(shù),包含收到或要發(fā)送的數(shù)據(jù)報(bào)中的數(shù)據(jù)。 Public int getLength():返回發(fā)送或接受消息的長度。 Publilc IAddress getAddress():返回一個(gè)發(fā)送或接受此數(shù)據(jù)報(bào)報(bào)文的機(jī)器的 IP 地址。 Public int getPort():返回發(fā)送或接受數(shù)據(jù)報(bào)的遠(yuǎn)程主機(jī)的端口號(hào)。 為了接受從服務(wù)器返回的結(jié)果數(shù)據(jù)報(bào)文包而創(chuàng)建一個(gè)新的 DategramPacket 對象。該對象利用了 DategramPacket 類的一種構(gòu)造 方式 DategramPacket 這種構(gòu)造方式只需要指明存放接受的數(shù)據(jù)報(bào)的緩沖區(qū)的長度。系統(tǒng)可調(diào)用 DategramPacket 對象的 receive()函數(shù)來接受數(shù)據(jù)報(bào),并將 DategramPacket 對象作為該函數(shù)的參數(shù)。 receive()方法會(huì)一直阻塞直至受到一個(gè)數(shù)據(jù)報(bào)報(bào)文,而該函數(shù)存放在 DategramPacket 對象的緩沖區(qū)中。數(shù)據(jù)報(bào)文包還包含了發(fā)送者的 IP 地址和端口號(hào)等信息 。基于 JAVA 聊天室的設(shè)計(jì)與開發(fā) 17 6 詳細(xì)設(shè)計(jì) 本系統(tǒng)采用 C/S 設(shè)計(jì)模式,系統(tǒng)分為客戶端和服務(wù)器端,客戶端包括注冊模塊、登入模塊、公聊模塊、私聊模塊、功能設(shè)置模塊 、和客戶端功能實(shí)現(xiàn)模塊等。服務(wù)器端包括服務(wù)器界面,服務(wù)器功能實(shí)現(xiàn)模塊等。 客戶端注冊 功能描述 用戶必須填寫注冊給定的全部選項(xiàng),并且按照正確的格式輸入,如年齡一項(xiàng)只能輸入數(shù)字,的格式等等,并可以在申請注冊前驗(yàn)證輸入的用戶名是否已被使用。 綜合設(shè)計(jì) 通過注冊模塊實(shí)現(xiàn)用戶的在線注冊,所填寫的注冊項(xiàng)目有:用戶名、密碼、密碼確認(rèn)、性別、年齡、 Email, 注冊活動(dòng)流程圖 如圖 61。 圖 61注冊活動(dòng) 流程圖 注冊部分是用來處理新建用戶的,每一次申請新的號(hào)碼都要用 到它。但代碼部分是做出個(gè)注冊界面,然后向服務(wù)器端發(fā)送請求,連接數(shù)據(jù)庫就可以。需要說一下的就是密用戶 注冊界面 正確填寫注冊項(xiàng) 提交 注冊成功 6 詳細(xì)設(shè)計(jì) 18 碼顯示的實(shí)現(xiàn),要做成只 *,來實(shí)現(xiàn)密碼保密。只要在定義文本格式的時(shí)候使用密碼型設(shè)置就可以,用 JpasswordField 來定義 Register 類結(jié)構(gòu) 。 功能說明: Register 類是處理用戶注冊的,為用戶提供一個(gè)注冊界面以便用戶填好資料后就進(jìn)行入庫操作。 Register()是類的構(gòu)造函數(shù),用于初始化 Register 類的。 JbInit()是創(chuàng)建注冊窗口函數(shù),其中包括該窗口的所有內(nèi)容,采用空布局方式,通過付給控件坐 標(biāo)來把所有控件添加到主窗口上。 MouseClick()是處理點(diǎn)擊按鈕類,用于激活按鈕。 HeadPicCombobox()是頭像列表類,通過 HeadPicCombobox()來文件中找到數(shù)字所對應(yīng)的頭像。 程序界面如圖 62 所示。 圖 62 注冊界面 本部分要進(jìn)行入庫操作,所以要對所輸入的字符是否合理進(jìn) 行判斷, 例如輸入合理,服務(wù)器就會(huì)提示注冊成功,就可以直接登錄或返回登陸界面。如果 密碼兩次輸入不一致,服務(wù)器就會(huì) 出報(bào)錯(cuò)提示。 如圖 63 和 64。 基于 JAVA 聊天室的設(shè)計(jì)與開發(fā) 19 圖 63 注冊成 功 圖 64 注冊失敗 登入 功能描述 在設(shè)置好 IP 和端口號(hào)的條件下,用戶在登入界面輸入已注冊好的用戶名和密碼登入,通過驗(yàn)證后登入聊天室主界面,輸入錯(cuò)誤返回提示。 登入流程如圖 65。 6 詳細(xì)設(shè)計(jì) 20 圖 65 登入流程圖 綜合設(shè)計(jì) 實(shí)現(xiàn)該功能的主要類和方法 (1)Land 類 //實(shí)現(xiàn)登入的主窗體 主要成員變量 String hostid。 //服務(wù)器 IP 地址 int server_port。 //服務(wù)端口 Socket client_socket。 // final File propertyFile。 //屬性文件 主要方法 public Land() {} //用于初始化登入界面的元素 public void actionPerformed(ActionEvent e){} //連接服務(wù)器 的方法體 public void run() { } //顯示登入主窗體主方法 用戶 進(jìn)入登入界面 輸入用戶名,密碼 提交 進(jìn)入系統(tǒng) 基于 JAVA 聊天室的設(shè)計(jì)與開發(fā) 21 圖 66 登入的主窗體 6 詳細(xì)設(shè)計(jì) 22 圖 67 登入失敗 (2)LoginData 類 //發(fā)送登入數(shù)據(jù)類型 主要變量: private String userName。 private String passWord。 主要方法 : get,set 方法獲得 userName 和 passWord 兩個(gè)變量的值 。 聊天 用戶本地文件服務(wù)器目的用戶本地文件6 : 文件輸入流讀取5 : 文件輸出流保存1 : 發(fā)送聊天信息2 : 發(fā)送消息3 : 文件輸出流保存4 : 文件輸入流讀取 圖 68聊天時(shí)序圖 基于 JAVA 聊天室的設(shè)計(jì)與開發(fā) 23 功能描述 用戶在 聊天 界面的信息輸入框 中輸入要發(fā)送的信息和表情等, 用戶可以通過功能設(shè)置按鈕設(shè)置自己定義的字體屬性 ,如: 字體類型 、 字體大小 、 字體顏色 、 字體 顯示方式、表情等, 并可以應(yīng)用到信息輸入框中, 點(diǎn)發(fā)送按鈕實(shí)現(xiàn)私聊信息的發(fā)送。并可以顯示其他用戶發(fā)送過來的私聊信息 , 并且按照發(fā)送來的信息中包含好的顯示方式正確顯示出信息。 綜合設(shè)計(jì) 實(shí)現(xiàn)該功能所用的主要類和方法 PersonalChat 類 //聊天 界面類 其中包括顯示聊天內(nèi)容的文本面板,顯示發(fā)送消息的文本面板,發(fā)送消息按鈕,關(guān)閉窗體按鈕,顯示聊天內(nèi)容的按鈕等。 圖 514 PersonalChat 類圖 圖 69聊天界面 6 詳細(xì)設(shè)計(jì) 24 發(fā)送系統(tǒng)消息 系統(tǒng)管理員服務(wù)器在線用戶1 : 發(fā)送系統(tǒng)信息2 : 發(fā)送消息 圖 610系統(tǒng)消息時(shí)序圖 功能描述 服務(wù)器端收到用戶上線或下線時(shí)發(fā)送給其他在線用戶消息提示,并可以根據(jù)需要,主動(dòng)發(fā)送消息給客戶,實(shí)現(xiàn)服務(wù)器端的管理。 綜合設(shè)計(jì) 實(shí)現(xiàn)功能的主要類和方法 (1)ServerInterFace 類 //服務(wù)器的用戶界面 Private void initCompenent() {……} // 組件初始化 class StartServer implements ActionListener{……} //關(guān)閉和監(jiān)聽 (2)TalentServer 類 //服務(wù)器啟動(dòng)模塊 Public void run() {……} // 發(fā)送系統(tǒng)消息 class SysinfoBuAction implements ActionListener {……} //啟動(dòng)服務(wù)器 功能邏輯實(shí)現(xiàn) 邏輯功能描述 本系統(tǒng)采用數(shù)據(jù)對象流的形式發(fā)送和接受信息。 客戶端連接服務(wù)器成功后就啟動(dòng)一個(gè)客戶端線程和服務(wù)器通信??蛻舳税l(fā)送的信息分為:注冊消息、注冊時(shí)用戶名驗(yàn)證消息 、登入消息、 聊天消息 、下線消息等。 服務(wù)器端啟動(dòng)一個(gè)線程不斷的監(jiān)聽客戶的請求,當(dāng)接受到客戶請求時(shí)就啟動(dòng)一個(gè)和基于 JAVA 聊天室的設(shè)計(jì)與開發(fā) 25 該客戶端通信的線程。服務(wù)器端發(fā)送的信息分為:注冊成功消息 注冊失敗消息、注冊時(shí)驗(yàn)證用戶名成功消息、注冊時(shí)驗(yàn)證用戶名失敗消息、登入成功消息、登入失敗消息、轉(zhuǎn)發(fā)公聊消息、轉(zhuǎn)發(fā)的私了消息、刷新列表名消息等。 綜合設(shè)計(jì) (1)TransferMap 類 //用于客戶端與服務(wù)器之間的消息傳遞 (2)LoginData 類 //用于登入時(shí)發(fā)送的信息對象類型 (3)RegisterData 類 //用于注冊時(shí)發(fā) 送的信息對象類型 (4)ChatInformation 類 //用于用戶公聊或私聊時(shí)發(fā)送的信息對象類型 (5)ClientThread 類 //客戶端連接服務(wù)器成功后啟動(dòng)的線程 (6)ServerAffairThread 類 //服務(wù)器端為用戶啟動(dòng)的服務(wù)器線程 (7)LineDialog 類 //實(shí)現(xiàn)提示用戶聊 天 消息 (8)Displaychatifn 類 //顯示信息內(nèi)容 7 系統(tǒng)測試 26 7 系統(tǒng)測試 為了確保本系統(tǒng)能夠正常運(yùn)行,需要在發(fā)布之后做一次較全面的測試?,F(xiàn)將具體操作及過程舉例說明如下: 測試舉例 測試程序 登錄界面 打開程序后,首先出現(xiàn)的是登錄頁面,在設(shè)置好網(wǎng)絡(luò) IP 和端口號(hào)之后,輸入用戶名和密碼,如果連接服務(wù)器成功則提示用戶輸入的用戶名和密碼是否正確,否則提示連接不到服務(wù)器,并提示正確設(shè)置服務(wù)器 IP 和服務(wù)端口。其中端口號(hào)只能設(shè)置 1024 之后的端口號(hào),前面的地址為服務(wù)器作為保留地址用,否則程序會(huì)提示錯(cuò)誤。 測試程序主界面 進(jìn)入主界面后,主頁面會(huì)顯示在線用戶列表區(qū)、信息顯示區(qū)、功能設(shè)置區(qū)、信息發(fā)送區(qū)、功能按鈕區(qū)。用戶可以在用戶列表中看到目前在線的其他用戶,并在信息顯示區(qū)內(nèi)看到系統(tǒng)提示。用戶可以在信息發(fā)送 區(qū)內(nèi)輸入自己的發(fā)送內(nèi)容,并可以通過功能設(shè)置區(qū)設(shè)置字體內(nèi)容的屬性和發(fā)送表情。可以通過單擊用戶列表名中的用戶彈出私聊窗體,進(jìn)行私聊,發(fā)送的信息其他用戶不可以見。在主界面的顯示區(qū)中可以不斷的查看到其他用戶發(fā)送過來的信息,并可以通過點(diǎn)擊查看記錄按鈕查看保存的聊天記錄。 測試程序退出 當(dāng)單擊退出按鈕或窗體的關(guān)閉時(shí),用戶將發(fā)送退出信息,離開聊天室,其他用戶可以得到系統(tǒng)提示用戶下線并刷新用戶列表。當(dāng)服務(wù)器出線異?;蜿P(guān)閉時(shí),客戶端將提示服務(wù)中斷并退出系統(tǒng)。 測試項(xiàng)目 由于實(shí)際開發(fā)過程中還是不可避免地會(huì)產(chǎn)生差 錯(cuò),系統(tǒng)中通??赡茈[藏著錯(cuò)誤和缺陷,不經(jīng)周密測試的系統(tǒng)投入運(yùn)行,將會(huì)造成難以想象的后果,因此系統(tǒng)測試是軟件開發(fā)過程中為保證軟件質(zhì)量必須進(jìn)行的工作。大量統(tǒng)計(jì)資料表明,系統(tǒng)測試的工作量往往占軟件開發(fā)總工作量的 30%以上。因此,我們必須重視測試工作。 由于程序中隱藏的缺陷只在特定的環(huán)境下才有可靠顯露,系統(tǒng)缺陷通常是由于對某些特定情況考慮不周造成的。因此測試不是為了表明程序正確;成功的測試也不是沒有基于 JAVA 聊天室的設(shè)計(jì)與開發(fā) 27 發(fā)現(xiàn)錯(cuò)誤的測試。有意義的軟件測試應(yīng)該是從“破壞”軟件系統(tǒng)的角度出發(fā),精
點(diǎn)擊復(fù)制文檔內(nèi)容
高考資料相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1