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

正文內(nèi)容

java課程設(shè)計聊天室系統(tǒng)(編輯修改稿)

2024-07-26 08:14 本頁面
 

【文章內(nèi)容簡介】 消息發(fā)給接收方;另一種是拉方式,即接收方主動向數(shù)據(jù)源請求獲取數(shù)據(jù),例如服務(wù)器通過定期詢問客戶A有無數(shù)據(jù)的方式,客戶A一旦有消息,就會發(fā)消息給服務(wù)器。顯然這兩種方式應(yīng)用的場合是不一樣的,上文中描述的是“推”方式,客戶A將消息發(fā)(推)給服務(wù)器,服務(wù)器將消息再轉(zhuǎn)發(fā)(推)給其它客戶。數(shù)據(jù)源(客戶A)的特點是消息的產(chǎn)生是不確定的(接收方難以知道發(fā)方何時有消息),產(chǎn)生就發(fā)是高效的方式,若服務(wù)器采用輪詢的方式,一方面在大多數(shù)情況下會產(chǎn)生許多無謂的詢問,另一方面會降低服務(wù)器的性能(特別是服務(wù)器可能成為整個系統(tǒng)的性能瓶頸,這就尤為重要),這里還隱含了一個假設(shè):在聊天過程中,服務(wù)器一直等待消息的到來,B、C也隨時能接受消息,所以發(fā)送(推)一般是能成功的。服務(wù)器向客戶B,C推消息(相當于客戶B、C接收消息),是基于B、C都在準備接收的假設(shè),這一點較之服務(wù)器一直可靠運行的假設(shè),其假設(shè)的有效性較低,因為客戶方的行為難以預料,可能客戶重啟了系統(tǒng),可能突然斷電等。服務(wù)器可能白發(fā)了消息(為保證消息發(fā)到客戶,服務(wù)器會重復發(fā)送消息,造成性能損失),因為它不知道客戶是否在等著接收消息,這時可以考慮客戶方主動接收消息,通過定期輪詢的方式,向服務(wù)器要數(shù)據(jù),這時服務(wù)器就知道客戶一定能接收消息,所以就發(fā)消息給客戶,這種方式是“拉”方式。此方式較之服務(wù)器直接推,服務(wù)器性能上有所損失,主要用于處理客戶的輪詢消息(較之重發(fā)消息,開支一般較?。?,客戶方因為要輪訊,也損失性能,但這對于客戶端并不重要(其計算能力絕大部分情況下都足夠),編碼量上C/S均增加了,它的好處是如果多數(shù)情況下不能保證客戶方一直在線,則服務(wù)方可以處理多次輪詢,但只發(fā)一次消息給客戶,較之不斷的重發(fā)消息給客戶(尤其是大量用戶群發(fā)時)總體性能上是提高的。輪詢時間的確定主要是在消息收發(fā)的及時性和性能影響之間取得平衡,周期過小,服務(wù)器處理壓力大,周期過長,客戶不能及時收到消息,一般可取2—5秒。 推薦的方式是“推”方式,因為“Happy Chat”應(yīng)用于局域網(wǎng),網(wǎng)絡(luò)條件較好,且基于可靠的TCP協(xié)議傳輸消息,本身對可靠性要求也不高,具體說就是服務(wù)器向客戶轉(zhuǎn)發(fā)消息時,不管成功與否只發(fā)一次,客戶向服務(wù)器發(fā)消息時,若出錯,不會自動重發(fā),但會給出提示,由聊天者決定是否重發(fā)(如再次按發(fā)送按鈕)。即認為在多客戶聊天過程中服務(wù)器一直正常運行,客戶端也一直正常。這樣做以后,簡化了設(shè)計編碼,性能也得到提高。結(jié)論:系統(tǒng)采用無回復的“推”方式收發(fā)消息。二 服務(wù)器結(jié)構(gòu) 服務(wù)器端主要的模塊和結(jié)構(gòu)如圖4所示:圖4 服務(wù)器端結(jié)構(gòu)圖 為服務(wù)器端監(jiān)聽類,負責服務(wù)器的啟動,包括啟動監(jiān)聽端口、服務(wù)器監(jiān)控界面。 為服務(wù)器監(jiān)控窗體,負責監(jiān)控服務(wù)器運行狀態(tài),聊天內(nèi)容,發(fā)送公告,踢人…… 為服務(wù)器連接處理的具體實現(xiàn)。 語言過濾類,處理非法聊天內(nèi)容的過濾。(可選)三 客戶端結(jié)構(gòu)客戶端主要模塊和結(jié)構(gòu)如圖5所示:圖5 客戶端結(jié)構(gòu)圖 為客戶端程序啟動類,負責客戶端的啟動和退出。 為客戶端程序登錄界面,負責用戶帳號信息的驗證與反饋。 為客戶端程序注冊界面,負責用戶帳號信息的注冊驗證與反饋。 為客戶端程序聊天室主界面,負責接收、 親密合作。 Windowclose ,負責監(jiān)聽聊天室界面的操作,當用戶退出時返回給服務(wù)器信息。 為客戶端程序的一個小程序,實現(xiàn)的一個石英鐘功能。(可選) 詳細設(shè)計 客戶端設(shè)計一 注冊模塊 、密碼、年齡、電子郵箱等。參考界面如圖6。圖6 客戶端注冊界面處理過程:當用戶注冊時,封裝成Register_Customer類然后通過建立在Socket的連接之上的對象輸出流將用戶注冊信息發(fā)送給服務(wù)器端,服務(wù)器端將請求轉(zhuǎn)發(fā)給Connection處理,Connection 在收到信息后將驗證數(shù)據(jù)的完整性并在數(shù)據(jù)庫中查找該用戶名是否已經(jīng)注冊,然后將注冊信息加入數(shù)據(jù)庫,最后將注冊結(jié)果返回給客戶端。客戶端顯示結(jié)果(重名、成功、失?。?,并斷開連接。驗證要求如下:1 驗證用戶名是否為空即用戶名的字符長度不為0,如果驗證通過,就繼續(xù)下面驗證,否則返回“用戶名為空”錯誤。2 驗證密碼是否為空即密碼的字符長度不為0,如果驗證通過,就繼續(xù)下面驗證,否則返回“用戶密碼為空”錯誤。3 驗證密碼的一致性驗證密碼兩次輸入是否一致,如果驗證通過,就繼續(xù)下面驗證,否則返回“密碼兩次輸入不一致,請重新輸入”錯誤。 4 驗證年齡是否為空即用戶年齡的字符長度不為0,如果驗證通過,就繼續(xù)下面驗證,否則返回“用戶名為空錯誤”5 驗證年齡的合法性即用戶年齡介于10到100之間,如果驗證通過,就進行繼續(xù)下面驗證,否則返回“用戶年齡為空” 6 驗證電子郵箱的合法性即電子郵箱字符串必須有“@” ,如果驗證通過,就進行繼續(xù)下面驗證,否則返回“電子郵箱不合法”, 二 登錄模塊、密碼,如圖7所示。圖7 客戶端登錄界面 登錄過程如下:當用戶登錄時, 界面收集并驗證用戶登錄信息后,封裝成Customer對象類然后通過建立在Socket的連接之上的對象輸出流將用戶登錄信息發(fā)送給服務(wù)器端,服務(wù)器端將請求轉(zhuǎn)發(fā)給Connection處理,Connection 在收到信息后將驗證數(shù)據(jù)的完整性并在對象型數(shù)據(jù)庫中查找該用戶名是否已經(jīng)注冊,然后將注冊用戶的信息與登錄請求信息進行密碼驗證,在登錄成功后將該用戶添加到在線用戶列表,最后將登錄結(jié)果返回給客戶端。如果登錄成功,客戶端將繼續(xù)啟動聊天室主界面。驗證要求:1 驗證用戶名是否為空即用戶名的字符長度不為0,如果驗證通過,就進行繼續(xù)下面驗證,否則返回“用戶名為空”錯誤,2 驗證密碼是否為空即密碼的字符長度不為0,如果驗證通過,就進行繼續(xù)下面驗證,否則返回“用戶密碼為空”錯誤 當以上信息驗證成功時,客戶端將打開與服務(wù)之間的Socket連接,用對象輸出流包裝后將用戶登錄的信息發(fā)送給服務(wù)器端,并接收服務(wù)器處理完用戶登錄的信息。 當客戶端收到服務(wù)器返回的信息時,將會用信息對話框的形式告知用戶是否注冊成功,若成功則顯示收發(fā)主界面ChatRoom,關(guān)閉Socket連接。三 收發(fā)模塊當用戶登錄成功后,用戶的登錄界面將會消失,然后創(chuàng)建用戶聊天室窗口(如圖),在界面的標題欄將會顯示當前登錄用戶的用戶名,以防止一個機器上的用戶開多個帳號進入聊天室后分不清哪個窗口是哪個用戶登錄的,界面第一行將顯示當前服務(wù)器的在線人數(shù)。位于界面正中的兩個控件分別是List和TextBox用來顯示當前服務(wù)器上的在線會員名單列表和公共聊天信息。位于界面下方的就是一些用于聊天的功能控件和聊天內(nèi)容個性化配置控件(可選)。包括聊天對象、聊天語氣、聊天內(nèi)容、聊天字體、風格、大小、顏色……1 用戶發(fā)送信息當用戶需要發(fā)送聊天信息時,可以在在線列表中選中聊天對象或者“所有人”,選擇發(fā)言的語氣,和是否私聊就可以發(fā)送聊天信息了。當用戶點擊完發(fā)送按鈕后,程序開始將當前用戶名、聊天對象、聊天內(nèi)容、聊天語氣和是否私聊進行封裝,然后獲取Socket連接,再用對象輸出流包裝Socket的輸出流將聊天信息對象發(fā)送給服務(wù)器端。2 接收聊天信息接收用戶的聊天信息是用一個單獨的接收線程實現(xiàn)的,因為客戶端必須隨時接收服務(wù)器發(fā)來的消息,而讀取消息的方法采用的一般是讀直到有消息到來的“阻塞讀”方式,若在事件處理程序中讀(占用的是事件處理線程)則會使程序在此后無法響應(yīng)用戶操作,所以需要生成一個單獨的線程專門用于讀取處理消息。而發(fā)送消息的方法則是將消息放入操作系統(tǒng)的發(fā)送緩沖區(qū)后就返回的,所以發(fā)送執(zhí)行的相當快,可以在事件處理線程中直接調(diào)用。發(fā)送和接收可以同時進行。當每次用戶接收到聊天信息后將會開始分析聊天信息然后將適合自己的信息顯示在聊天信息界面上。收發(fā)界面如圖8所示。圖8 收發(fā)界面 圖上的字體(個性化)、時鐘、保存等是可選的功能,聊天者列表、聊天信息顯示,聊天內(nèi)容、私聊等是必需的。 服務(wù)端設(shè)計功能描述:。(私聊除外)。,發(fā)送通知(可選)。(可選)。一 用戶注冊 首先創(chuàng)建一個File文件類,載入“”,再用對象輸入流ObjectInputStream包裝File文件類,將存儲在“”得向量對象Vector中載入內(nèi)存中,現(xiàn)在系統(tǒng)中的向量就是對象型數(shù)據(jù)庫,存儲著每條用戶信息對象。檢測內(nèi)存中的數(shù)據(jù)庫對象集的當前容量是否為空,如果是,將收集的注冊用戶信息對象添加到數(shù)據(jù)庫對象集中,然后直接寫入數(shù)據(jù)庫,否則繼續(xù)進行其他判斷。 檢測內(nèi)存中的數(shù)據(jù)庫對象集的中有沒有和當前收集的注冊用戶名相同的記錄,如果有,就退出檢測,否則繼續(xù)下一個檢測。 檢測當前收集的用戶名是否為“所有人”,如果是,就退出檢測,否則繼續(xù)下一個檢測。因為“所有人”這個名字會和系統(tǒng)發(fā)生沖突,用戶發(fā)給所有人的信息將會使用“所有人”這個特殊用戶名。 寫入數(shù)據(jù)庫 當前面的驗證全部都通過的時候,將用戶的
點擊復制文檔內(nèi)容
環(huán)評公示相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號-1