楊瑩
[摘 要]本文在開源服務(wù)器軟件 Openfire 及和 Android 平臺上設(shè)計了基于XMPP 協(xié)議的即時通信系統(tǒng);實現(xiàn)了即時通訊、好友添加、圖片瀏覽、音樂播放、好友瀏覽等基本功能。所實現(xiàn)的系統(tǒng)功能完善,可為個人或企業(yè)搭建自己的即時通信系統(tǒng),用于解決內(nèi)部數(shù)據(jù)傳輸安全,實現(xiàn)了與其他通信系統(tǒng)互通等問題提出了可行性高的解決方案。
[關(guān)鍵詞]Android平臺,XMPP 通信協(xié)議,Openfire服務(wù)器,即時通信系統(tǒng)
中圖分類號:TP311.52 文獻標(biāo)識碼:A 文章編號:1009-914X(2016)02-0179-03
引言
21世紀,即時通信系統(tǒng)作為一種新興的技術(shù)獲得了突飛猛進的發(fā)展。即時通信(IM,Instant Messaging)是一種基于現(xiàn)代計算機網(wǎng)絡(luò)通信技術(shù)的能夠即時發(fā)送和接收互聯(lián)網(wǎng)消息的交互方式。用戶可以通過 Android 平臺支撐的即時通信系統(tǒng)軟件實現(xiàn)不同手機用戶之間以及手機與電腦網(wǎng)絡(luò)之間的視頻、音頻和文字等各種信息的即時交互通訊,以及移動終端之間點對點的信息交流與各種數(shù)據(jù)交換。
這些IM 系統(tǒng)豐富了我們的生活,給普通用戶之間的低費用通訊帶來了極大方便,但同時帶來了新的技術(shù)和保密問題。XMPP 協(xié)議是開源協(xié)議,具有超強的擴展性和靈活性,也有成本低、研究和實現(xiàn)方便等優(yōu)勢,因而,對 XMPP 協(xié)議在該領(lǐng)域的研究有利于降低移動平臺IM 實現(xiàn)的難度,為有類似需求的中小型企業(yè)提供一個低成本的解決方案。為此,本文中采用XMPP協(xié)議實現(xiàn)移動平臺系統(tǒng),以滿足產(chǎn)品自身的需要。
1 系統(tǒng)開發(fā)關(guān)鍵技術(shù)分析
1. Android平臺架構(gòu)分析
Android一詞的本義指“機器人”,是一個移動設(shè)備的軟件平臺。它提供包括:SDK、Key Apps、Middleware、Linux Kernel四個部分在內(nèi)的開源手機操作系統(tǒng)。它開放了基于內(nèi)核以上的開發(fā)工具,從而保證了內(nèi)容的可移植性和多樣性,為系統(tǒng)開發(fā)者開發(fā)應(yīng)用程序提供了一套很好的框架,用戶可以在這個平臺的基礎(chǔ)上開發(fā)不同的應(yīng)用程序,也可以開發(fā)新的組件供應(yīng)用程序調(diào)用。
1.1 Android 系統(tǒng)層次結(jié)構(gòu)
如圖1所示,Android的架構(gòu)是由:Linux內(nèi)核、/C++函數(shù)庫、Dalvik虛擬機、應(yīng)用框架以及關(guān)鍵應(yīng)用程序構(gòu)成的,通過編譯基于框架的應(yīng)用程序可以降低開發(fā)負荷應(yīng)用軟件原則上是在Dalvik VM上運行的。
1).關(guān)鍵應(yīng)用程序
Android平臺內(nèi)包含一些關(guān)鍵應(yīng)用程序,如:郵件收發(fā)客戶端程序、短信收發(fā)程序、日歷和網(wǎng)頁瀏覽器等。
2)應(yīng)用程序框架
Android應(yīng)用程序的開發(fā)基于框架和組件。Android本身己在其框架中提高了許多的組件供應(yīng)用程序調(diào)用,當(dāng)然開發(fā)者也開放新的組件,并將組件放入應(yīng)用程序框架中,以供自己和其它應(yīng)用程序調(diào)用。
3)C/C++函數(shù)庫
Android應(yīng)用程序框架之下是一套C/C++函數(shù)庫,它們服務(wù)于Andrei應(yīng)用程序組件,其功能通過組件間接提供給開發(fā)者。
4)Java程序運行環(huán)境
Android的Java程序運行環(huán)境包含一組Java核心函數(shù)庫及Dalvik虛擬機,它們有效地優(yōu)化了Java程序的運行過程。
5)Linux內(nèi)核
Android系統(tǒng)平臺是基于優(yōu)化了的Linux內(nèi)核,是其系統(tǒng)平臺的核心。它提供諸如內(nèi)存管理、進程管理、設(shè)備驅(qū)動等服務(wù),同時也是手機軟硬件的連接層,提供了一個屏蔽層用于屏蔽硬件和上層軟件。
1.2 Android應(yīng)用的構(gòu)成和工作機制
對于一個Android應(yīng)用程序來說,是由Activity、IntentReceiver、Serviee、ContentProvider四部分組成,但并不是每一個Android應(yīng)用程序都必須由這四部分組成。在應(yīng)用程序中使用時,需要在配置文件AndroidMainfest.xd中進行配置,這個配置文件是每個Android應(yīng)用程序所必需的,用于定義應(yīng)用程序的組件、組件的功能以及必要條件等,其中:
1) Activity組件,主要負責(zé)創(chuàng)建與用戶進行交互的顯示窗口,用戶可以在這些窗口里通過調(diào)用SetContentView(View)方法來顯示其用戶界面;
2) IntentReceive組件,用于對外部事件的響應(yīng),當(dāng)外部事件發(fā)生時,會使用NotifieationManager通知用戶。如在本系統(tǒng)中,當(dāng)用戶正在其它界面進行操作時,有好友發(fā)送消息過來,就會以通知的形式發(fā)送到當(dāng)前界面的正上方來通知用戶。
3) Service組件是不帶UI提供連續(xù)信息的應(yīng)用程序。本系統(tǒng)客戶端擴展功能的音樂播放就是采用Service來進行設(shè)計和開發(fā)的,使用戶可以邊聊天邊聽音樂。
4) ContentProvider應(yīng)用程序組件能夠?qū)⑺鼈兊臄?shù)據(jù)保存到文件、SQL數(shù)據(jù)庫和其它的存儲設(shè)備中。使用ContentProvider能夠靈活的替換底層使用的存儲設(shè)備,使開發(fā)者可以專著于應(yīng)用邏輯的開發(fā),不用考慮底層存儲設(shè)備的細節(jié),從而使應(yīng)用系統(tǒng)具有良好的數(shù)據(jù)遷移性。
2 XMPP 協(xié)議基礎(chǔ)
XMPP協(xié)議(Extensible Messaging and Presence Protocol,可擴展消息處理現(xiàn)場協(xié)議)是一種基于XML的協(xié)議,目的是為了解決及時通信標(biāo)準(zhǔn)而提出來的。它繼承了在XML環(huán)境中靈活的發(fā)展性,因此,基于XMPP的應(yīng)用具有超強的可擴展性。經(jīng)過擴展以后的XMPP可以通過發(fā)送擴展的信息來處理用戶的需求,以及在XMPP的頂端建立如內(nèi)容發(fā)布系統(tǒng)和基于地址的服務(wù)等應(yīng)用程序。而且,XMPP包含了針對服務(wù)器端的軟件協(xié)議,使之能與另一個進行通話,這使得開發(fā)者更容易建立客戶應(yīng)用程序或給一個配好系統(tǒng)添加功能。
XMPP中定義了三個角色:客戶端、服務(wù)器、網(wǎng)關(guān)。通信能夠在這三者的任意兩個之間雙向發(fā)生。服務(wù)器同時承擔(dān)了客戶端信息記錄,連接管理和信息的路由功能。網(wǎng)關(guān)承擔(dān)著與異構(gòu)即時通信系統(tǒng)的互聯(lián)互通,異構(gòu)系統(tǒng)可以包括SMS(短信),MSN,ICQ等?;镜木W(wǎng)絡(luò)形式是單客戶端通過TCP/IP連接到單服務(wù)器,然后在之上傳輸XML。
XMPP的基本網(wǎng)絡(luò)結(jié)構(gòu)如下:
C1----S1---S2---C3
C2----+--G1===FN1===FC1
符號表示:C1,C2,C3=XMPP客戶端;S1,S2=XMPP;服務(wù)端G1=在XMPP和使用外部消息網(wǎng)絡(luò)(非XMPP)的協(xié)議之間轉(zhuǎn)換的網(wǎng);FN1=外部消息網(wǎng)絡(luò);FC1=外部消息網(wǎng)絡(luò)的客戶端。
1)服務(wù)器
服務(wù)系統(tǒng)是XMPP通信的智能提取層,它主要負責(zé):管理來自其他個體的會話連接或者XML流(streams)和來自客戶端、服務(wù)器、其他個體的認證發(fā)送在XML流實體之中的適當(dāng)?shù)腦ML地址節(jié)點。
2)客戶端
大多數(shù)客戶端是通過TCP直接連接,并且使用XMPP獲得服務(wù)器提供全部Jabber協(xié)議原理及其應(yīng)用功能和其他服務(wù)。
3)網(wǎng)關(guān)
它的主要功能是將XMPP協(xié)議轉(zhuǎn)換成外部消息(non-XMPP)系統(tǒng)使用的協(xié)議,也將返回的數(shù)據(jù)轉(zhuǎn)換成XMPP。這些通信是基于網(wǎng)關(guān)和服務(wù)器,基于網(wǎng)關(guān)和外部消息系統(tǒng)之間的。
3 基于Android平臺的即時通訊系統(tǒng)
本系統(tǒng)采用C/S體系結(jié)構(gòu)〕,采用開源的XMPP作為即時通訊協(xié)議,通過GPRS無線網(wǎng)絡(luò)采用TCP協(xié)議連接到服務(wù)器,通過架設(shè)開源的Openfire服務(wù)器作為即時通訊平臺,實現(xiàn)客戶端與客戶端之間的即時通訊。
3.1 系統(tǒng)概述
本文是在Android平臺上開發(fā)即時手機通訊系,它能夠使用戶在手機上方便的、迅捷的收發(fā)及時消息、傳輸圖片。此外,根據(jù)現(xiàn)今用戶對于即時通訊軟件的特殊要求,比如:在聊天的基礎(chǔ)之上還要有一些增值服務(wù)功能,以滿足不同用戶的需求。根據(jù)這些特點,本系統(tǒng)除了即時文本消息和圖片的傳輸外,還實現(xiàn)了音樂播放和圖片瀏覽的功能,讓用戶可以邊聊天邊聽音樂,可以對好友傳送過來的圖片隨時進行瀏覽,從而實現(xiàn)即時通訊系統(tǒng)的功能多樣化。
3.2 系統(tǒng)架構(gòu)
如圖3所示,本系統(tǒng)采用客戶端(C)/ 服務(wù)端(S)架構(gòu)的體系結(jié)構(gòu),具有服務(wù)器端和客戶端。
服務(wù)器端:采用基于XMPP協(xié)議的實時協(xié)作IM跨平臺服務(wù)器---開源的Openfire服務(wù)器,為提供客戶端進行會話連接、消息轉(zhuǎn)發(fā)、認證及后臺管理功能。
客戶端:用戶間的通訊是通過服務(wù)器的轉(zhuǎn)發(fā)來實現(xiàn)的,將信息打包成XML文件發(fā)送給服務(wù)器,然后服務(wù)器將其轉(zhuǎn)發(fā)給相應(yīng)的用戶。在Asmack庫的支持下,XMPP的客戶端的登錄,認證,消息收發(fā)等基本功能需要重寫相應(yīng)函數(shù),并調(diào)用相應(yīng)接口來實現(xiàn)。
客戶端采用MVC的軟件結(jié)構(gòu)。采用Android的XML文件對界面進行描述,作為視圖層,負責(zé)前臺界面的顯示;Android的Activity活動類承載了控制層的任務(wù),通過Activity進行邏輯業(yè)務(wù)處理;而對于數(shù)據(jù)庫和與服務(wù)器連接的操作則屬于Model層,該層在具體設(shè)計上則依賴于自定義的服務(wù)類。
4 本即時通訊系統(tǒng)的具體設(shè)計與實現(xiàn)
4.1 本系統(tǒng)主要界面
本系統(tǒng)為客戶端/服務(wù)器端的系統(tǒng)架構(gòu),服務(wù)器端由基于Jabber技術(shù)的開源服務(wù)器Openfire和MySQL數(shù)據(jù)庫共同構(gòu)成。其中,Openfire服務(wù)器負責(zé)處理所有用戶的請求、訪問數(shù)據(jù)庫和消息的傳遞;而客戶端是基于Andrnid平臺開發(fā)的,負責(zé)連接并登錄服務(wù)器,通過服務(wù)器來實現(xiàn)客戶端與客戶端或PC機客戶端之間的即時通訊。
1.Openfire服務(wù)器管理界面
如圖4所示,通過該管理界面,管理員可以方面的管理用戶的會話連接,服務(wù)器安全設(shè)置,以及用戶信息等。
2)用戶注冊登錄界面。
輸入用戶名密碼后點擊登錄,客戶端向服務(wù)器端發(fā)起login請求,登錄成功后,客戶端會將自己的Presence的狀態(tài)置為available并發(fā)送給服務(wù)器,表示當(dāng)前用戶在線。不當(dāng)對于登錄成功的用戶具有:瀏覽好友、圖片瀏覽、音樂播放及添加好友等功能模塊。
3)圖片瀏覽功能:在本模塊中,合法用戶不僅可以實現(xiàn)本地圖片的瀏覽功能,而且對于選中的圖片還可以實現(xiàn)圖片的自動縮放功能,以便于用戶更好地閱讀圖片。
4)音樂播放界面:音頻主界面主要是通過一個XML布局文件實現(xiàn)的,我們把它命名為music.xml,這里采用相對布局和線性布局相結(jié)合的方法。
5)即時通訊模塊
如圖5所示,本系統(tǒng)即時通訊模塊集成了與好友之間的各種通訊方式,有普通的文本通訊、文件傳輸、留言錄音通訊、語音通話功能。
4.2 文件傳輸模塊的具體實現(xiàn)
在本系統(tǒng)功能實現(xiàn)過程中涉及到的文件傳輸分為:發(fā)送端和接收端。發(fā)送端主要通過sendFile()進行文件的發(fā)送,兩個參數(shù)分別為path和msg,path代表文件路徑,而msg代表伴隨文件傳輸?shù)钠胀ㄎ谋拘畔?。Msg中包含著文件名、文件路徑等信息。然后創(chuàng)建FileTransferManager,并創(chuàng)建一個輸出文件TransFer,調(diào)用其sendFile方法將文件發(fā)送出去,同時啟動新線程用來對文件發(fā)送狀態(tài)進行更新。
文件接收端也是需要創(chuàng)建FileTransferManager,然后通過addFileTransferListener方法設(shè)置文件監(jiān)聽,當(dāng)有文件傳輸時,而且同意接收后,則通過IncomingFileTransfer來接收文件,并存入默認的目錄中去。
5 結(jié)論
本即時通訊系統(tǒng)主要來用C/S的軟件架構(gòu),并釆用XMPP協(xié)議作為即時通訊基本功能的通信協(xié)議,服務(wù)器端采用開源的Openfire服務(wù)器,客戶端釆用了基于Android的開發(fā)平臺。除了即時文本信息的傳輸外,還可以進行圖片的傳輸,將IDEA數(shù)據(jù)加密算法引入系統(tǒng)中,對系統(tǒng)的通訊信息進行加密處理,保證通訊數(shù)據(jù)的安全,并對系統(tǒng)客戶端的功能進行了擴展,增加了音樂的播放和圖片瀏覽的功能。
參考文獻
[1] 李新路.XMPP協(xié)議在Android即時通訊系統(tǒng)中的應(yīng)用[J].電腦知識與技術(shù),2013,(28)
[2] 羅偉.基于Android平臺的即時通訊系統(tǒng)的研究與實現(xiàn)[D].湖南師范大學(xué),2009
[3] 黃偉敏.基于XMPP協(xié)議的Android即時通信系統(tǒng)設(shè)計[J]電子設(shè)計工@,2011,19(8)
[4] 陳航,趙方.基于服務(wù)器推送技術(shù)和XMPP的Web IM系統(tǒng)實現(xiàn)[J].計算機工程與設(shè),2010,31(5)
[5] Matos V, Grasser R. Building applications for the Android OS mobile platform: a primer and course materials[J]. Journal of Computing Sciences in Colleges, 2010, 26(1): 23-29.
[6] 羅偉. 基于 Android 平臺的即時通訊系統(tǒng)的研究與實現(xiàn) [D][D]. 長沙: 湖南師范大學(xué), 2009.
[7] 孟賀. 基于 Android 的即時通訊系統(tǒng)的設(shè)計與實現(xiàn)[D]. 山東大學(xué), 2014.