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

正文內(nèi)容

畢業(yè)設(shè)計-基于java的即時消息系統(tǒng)設(shè)計與實現(xiàn)(編輯修改稿)

2025-01-08 19:29 本頁面
 

【文章內(nèi)容簡介】 層 客戶層也叫應(yīng)用層,是應(yīng)用程序的用戶接口部分。給聊天工具設(shè)計一個客戶層具有很多優(yōu)點, 這是因為客戶層擔(dān)負(fù)著用戶與應(yīng)用間的對話功能。它用于檢查用戶的輸入數(shù)據(jù),顯示應(yīng)用的輸出數(shù)據(jù)。為了使用戶能直觀地進(jìn)行操作,客戶層需要合作圖形用戶接口。若聊天用戶變更,系統(tǒng)只需要改寫顯示控制和數(shù)據(jù)檢查程序即可,而不影響其他兩層。數(shù)據(jù)檢查的內(nèi)容限于數(shù)據(jù)的形式和值的范圍,不包括有關(guān)業(yè)務(wù)本身的處理邏輯。 2.服務(wù)層 服務(wù)層也叫功能層,相當(dāng)于應(yīng)用的本體,它是將具體的業(yè)務(wù)處理邏輯編入程序中。例如,用戶需要檢索數(shù)據(jù),系統(tǒng)設(shè)法將有關(guān)檢索要求的信息一次性地傳送給功能層 。而用戶登錄后,聊天登錄信息是由功能層處理過的檢索結(jié)果數(shù)據(jù),它也是一次性傳送給表示層的。在應(yīng)用設(shè)計中,必須避免表示層和功能層之間進(jìn)行多次的數(shù)據(jù)交換,這就需要盡可能進(jìn)行一次性的業(yè)務(wù)處理,達(dá)到優(yōu)化整體設(shè)計的目的。 3. 數(shù)據(jù)層 據(jù)層就是 DBMS,本系統(tǒng)使用了 Microsoft 公司的 SQL Server 2021 數(shù)據(jù)庫服務(wù)器來管理數(shù)據(jù)。 SQL Server 2021 能迅速執(zhí)行大量數(shù)據(jù)的更新和檢索。因此,從功能層傳送到數(shù)據(jù)層的“要求”一般都使用 SQL 語言。 功能模塊 聊天工具按如下過程完成通信: ? 客戶向服務(wù)器注冊,告知服務(wù)器它在監(jiān)聽某主題; ? 客戶注冊之后,向服務(wù)器發(fā)送消息; ? 服務(wù)器再把消息發(fā)送給所有監(jiān)聽些主題的客戶。 聊天工具由服務(wù)器端和客戶端組成,要分析清楚兩方面所要完成的任務(wù),對設(shè)計來說,等于完成了一半。根據(jù)聊天的通信步驟,系統(tǒng)的功能模塊如圖 所示: 即時消息系統(tǒng) 服務(wù)器端 客戶端 后臺操 作 建立連接 . 監(jiān)聽客戶請求 用戶登錄消息 用戶管理 好友管理 聊天功能 用戶登錄 用戶注冊 查找好友 添加好友 刪除好友 發(fā)送消息 接收消息 聊天記錄 數(shù)據(jù)庫操作 發(fā)送系統(tǒng)消息 消息管理 圖 功能模塊 服務(wù)器完成 5 大功能:建立連接、監(jiān)聽客戶請求、操作數(shù)據(jù)庫、查看用戶登錄消息和發(fā)送系統(tǒng)消息這 5 大功能的具體含義如下: ? 建立連接:系統(tǒng)啟動時建立一個 ServerSocket 連接,綁定本地計算機(jī)的一個端 口,不斷偵聽是否有客戶端連接或者斷開連接。 ? 監(jiān)聽客戶請求:服務(wù)器端是一個信息的樞紐,所有客戶端的信息都要傳到服務(wù)器端,再由服務(wù)器根據(jù)要求分發(fā)出去,客戶端在向服務(wù)器發(fā)送各種請求,如:上線、隱身、獲取我的好友、查找好友等等。 ? 數(shù)據(jù)庫操作:當(dāng)客戶機(jī)向服務(wù)器發(fā)送請求時,服務(wù)器需要通過數(shù)據(jù)庫管理軟件對數(shù)據(jù)庫的數(shù)據(jù)進(jìn)行增、刪和查詢。如錄入用戶信息、修改用戶信息、查找好友數(shù)據(jù)庫的資料以及添加好友數(shù)據(jù)到數(shù)據(jù)庫等。 ? 用戶登錄消息:在服務(wù)器端的界面上,我們可以看到用戶的登錄 消息,包括 IP地址、端口號,登錄時間等。 ? 發(fā)送系統(tǒng)消息:在客戶端管理界面上,可以輸入消息,并發(fā)送給所有的在線用戶。 客戶端完成 3 大功能:用戶管理、好友管理和聊天功能,這些功能的含義如下: ? 用戶管理:此功能又包括 2 個子功能,用戶登錄和用戶注冊。客戶端與服務(wù)器端建立通信通道,向服務(wù)器發(fā)送新建用戶的信息,接收來自服務(wù)器聽信息進(jìn)行注冊。注冊完畢后,可以通過系統(tǒng)的登錄界面,輸入賬號和密碼,然后發(fā)送到服務(wù)器進(jìn)行驗證。如果驗證通過,則打開程序的主界面。 ? 好 友管理:此功能又包括 3個子功能,查找好友、添加好友和刪除好友。在程序的主界面,提供查找好友的功能。查找好友時,客戶端向服務(wù)器發(fā)送查找好友請求 ,服務(wù)器端返回在線用戶的信息,此時我們可以通過此來進(jìn)行添加好友,并跟好友通過通信連接。 ? 聊天功能:客戶端在與好友端建立通信連接后,便可以與好友進(jìn)行聊天,聊天時發(fā)送的是文本信息,好友端在接收到聊天消息后,會提示收到消息,并由好友端自主打開消息接收界面。所有的聊天消息都會被保存起來,可以查看與每個好友的聊天記錄。聊天記錄包括內(nèi)容和時間。 系統(tǒng)詳細(xì) 設(shè)計 多線程設(shè)計 服務(wù)器需要和多個客戶端同時進(jìn)行通信,這就是服務(wù)器端的多線程。一旦服務(wù)器發(fā)現(xiàn)一個新的客戶端與之建立了連接,就馬上新建一個線程與客戶端進(jìn)行通信。用多線程的好處在于可以同時處理多個通信連接,不會出于由于數(shù)據(jù)排隊而發(fā)生的延遲或者丟失,可以很好利用系統(tǒng)的性能。 服務(wù)器為每個連接著的客戶建立一個線程,為了同時響應(yīng)多個客戶端,需設(shè)計一個主線程來啟動服務(wù)器端的多線程。主線程與進(jìn)程結(jié)構(gòu)類似,它在獲得新連接時生成一個線程來處理這個這個連接。線程調(diào)度速度快,占用資源少,可共享進(jìn)程空間中的數(shù)據(jù),因此服務(wù)器的響應(yīng)速度較快,且 I/O 吞吐量較大。在程序的代碼里面,服務(wù)器端的多線程類定義為: Class ServerThread extends Thread{//略 }。 客戶端能夠完成信息的接收和發(fā)送操作,這與服務(wù)器的多線程概念不同,可以采用循環(huán)等待的方法來實現(xiàn)客戶端。利用循環(huán)等待的方式,客戶端首先接收用戶輸入的內(nèi)容并將它們發(fā)送到服務(wù)器端,然后接收來自服務(wù)器端的信息,將其返回給客戶端的用戶。在程序的代碼里面,客戶端的多線程定義為: class MainWin extends JFrame implements Runnable{//略 }; 數(shù)據(jù)庫設(shè)計 數(shù)據(jù)庫表主要用來存放用戶的注冊信息和用戶的好友資料,可利用兩張數(shù)據(jù)表用來存放用戶信息和用戶好友資料。在 SQL Server 2021 上新建名為 javaicq的數(shù)據(jù)庫,并建立兩張數(shù)據(jù)庫表:用戶的基本信息表(表名 icq)和用戶好友數(shù)據(jù)庫表(表名 friend) . 表 icq 表存放用戶信息,包括用戶的號碼( icqno)、昵稱 (nickname)、密碼(password)、在線是否 (status)、 IP 地址 (ip)、資料 (info)、頭像號 (pic)、性別 (sex)、 Email()和籍貫 (place)等信息。利用 SQL Server 2021 建立數(shù)據(jù)表 ,如表 所示: 表 用戶信息表 字段 數(shù)據(jù)類型 說明 icqno int 用戶的賬號 nickname char 用戶的昵稱 password char 登錄密碼 satus bit 在線是否 ip char 登錄的客戶端 IP 地址 place char 籍貫 pic int 用戶的頭像對應(yīng)的號碼 sex char 性別 char 電子郵件 info char 用戶的個性說明 表 friend 表的設(shè)計比較簡單,本系統(tǒng)設(shè)計了用戶的號碼和好友的號碼兩個字段。利用 SQL Server 2021 建立如下數(shù)據(jù)表: 表 好友信息表 字段 數(shù)據(jù)類型 說明 icqno char 用戶的賬號 friend char 好友的賬號 服務(wù)器的設(shè)計 主服務(wù)器實現(xiàn)了服務(wù)器的多線程,服務(wù)器端有一個進(jìn)程(或多個進(jìn)程)在指定的端口等待客戶的連接信息。一時連接成功,就可以按設(shè)計的 數(shù)據(jù)交換方法和格式進(jìn)行數(shù)據(jù)傳輸??蛻舳酥辉谛枰臅r候向服務(wù)端發(fā)出連接請求。主服務(wù)器類調(diào)用 ServerThread 類,而每個 ServerThread 實體就是一個單獨的線程,即對應(yīng)于客戶端連接請求響應(yīng)的線程。它的執(zhí)行過程如下: ? 使用 ServerSocket s=new ServerSocket(8000)語句 綁定 8000 端口創(chuàng)建套接口 ? 使用 Socket=()來監(jiān)聽用戶的請求 ? 使用 new ServerThread(socket)語句創(chuàng)建新的線 程。 類的設(shè)計 客戶端發(fā)送連接請求的時候,服務(wù)器端創(chuàng)建一個 ServerThread(socket)線程。 ServerThread 類的函數(shù)執(zhí)行過程可描述如下: ? 執(zhí)行 ServerThreadz(Socket s)線程構(gòu)造函數(shù) ? 執(zhí)行 socket=s 取得傳遞參數(shù); ? BufferedReader(new InputStreamReader(()))創(chuàng)建輸入流; ? 使用 PrintWriter(new BufferedWriter( new OutputStreamWriter( )))創(chuàng)建輸出流; ? 使用 start()函數(shù)啟動線程; ? 最后使用 run()線程監(jiān)聽函數(shù)。 ( 1)登錄線程 如果客戶端輸入的字符串“ login” ,表示需要登錄,那么服務(wù)器在接收到該信息后連接數(shù)據(jù)庫,準(zhǔn)備從數(shù)據(jù)庫選擇昵稱和密碼。服務(wù)器接收到客戶端發(fā)送過來的號碼和密碼信息后,設(shè)定數(shù)據(jù)庫查尋條件,并執(zhí)行數(shù)據(jù)庫查尋,通過 比較輸入的用戶名和密碼和數(shù)據(jù)庫信息來確定用戶的登錄是否成功 ,如果成功就,發(fā)送“ ok”給客戶端,通知其進(jìn)入聊天主界面 .反之發(fā)送“ false” ,提示用戶登錄失敗 ,如圖 所示: 客戶端 服務(wù)器端 Socket 讀取數(shù)據(jù)庫,并驗證賬號與密碼 發(fā)送:“ login” 接收:賬號和密碼 接收 :“ login” 監(jiān)聽用戶請求 發(fā)送:賬號和密碼 ServeSocket 接收:“ ok” 發(fā)送:“ ok” 打開程序主界面 把 IP 地址和在線狀態(tài)錄入數(shù)據(jù)庫 數(shù)據(jù)庫 結(jié)束 通知好友 圖 登錄流程 ( 2)通知好友 通知好友也是在 ServerThread 類的 run()函數(shù)里面,當(dāng)某一用戶成功登錄后,發(fā)送“ getwhoaddme”到服務(wù)器端,服務(wù)器端查找數(shù)據(jù)庫中的“ friend”數(shù)據(jù)表,并把用戶的所有好友消息及在線狀態(tài)發(fā)送回客戶端,客戶端通過這些好友的消 息,向在線的好友發(fā)送上線通知。 用戶新建過程也在線程監(jiān)聽函數(shù) run()中。當(dāng)服務(wù)器端收到客戶端發(fā)送的“ new”請求時,服務(wù)器端開始進(jìn)行新建用戶操作。新建用戶的過程是這樣的:首先要使用權(quán) 方法加載數(shù)據(jù)庫驅(qū)動類,該類的描述是;然后使用 方法連接數(shù)據(jù),數(shù)據(jù)庫名為 jdbc:odbc:javaicq。最后服務(wù)器接收客戶端用戶發(fā)送的昵稱、密碼、用戶 Email,個人資料、籍貫 和頭像等信息,執(zhí)行數(shù)據(jù)庫添加操作完成用戶的創(chuàng)建。服務(wù)器為新建的用戶指定唯一的注冊號碼,將以即時消息的方法發(fā)送給用戶。 (1)查找好友 當(dāng)客戶端向服務(wù)器查找好友的請求后,服務(wù)器立即響應(yīng)并調(diào) 方法加載數(shù)據(jù)庫驅(qū)動類 ,然后調(diào)用方法 完成數(shù)據(jù)庫的連接,得到用戶好友查詢的結(jié)果。查詢結(jié)果包括:好友的昵稱、性別、性別、籍貫、個人資料等信息。服務(wù)器對數(shù)據(jù)庫聽查詢結(jié)果進(jìn)行篩選,只向客 戶端的用戶返回好友的注冊號碼、頭像信息號以及是否在線信息??蛻舳私邮盏讲樵兘Y(jié)果后,利用相應(yīng)的函數(shù)將其顯示出來。 (2)添加好友 讀取資料功能是在查找好友功能基礎(chǔ)上建立的。用戶得到好友列表后,可根據(jù)需要讀取好友的詳細(xì)資料,也可讀取用戶自己的詳細(xì)資料。服務(wù)器使用 Vector矢量保存客戶端用戶的好友號碼,并返回好友的昵稱、號碼、 IP 地址、狀態(tài)、頭像和個人資料等信息。 (3)添加好友 服務(wù)器響應(yīng)客戶端用戶的請求后,首先連接數(shù)據(jù)庫,并根據(jù)接收的用戶號碼及好友號碼向好友表添加記錄。服務(wù)器使用 r6 保存查詢結(jié)果。若 r6 為 1,則表明添加好友成功,服務(wù)器將給客戶端發(fā)出“ ok addfriend”的消息;否則添加好友失敗,服務(wù)器將給客戶端發(fā)出“ falseaddfrien
點擊復(fù)制文檔內(nèi)容
公司管理相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號-1