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

正文內(nèi)容

xmpp協(xié)議客戶端的實(shí)現(xiàn)(參考版)

2024-11-09 08:09本頁(yè)面
  

【正文】 } 圖 12 客戶端登錄界面 presence statusOnline/status /presence 29 客戶端 設(shè)計(jì)了一個(gè)實(shí)體類 FriendBean, 用來(lái)保存在服務(wù)器獲取回來(lái)的每個(gè)好友的相關(guān)信息 , group 為好友所在分組、 nickName 為好友昵稱、 JId 為好友的 JID、 dialogOpened表示是否與該好友聊天、 status 表示好友的在線狀態(tài);這里的 groupFriendInfo 為一個(gè)TreeMap 結(jié)構(gòu)的好友列表 , TreeMap 為紅黑樹(shù)的 JAVA 實(shí)現(xiàn) , 詳細(xì)介紹見(jiàn) ( 好友列表數(shù)據(jù)的處理 )。 ()。 (jId = ())。 (().iterator().next().getName())。 String jId = 。 運(yùn)用 Smack API 包實(shí)現(xiàn)用戶 好友列表的獲取 功能 , JAVA 代碼如下: TreeMapString , FriendBean groupFriendInfo = new TreeMapString , FriendBean()。然后根據(jù)查詢數(shù)據(jù)庫(kù)得到的好友信息結(jié)果中的好友 JID, 查詢他們的在線狀態(tài) , 然后將這些信息組合成 XMPP 協(xié)議的 XML 流返回給用戶。 ◆ 客戶端 UI 界面如 圖 12 所示 : 好友花名冊(cè)服務(wù)設(shè)計(jì) 好友花名冊(cè)服務(wù)是在用戶 登錄到服務(wù)器上后即刻發(fā)生的服務(wù) , 此服務(wù)的目的通過(guò)查詢得到自己的好友花名冊(cè)列表 (包括其好友的在線狀態(tài) )。 (username, password)。 ◆ 客戶端 : XMPP 用戶提供所需的信息 — 在本例中 , 是一個(gè) hash/元素 , 它是對(duì)信息進(jìn)行一個(gè)零度知識(shí)認(rèn)證的一個(gè)哈希。 運(yùn)用 Smack API 包實(shí)現(xiàn)用戶登錄功能 , JAVA 代碼如下: iq xmlns=?jabber:client?id=?uid2?type=?result?/ iq id=?uid2?type=?set? query xmlns=?jabber:iq:register? usernametest3/username password1234password /query /iq 圖 11 客戶端注冊(cè)界面 27 下面是從 XML 流的角度來(lái)剖析這一個(gè)登錄動(dòng)作 [16]: ◆ 客戶端 : 用戶詢問(wèn)服務(wù)器 , 登陸所需要提供的信息。如果驗(yàn)證通過(guò) , 登錄驗(yàn)證服務(wù)會(huì)將數(shù)據(jù)庫(kù)中的用戶狀態(tài)由離線轉(zhuǎn)變?yōu)樵诰€ , 然后將驗(yàn)證成功的結(jié)果發(fā)還給客戶端。 登錄 驗(yàn)證服務(wù)設(shè)計(jì) 登錄驗(yàn)證服務(wù)是對(duì)試圖登錄的客戶端進(jìn)行權(quán)限驗(yàn)證。 ◆ 服務(wù)器 : 服務(wù)器返回注冊(cè)結(jié)果 , 表示已經(jīng)注冊(cè)成功。 ◆ 客戶端 : iq id=?uid1? type=?get? query xmlns=?jabber:iq:register?/ /iq stream:feature sxmlns:stream=? mechanism sxmlns=?urn:ietf:params:xml:ns:xmppsasl? mechanismDIGESTMD5meehanism mechanismPLAIN/ mechanism /mechanisms /stream:features ?xml version=? ?? stream:stream xmlns:stream=? xmlns=?jabber:elient? from=?? Version=? ? id=?7mh6bxa8x95jslubvkxyuPysze2xPz6jhxtrzzPq? iq xmlns=?jabber:client? id=?uid1?type=?result? query xmlns=?jabber:iq:register? username/ Password/ instructions Enter a username and Password to register With this server ◆ 客戶端 : 客戶端發(fā)送一個(gè)注冊(cè)新用戶的請(qǐng)求。 ?xml version=??? stream:stream to=, xmlns=?jabber:client? xmlns:stream=? xml:lang=?en? version=?? 25 ◆ 服務(wù)器: 服務(wù)器響應(yīng)連接 , 通過(guò)開(kāi)啟一個(gè)從服務(wù)器到客戶端的 XML 流進(jìn)行回復(fù)。 ()。 connConfig = new ConnectionConfiguration(serverIp, 5222)。其中 version=??代表客戶端所使用的 XMPP 的版本。 運(yùn)用 Smack API 包實(shí)現(xiàn)用戶注冊(cè)功能 , JAVA 代碼如下: 下面是從 XML 流的角度來(lái)剖析這一個(gè)注冊(cè)動(dòng)作: [12] ◆ 客戶端 : 客戶端向服務(wù)器請(qǐng)求建立連接。 當(dāng)服務(wù)器發(fā)現(xiàn)注冊(cè)用戶選擇的用戶名已經(jīng)存在 , 服務(wù)器將會(huì)把該錯(cuò)誤信息發(fā)回給客戶端 , 提醒用戶重新選擇用戶名進(jìn)行注冊(cè)。 XMPP 客戶端的主要功能 用戶注冊(cè)服務(wù)設(shè)計(jì) 用戶注冊(cè)服務(wù)負(fù)責(zé)新用戶的注冊(cè)處理。對(duì)話結(jié)束后 , 用戶向服務(wù)器提出退出系統(tǒng)的申請(qǐng) , 連接和會(huì)話關(guān)閉 [18]。 根據(jù) XML 流中的不同名字空間,調(diào)用不同的處理模塊 接收 XML 流 解釋 XML 流 驗(yàn)證 好友列表 查找好友 添加好友 刪除好友 查看即時(shí)消息 上下線通知 圖 9 XMPP 客戶端各項(xiàng)服務(wù)響應(yīng)流程圖 23 5 XMPP 客戶端的詳細(xì)設(shè)計(jì) XMPP 客戶端 總體通訊流程 XMPP 協(xié)議所開(kāi)發(fā)的即時(shí)通訊客戶端軟件與服務(wù)器間的 XML通訊流程為 :客戶端連接服務(wù)器返回連接成功信息 , 表明用戶成功登錄。 如圖 8 所示: XMPP 客戶端各項(xiàng)服務(wù)響應(yīng) 登錄之后的所有響應(yīng)由相應(yīng)模塊處理 , 解析從服務(wù)器接收到的 XML 流 , 同時(shí)顯示相應(yīng)的消息和信息提示 ,實(shí)現(xiàn)查看即時(shí)消息、好友列表顯示、好友上下線通知 。 表 2 描述了與用戶交互直接相關(guān)的幾個(gè)方法接口 。 (5)應(yīng)用 編程 接口: 這里為 Smack API, 主要是對(duì)協(xié)議層的模塊內(nèi)容進(jìn)行了封裝 , 交互界面通過(guò)應(yīng)用程序接口統(tǒng)一調(diào)用。 如下圖 7 所示: 表 2 部分方法接口的說(shuō)明 類 (方法 ) 描述 Connection 類 實(shí)現(xiàn)用戶登錄 Chat 類 實(shí)現(xiàn)消息通訊 sendMessage 方法 實(shí)現(xiàn)發(fā)送信息 PacketListener 接口 實(shí)現(xiàn)信息的監(jiān)聽(tīng)與接收 PacketFilter 接口 實(shí)現(xiàn)攔截服務(wù)器發(fā)來(lái)的消息包 createAccount 方法 實(shí)現(xiàn)用戶注冊(cè) createEntry 方法 實(shí)現(xiàn)添加好友 removeEntry 方法 實(shí)現(xiàn)刪除好友 Presence 類 實(shí)現(xiàn)對(duì)好友狀態(tài)的訂閱 RosterListener 接口 實(shí)現(xiàn)對(duì)好友花名冊(cè)的監(jiān)聽(tīng) getRoster 方法 實(shí)現(xiàn)獲取好友花名冊(cè) disConnnection 方法 實(shí)現(xiàn)用戶登出 (4)XML 解析模塊 : 圖 7 XMPP 客戶端分層模塊 XMPP 功能模塊 用戶登錄 信息收發(fā) 用戶 注冊(cè) 好友列表 TLS 加密 SASL 驗(yàn)證 狀態(tài)訂閱 接收信息 發(fā)送信息 添加好友 刪除好友 發(fā)送狀態(tài)改變 接收好友更新 21 由于協(xié)議的通訊內(nèi)容都是由 XML 流來(lái)承載 , 因此在客戶端與服務(wù)器的交互中需要 XML 解析模塊的參與。XMPP 協(xié)議模塊主要負(fù)責(zé)通訊協(xié)議的實(shí)現(xiàn)和管理 , XML 解析模塊主要負(fù)責(zé)對(duì) XML 流XMPP 客戶端后臺(tái) XMPP 客戶端前臺(tái) 用戶接口 Smack 應(yīng)用 程序 接口 圖 6 XMPP客戶端的層次結(jié)構(gòu)圖 20 的內(nèi)容進(jìn)行編解碼。 (2)后臺(tái): 后臺(tái)主要負(fù)責(zé)系統(tǒng)進(jìn)程的管理和通訊模塊及功能模塊。 (1)前臺(tái): 前臺(tái)部分主要負(fù)責(zé)系 統(tǒng)與用戶之間的交互 , 包括接收用戶請(qǐng)求和顯示系統(tǒng)響應(yīng)結(jié)果兩個(gè)部分。 XMPP 客戶端 總體架構(gòu) XMPP 客戶端的分層架構(gòu) 本客戶端是基于 Smack API 進(jìn)行開(kāi)發(fā)的 , 其層次結(jié)構(gòu)圖 如下圖 6, 是工作于 Smack之上的。網(wǎng)關(guān)承擔(dān)著與異構(gòu)即時(shí)通信系統(tǒng)的互聯(lián) 互通 , 異構(gòu)系統(tǒng)可以包括 SMS, MSN,ICQ 等。 XMPP 客戶端 新用戶注冊(cè) 添加刪除好友 接收發(fā)送信息 安全退出系統(tǒng) 狀態(tài)變更通知 好友列表獲取 用戶登錄驗(yàn)證 圖 5 XMPP 客戶端功能圖 19 XMPP 客戶端的總體框架設(shè)計(jì) 根據(jù) 前面介紹的 XMPP 的基本網(wǎng)絡(luò)結(jié)構(gòu) (客戶端、服務(wù)器、網(wǎng)關(guān) ), 本 XMPP 客戶端是作為圖 2 中的客戶端的角色出現(xiàn)的 , XMPP 系統(tǒng)在設(shè)計(jì)上基本沿襲了 EMAIL 消息系統(tǒng)的結(jié)構(gòu)框架。 (6)接收發(fā)送消息 :這是客戶端的最主要功能 , 用戶可以向制定的好友發(fā)送消息也可以從好友出接收消息。 (4)狀態(tài)變更通知 :用戶可以將自己的實(shí)際狀態(tài) (在線、離線等 )通知好友 , 也可以接收好友的在線狀態(tài)。 (2)用戶驗(yàn)證登錄 :用戶在與好友進(jìn)行交流前登錄服務(wù)器并完成安全驗(yàn)證。如下圖 5 所示。因此在系統(tǒng)的設(shè)計(jì)過(guò)程中 , 包括系統(tǒng)安全 , 用戶安全和消息秘密性安全都是要考慮的因素。如何穿越帶 NAT 的防火墻也是系統(tǒng)所要考慮的一個(gè)重要問(wèn)題。這樣就要求軟件要有良好的可擴(kuò)展性 , 便于進(jìn)行二次開(kāi)發(fā)??蛻舳塑浖粌H要完成 XMPP 協(xié)議所規(guī)定通訊功能 , 還要能夠于 與外部網(wǎng) XMPP 服務(wù)器 進(jìn)行通訊 , 并且在今后的發(fā)展中還要力爭(zhēng)與更多開(kāi)放的即時(shí)通訊軟件實(shí)現(xiàn)互通。由于 XMPP 協(xié)議本身并不依賴于任何已有的平臺(tái) (如體系結(jié)構(gòu)、操作系統(tǒng)、網(wǎng)絡(luò)通訊協(xié)議等 ), 所以在此基礎(chǔ)上開(kāi)發(fā)的客戶端可以具有良好的平臺(tái)獨(dú)立性。 16 從圖上可以了解到, XMPP 客戶端、 OpenFire 服務(wù)器 端 和 Smack 開(kāi)發(fā)包是運(yùn)行于XMPP 協(xié)議之上的,而 Smack 是 XMPP 客戶端與 OpenFire 服務(wù)器 二者 之間 傳遞數(shù)據(jù)的媒介 。 (“mtucker”, “password”)。 可以把它用于你的商業(yè)或非商業(yè)應(yīng)用程序。給用戶 發(fā)送信息只需三行代碼便可完成 : (2)不會(huì)強(qiáng)迫你向其他類庫(kù)那樣 , 在信息包層面進(jìn)行編碼。在測(cè)試環(huán)境下可以支持 5000用戶同時(shí)在線 , 每秒可以轉(zhuǎn)發(fā) 2020 個(gè)包 ; (4)OpenFire 安裝和使用都非常簡(jiǎn)單。 選擇 OpenFire 作為業(yè)務(wù)服務(wù)器是因?yàn)槠渥陨淼闹T多優(yōu)點(diǎn) : (1)OpenFire 內(nèi)部集成 ResinWeb 服務(wù)器 , 可以設(shè)計(jì)基于 Web 的管理程序 ; (2)實(shí)現(xiàn)了插件機(jī)制 , 方便擴(kuò)展。 15 3 基于 XMPP 的 OpenFire(服務(wù)端 )及 Smack(開(kāi)發(fā)包 )簡(jiǎn)介 OpenFire OpenFire(原名 Wildfire)是由 Java 語(yǔ)言編寫(xiě)的、基 于 XMPP(Jabber)協(xié)議的、開(kāi)源的實(shí)時(shí)協(xié)作 (RTC)服務(wù)器 , 具有跨平臺(tái)能力。 TLS 加密協(xié)議基于對(duì)稱密鑰算法和公鑰加密算法。 (2)數(shù)據(jù)加密與簽名協(xié)議 由于密碼和用戶名等重要的 信息 , 多采用明文方式傳送 , 易被竊聽(tīng)。初始實(shí)體靠發(fā)送 abort/元素終止交換。初始實(shí)體從列表中選擇一個(gè)方法并把mechanism 屬性值發(fā)送給接收實(shí)體 , 此屬性被 auth/元素?fù)碛校? iq type=?result?to=?me ?from=?qhg ? query xmlns=?my:query:namespace? namefirstBob/namefirst namelastSmith/namelast / /query query xmlns=?my:query:namespace? namefirstBob/namefirst namelastDoe/namelast / /query /iq iq type=?get?to=??from=?me ? query xmlns=”my:query:namespace” namef
點(diǎn)擊復(fù)制文檔內(nèi)容
研究報(bào)告相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1