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

正文內(nèi)容

java課程設(shè)計(jì)聊天室系統(tǒng)-免費(fèi)閱讀

  

【正文】 上機(jī)需要記錄卡號(hào)、機(jī)器號(hào)、上機(jī)時(shí)間。C/S網(wǎng)絡(luò)應(yīng)用主要在局域網(wǎng)中存在,具有快速、高效、安全性好等特點(diǎn),缺點(diǎn)是客戶端程序的維護(hù)十分困難,試想若有數(shù)以萬(wàn)計(jì)的用戶,程序功能一旦變化,就要全部重新安裝配置客戶端程序,代價(jià)太高,于是B/S方式應(yīng)運(yùn)而生,其在internet/intranet獲得廣泛應(yīng)用,最大的特點(diǎn)是程序的維護(hù)只在服務(wù)器端,客戶端只需使用標(biāo)準(zhǔn)瀏覽器即可,其次可以支持多平臺(tái)、易使用。i()。i++){ Client c=(Client)(i)。 if((BOARD)){//實(shí)現(xiàn)信息的群發(fā) String message=。 String keyword=()。 ()。 out=new PrintStream(())。//通知其它客戶,有客戶加入 } else{ disconnect(client)。 } } }}}注:本例中通信協(xié)議的格式,為文本格式,基本格式為:類型:用戶名/用戶消息,較之設(shè)計(jì)中使用的二進(jìn)制消息對(duì)象形式,好處是簡(jiǎn)單、可讀,可移植性好,即使C/S采用不同語(yǔ)言開發(fā),只要遵守此文本格式協(xié)議,都可以互相通信,HTTP協(xié)議就是這方面的例子。 break。若采用二進(jìn)制形式,直接將相關(guān)消息對(duì)象序列化后即可。整個(gè)過程分注冊(cè),登錄,收發(fā),退出四個(gè)階段。語(yǔ)言過濾的時(shí)候?qū)?huì)打開“”文件,不允許出現(xiàn)的關(guān)鍵詞將會(huì)存儲(chǔ)在文件中,關(guān)鍵字之間以逗號(hào)分割。 如果以上驗(yàn)證全部正確,就返回客戶端“用戶登錄成功”。二 用戶登錄 打開用戶數(shù)據(jù)庫(kù)文件“”,將用戶數(shù)據(jù)對(duì)象集載入內(nèi)存,以供下面的程序使用。 檢測(cè)內(nèi)存中的數(shù)據(jù)庫(kù)對(duì)象集的中有沒有和當(dāng)前收集的注冊(cè)用戶名相同的記錄,如果有,就退出檢測(cè),否則繼續(xù)下一個(gè)檢測(cè)。當(dāng)用戶點(diǎn)擊完發(fā)送按鈕后,程序開始將當(dāng)前用戶名、聊天對(duì)象、聊天內(nèi)容、聊天語(yǔ)氣和是否私聊進(jìn)行封裝,然后獲取Socket連接,再用對(duì)象輸出流包裝Socket的輸出流將聊天信息對(duì)象發(fā)送給服務(wù)器端。圖7 客戶端登錄界面 登錄過程如下:當(dāng)用戶登錄時(shí), 界面收集并驗(yàn)證用戶登錄信息后,封裝成Customer對(duì)象類然后通過建立在Socket的連接之上的對(duì)象輸出流將用戶登錄信息發(fā)送給服務(wù)器端,服務(wù)器端將請(qǐng)求轉(zhuǎn)發(fā)給Connection處理,Connection 在收到信息后將驗(yàn)證數(shù)據(jù)的完整性并在對(duì)象型數(shù)據(jù)庫(kù)中查找該用戶名是否已經(jīng)注冊(cè),然后將注冊(cè)用戶的信息與登錄請(qǐng)求信息進(jìn)行密碼驗(yàn)證,在登錄成功后將該用戶添加到在線用戶列表,最后將登錄結(jié)果返回給客戶端。(可選) 詳細(xì)設(shè)計(jì) 客戶端設(shè)計(jì)一 注冊(cè)模塊 、密碼、年齡、電子郵箱等。 為服務(wù)器監(jiān)控窗體,負(fù)責(zé)監(jiān)控服務(wù)器運(yùn)行狀態(tài),聊天內(nèi)容,發(fā)送公告,踢人…… 為服務(wù)器連接處理的具體實(shí)現(xiàn)。服務(wù)器可能白發(fā)了消息(為保證消息發(fā)到客戶,服務(wù)器會(huì)重復(fù)發(fā)送消息,造成性能損失),因?yàn)樗恢揽蛻羰欠裨诘戎邮障ⅲ@時(shí)可以考慮客戶方主動(dòng)接收消息,通過定期輪詢的方式,向服務(wù)器要數(shù)據(jù),這時(shí)服務(wù)器就知道客戶一定能接收消息,所以就發(fā)消息給客戶,這種方式是“拉”方式。前者編程簡(jiǎn)單、性能好,但對(duì)于某些異常情況不能可靠處理,后者編程復(fù)雜,性能差,但可靠性高。 1 客戶A從界面輸入消息,確定群發(fā),業(yè)務(wù)邏輯層從界面獲取信息并驗(yàn)證后生成“消息接收請(qǐng)求”消息,再將消息作為參數(shù)調(diào)用網(wǎng)絡(luò)通信層的發(fā)送函數(shù),發(fā)送函數(shù)將消息發(fā)往服務(wù)器,然后等待服務(wù)器的消息 2 服務(wù)器收到消息,確定是客戶A發(fā)來的,從消息中分析出是群發(fā),然后從當(dāng)前客戶列表中取出除A以外的與每個(gè)客戶(B,C)對(duì)應(yīng)的socket,然后通過socket將消息轉(zhuǎn)發(fā)給客戶B,C??蛻舳藨?yīng)給出發(fā)送異常提示,不應(yīng)退出或死機(jī)。(1)進(jìn)入收發(fā)界面,群發(fā)一條消息,觀察其它客戶是否收到消息,察看服務(wù)器有無(wú)相應(yīng)顯示 (2)私聊一條消息,察看指定用戶是否收到消息(3)無(wú)任何輸入,直接按發(fā)送。(1)測(cè)試重名注冊(cè)。 驗(yàn)收測(cè)試要求測(cè)試環(huán)境:客戶及服務(wù)器機(jī)操作系統(tǒng):Window XP,內(nèi)存:512M。注冊(cè)、登錄用例次之。例如客戶端登陸用例分析時(shí),客戶發(fā)“登錄請(qǐng)求”信息到服務(wù)端,此時(shí)只需關(guān)注服務(wù)方返回情況,所以只需等待獲取服務(wù)端返回信息,而無(wú)需知道服務(wù)方是如何處理的。4. 接收信息(1)客戶端系統(tǒng)啟動(dòng),進(jìn)入主界面后,會(huì)顯示消息接收框(2)其他客戶或服務(wù)端系統(tǒng)本身發(fā)送消息過來,系統(tǒng)接收,分析確認(rèn)是” 接收消息請(qǐng)求“,則分析提取出消息(3) 在消息接收框逐條顯示發(fā)送者姓名、發(fā)送的消息。 需求分析系統(tǒng)的主要功能已在業(yè)務(wù)分析中有所介紹,在這里需要對(duì)每個(gè)功能從使用者角度作較為具體的分析。服務(wù)方也可以根據(jù)需要,通過socket的輸出流發(fā)信息和請(qǐng)求給客戶端(公告)。它提供的功能遠(yuǎn)不如豐富,但應(yīng)具有如下功能:(1)與聊天室成員一起聊天;(2)可以與聊天室成員私聊;(3)用戶注冊(cè)、登錄;(4)服務(wù)器監(jiān)控聊天內(nèi)容;(5)服務(wù)器發(fā)送通知;(6)服務(wù)器踢人;(7)保存服務(wù)器日志。了解Socket編程的協(xié)議約定,掌握簡(jiǎn)單應(yīng)用協(xié)議的開發(fā)。進(jìn)一步鞏固發(fā)展團(tuán)隊(duì)協(xié)作能力。(8)保存用戶聊天信息??蛻舴胶头?wù)方都可以通過關(guān)閉本方的socket而結(jié)束一次通訊過程。很明顯,整個(gè)系統(tǒng)的功能可以自然地分為客戶端和服務(wù)器端。5 退出(1)用戶請(qǐng)求退出,按退出按鈕(2)系統(tǒng)確認(rèn)用戶退出(對(duì)話框) (3)系統(tǒng)發(fā)“退出請(qǐng)求”到服務(wù)端,等待服務(wù)端返回“退出成功”(等待返回消息可省)(4)客戶端系統(tǒng)關(guān)閉連接,程序退出二 服務(wù)器端1. 用戶注冊(cè)(1)系統(tǒng)啟動(dòng)后,等待客戶請(qǐng)求(2)客戶請(qǐng)求到,接受請(qǐng)求,分析確認(rèn)是“注冊(cè)請(qǐng)求”(3)系統(tǒng)讀取信息,分析并再次驗(yàn)證用戶名、密碼、確認(rèn)密碼、性別、年齡、電子郵件。服務(wù)方如何處理是在服務(wù)端登錄用例中描述的。而公告、踢人、保存日志及聊天記錄、個(gè)性化界面等又次之??蛻舳顺绦虬惭b在客戶機(jī)(至少2臺(tái))上,通過以太網(wǎng)(網(wǎng)速至少10M)與服務(wù)器相連。進(jìn)入注冊(cè)界面輸入重名用戶名,其它正確,請(qǐng)求注冊(cè)。(4)退出系統(tǒng),察看服務(wù)端顯示,察看其它客戶端是否已將該客戶名刪除。四 性能測(cè)試(可選)編制一測(cè)試程序,作為客戶端,登錄進(jìn)系統(tǒng),向服務(wù)器按指定時(shí)間間隔群發(fā)消息。 3 服務(wù)器在監(jiān)控界面上顯示:客戶A—〉消息 群發(fā) 4 服務(wù)器生成“消息接收成功”消息,向客戶A回發(fā)(可?。_@就要根據(jù)情況在上述矛盾中折中,對(duì)于“聊天室系統(tǒng)”,對(duì)可靠性要求并不高,即使消息有5%未收到,也沒有大的問題,另外聊天者是處理各種不可靠問題的最佳人選,實(shí)在不行,可由人重啟系統(tǒng)(不會(huì)帶來任何人身及財(cái)物損失),另外本系統(tǒng)主要應(yīng)用在局域網(wǎng),而局域網(wǎng)的可靠性是較高的。此方式較之服務(wù)器直接推,服務(wù)器性能上有所損失,主要用于處理客戶的輪詢消息(較之重發(fā)消息,開支一般較?。?,客戶方因?yàn)橐営?,也損失性能,但這對(duì)于客戶端并不重要(其計(jì)算能力絕大部分情況下都足夠),編碼量上C/S均增加了,它的好處是如果多數(shù)情況下不能保證客戶方一直在線,則服務(wù)方可以處理多次輪詢,但只發(fā)一次消息給客戶,較之不斷的重發(fā)消息給客戶(尤其是大量用戶群發(fā)時(shí))總體性能上是提高的。 語(yǔ)言過濾類,處理非法聊天內(nèi)容的過濾。參考界面如圖6。如果登錄成功,客戶端將繼續(xù)啟動(dòng)聊天室主界面。2 接收聊天信息接收用戶的聊天信息是用一個(gè)單獨(dú)的接收線程實(shí)現(xiàn)的,因?yàn)榭蛻舳吮仨氹S時(shí)接收服務(wù)器發(fā)來的消息,而讀取消息的方法采用的一般是讀直到有消息到來的“阻塞讀”方式,若在事件處理程序中讀(占用的是事件處理線程)則會(huì)使程序在此后無(wú)法響應(yīng)用戶操作,所以需要生成一個(gè)單獨(dú)的線程專門用于讀取處理消息。 檢測(cè)當(dāng)前收集的用戶名是否為“所有人”,如果是,就退出檢測(cè),否則繼續(xù)下一個(gè)檢測(cè)。 在對(duì)象數(shù)據(jù)庫(kù)中查找是否有與登陸用戶的用戶名相同的記錄,如果有繼續(xù)驗(yàn)證,否則退出驗(yàn)證處理,返回“沒有此用戶”錯(cuò)誤。7 在監(jiān)控界面顯示信息,如圖9所示 當(dāng)以上的程序都正常運(yùn)行后,需要關(guān)閉Socket連接,否則將會(huì)浪費(fèi)服務(wù)器與 圖9 服務(wù)器管理界面客戶端之間的資源。當(dāng)聊天內(nèi)容中出現(xiàn)要過濾的關(guān)鍵字是 將會(huì)被系統(tǒng)屏蔽,而聊天內(nèi)容也將替換成“非法內(nèi)容,系統(tǒng)屏蔽”。其中LogoutMsg為客戶聲明自己離線,其它客戶收到后將該用戶信息刪除,而QuitMsg是服務(wù)方發(fā)出的要求客戶離線的消息,收到的客戶一般需要關(guān)閉連接。 系統(tǒng)實(shí)現(xiàn) 客戶端實(shí)現(xiàn) 客戶端實(shí)現(xiàn)的關(guān)鍵在于接收線程的實(shí)現(xiàn),部分原型參考代碼如下:class ReadMessageThread extends Thread{ public void run(){ String line=。 //jump out of read thread }cat
點(diǎn)擊復(fù)制文檔內(nèi)容
環(huán)評(píng)公示相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1