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

正文內(nèi)容

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

2024-08-02 20:38本頁面
  

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