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

正文內(nèi)容

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

2025-01-08 19:29 本頁(yè)面
 

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