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

正文內(nèi)容

基于java即時聊天系統(tǒng)設(shè)計與實現(xiàn)畢業(yè)論文-在線瀏覽

2024-08-02 20:39本頁面
  

【正文】 關(guān)系模型結(jié)構(gòu)中去,為面向?qū)ο蟮念I(lǐng)域模型到傳統(tǒng)的關(guān)系型數(shù)據(jù)庫的映射,提供了一個使用方便的框架?!?】它的設(shè)計目標(biāo)是將軟件開發(fā)人員從大量相同的數(shù)據(jù)持久層相關(guān)編程工作中解放出來。在應(yīng)用方面,Hibernate對JDBC進行了非常輕量級的對象封裝,使得Java程序員可以隨心所欲的使用對象編程思維來操縱數(shù)據(jù)庫。最具革命意義的是,Hibernate可以在應(yīng)用EJB(Enterprise JavaBeans是Java應(yīng)用于企業(yè)計算的框架)的J2EE架構(gòu)中取代CMP,完成數(shù)據(jù)持久化的重任。在本章中將討論一下即時通訊系統(tǒng)的需求分析。協(xié)議必須存在機制,保證即時消息成功投遞或者投遞失敗的時候,發(fā)信者獲得足夠的信息。 即時消息的協(xié)議需求協(xié)議是一系列的步驟,它包括雙方或者多方,設(shè)計它的目的是要完成一項任務(wù)。協(xié)議必須是雙方或者多方參與的,一方單獨完成的就不算協(xié)議。這些信息的格式必須是協(xié)議參與方同意并且遵循的。 即時消息的安全需求A發(fā)送即時消息M給B,有以下幾種情況和相關(guān)需求:(1)如果無法發(fā)送,A必須接到確認;(2)如果M被投遞了,B只能接受M一次;(3)協(xié)議必須為B提供方法檢查A發(fā)送了這條信息;(4)協(xié)議必須允許B使用另一條即時信息,回復(fù)信息;(5)協(xié)議必須為A提供方法保證沒有其他個體C可以篡改M; 即時信息加密和鑒別(1)協(xié)議必須提供方法保證通知和即時消息的置信度,未被監(jiān)聽或者破壞;(2)協(xié)議必須提供方法保證通知和即時消息的置信度,未被重排序或者回放;(3)協(xié)議必須提供方法保證通知和即時消息被正確的實體閱讀;(4)協(xié)議必須允許客戶自己使用方法確保信息的不被截獲,不被重放和解密。 通訊需求(1)用戶可以傳輸文本消息;(2)用戶可以傳輸RTF格式消息;(3)用戶可以加密/解密消息等。采用客戶機/服務(wù)器(C/S)的模式來設(shè)計,是一個2層的C/S結(jié)構(gòu):應(yīng)用程序服務(wù)器→應(yīng)用程序客戶端,其分層機構(gòu)如圖1所示。給即時通訊工具設(shè)計一個客戶層具有很多優(yōu)點,這是因為客戶層擔(dān)負著用戶與應(yīng)用間的對話功能。為了使用戶能直接地進行操作,客戶層需要使用圖形用戶接口。服務(wù)層又叫做功能層,相當(dāng)于應(yīng)用的本體,它是將具體的業(yè)務(wù)處理邏輯編入程序中。在應(yīng)用設(shè)計中,必須避免在表示層和功能層之間進行多次的數(shù)據(jù)交換,這就需要盡可能進行一次性的業(yè)務(wù)處理,達到優(yōu)化整體設(shè)計的目的。第二步,根據(jù)用戶A存儲在IM服務(wù)器上的好友列表(Buddy List),服務(wù)器將用戶A在線的相關(guān)信息發(fā)送給也同時在線的IM好友的PC機,這些信息包括在線狀態(tài)、IP地址、IM客戶端使用的TCP端口(Port)號等,IM好友的客戶端收到此信息后將在予以提示。 通訊方式(1)在線直接通訊如果用戶A想與他的在線好友用戶B聊天,他將直接通過服務(wù)器發(fā)送過來的用戶B的IP地址、TCP端口號等信息,直接向用戶B的PC機發(fā)出聊天信息,用戶B的IM客戶端軟件收到后顯示在屏幕上,然后用戶B再直接回復(fù)到用戶A的PC機,這樣雙方的即時文字消息就不再IM服務(wù)器中轉(zhuǎn),而是直接通過網(wǎng)絡(luò)進行點對點的通訊,即對等通訊方式(Peer To Peer)。因為該系統(tǒng)其需求是十分明確的,所以該系統(tǒng)的開發(fā)流程采用瀑布模型進行設(shè)計,分為幾大步驟:先進行需求分析,再是系統(tǒng)設(shè)計,然后是詳細設(shè)計與編碼,其次是軟件的測試,最后是軟件的運行和維護。如圖2所示。根據(jù)以上描述,該系統(tǒng)功能模塊圖請見圖3。這3大功能的具體含義如下:(1)建立一個ServerSocket連接,不斷偵聽是否有客戶端連接或者斷開連接。(3)數(shù)據(jù)庫數(shù)據(jù)操作包括將用戶信息存儲到數(shù)據(jù)庫等。這些功能的含義如下:(1)新建立用戶:客戶端與服務(wù)器端建立通信信道,向服務(wù)器端發(fā)送新建用戶的信息,接收來自服務(wù)器的信息進行注冊。(3)通信交流:客戶端可完成的信息的編輯、發(fā)送和接收等功能。利用JAVA中的hibernate框架技術(shù)進行存儲。用戶表(user)表1 用戶信息表名稱字段名稱類別主鍵非空用戶編號id數(shù)字是是登錄名CustName文本否是登錄密碼CustPassword文本否是年齡Age文本否是性別Sex文本否是電子郵箱文本否是5 詳細設(shè)計 服務(wù)器端的設(shè)計與實現(xiàn)作為C/S模式下的系統(tǒng)開發(fā),很顯然服務(wù)器端程序的設(shè)計是非常重要的。 主服務(wù)器類的設(shè)計設(shè)計服務(wù)器時需要考慮如下幾個因素:(1)服務(wù)器的運行速度;(2)服務(wù)器的響應(yīng)速度,包括新建連接和發(fā)送數(shù)據(jù)的響應(yīng)速度;(3)I/O吞吐量;(4)其他:流量控制(QoS)、安全性。主服務(wù)器類實現(xiàn)了服務(wù)器端的多線程,使用SeverSocket s=newServerSocket(1001)語句在1001端口創(chuàng)建套接口;使用new ServerThread(socket)語句創(chuàng)建新的線程。服務(wù)器端有一個(或多個)進程在指定的端口等待客戶的連接信息,一旦連接成功,就可以按設(shè)計的數(shù)據(jù)交換方法和格式進行數(shù)據(jù)傳輸。實現(xiàn)界面如圖4。public class AppServer extends Thread{}其中public是JAVA的關(guān)鍵字,用來表示該類是共有,在整個程序里都可以訪問到它;Class表示類定義,它后面接著用戶定義的類的類名為AppServer;extends表示繼承的意思,他后面的類Thread是子類,能夠繼承父類AppServer所定義的一些變量。static boolean newMessage。這條語句的意思是定義一個靜態(tài)變量newMessage,它的類型為布爾型。if(start) { (已啟動...)。 }else { (關(guān)閉中...)。其中,log為輸出語句,表示在窗口中輸出“服務(wù)器已啟動”信息。 Connection con = new Connection(client, u, v, userInfo)。 } }這個函數(shù)的作用是監(jiān)聽用戶信息,void表示定義的函數(shù)不需要返回值,while是循環(huán)語句關(guān)鍵字,在語句中的意思為直到start的值不為空,將循環(huán)執(zhí)行后面括號的語句,直到start值為空后,循環(huán)才結(jié)束。Catch是對java中的異常進行捕獲,并且能夠拋出異常,便于程序能夠正常運行。如果客戶端輸入的字符串表方式需要登錄,那么服務(wù)器在接收到該信息后連接數(shù)據(jù)庫,準備從數(shù)據(jù)庫選擇昵稱和密碼。以下為登陸驗證的流程圖。用戶新建過程也在線程監(jiān)聽函數(shù)run()中。圖6 注冊名重復(fù)提示信息 客戶端的設(shè)計與實現(xiàn)前一章介紹了服務(wù)器端的設(shè)計與實現(xiàn),對于C/S模式的系統(tǒng)而言,還必須對系統(tǒng)的客戶端進行設(shè)計和實現(xiàn)??蛻舳送ㄟ^Socket與服務(wù)器建立連接。只要收到客戶端的連接請求,服務(wù)器利用accept()函數(shù)返回一個新建的Socket對象,隨后客戶端向服務(wù)器發(fā)送消息,諸如注冊、登錄和查找同事等請求,服務(wù)器收到請求后,針對不同的消息處理請求。等服務(wù)器接收完畢后,服務(wù)器會通過hibernate框架讀取數(shù)據(jù)庫信息,并進行判斷,最后在客戶端收到服務(wù)器的反饋信息。public class Register extends JFrame implements ActionListener{ Toolkit toolkit=()。public Register(String ip) { btnOk=new JButton(確定(O))。O39。 (保存注冊信息)。}}Implement繼承于接口類時用的關(guān)鍵詞【7】,在數(shù)據(jù)接口位置使用,在這里表示類ActionListen類繼承類Register。這條語句中,JButton其實是一個類,名為JButton按鈕類,它是JAVA中自帶的一種控件,當(dāng)鼠標(biāo)移入、移出、被點擊所定義的3個變量時,會觸發(fā)JButton類,從而執(zhí)行相應(yīng)的操作。而setBounds類是JAVA自帶類,他能夠設(shè)置組件位置【8】,即確定注冊窗口位置。圖7 用戶注冊界面 用戶登錄當(dāng)用戶點擊登錄時,客戶端發(fā)起請求與服務(wù)端建立連接,登錄信息首先在客戶端做驗證,然后通過填寫的服務(wù)器IP地址申請與服務(wù)端建立連接。然后服務(wù)器將反序列化客戶端傳輸過來的數(shù)據(jù),生成一個用戶對象。最后將登錄的結(jié)果通過文本發(fā)送給客戶端發(fā)送給服務(wù)端。登陸界面見圖8圖8 用戶登陸界面現(xiàn)對部分關(guān)鍵代碼進行講解:public void actionPerformed(ActionEvent a
點擊復(fù)制文檔內(nèi)容
醫(yī)療健康相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1