• <tr id="yyy80"></tr>
  • <sup id="yyy80"></sup>
  • <tfoot id="yyy80"><noscript id="yyy80"></noscript></tfoot>
  • 99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

    基于XMPP的即時(shí)通訊系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)

    2017-09-03 10:13:56程化梅
    電子設(shè)計(jì)工程 2017年15期
    關(guān)鍵詞:聊天記錄即時(shí)通訊好友

    程化梅

    (武漢郵電科學(xué)研究院 湖北 武漢430000)

    基于XMPP的即時(shí)通訊系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)

    程化梅

    (武漢郵電科學(xué)研究院 湖北 武漢430000)

    在信息時(shí)代,通訊成為人們?nèi)粘I畋夭豢缮俚闹匾M成部分,而科技的發(fā)展也使我們的通訊方式變得越來越簡單和普及,給我們的生活帶來了巨大的方便。本文首先介紹了XMPP協(xié)議的工作原理,并且說明了其優(yōu)勢,然后給出了一套基于XMPP的即時(shí)通訊系統(tǒng)設(shè)計(jì)方案,將其部署在MySql數(shù)據(jù)庫下,以java為編程語言,實(shí)現(xiàn)了即時(shí)通訊。經(jīng)測試,本系統(tǒng)實(shí)時(shí)性好、使用方便、穩(wěn)定性好,值得推廣使用。

    通訊系統(tǒng);XMPP;Java;數(shù)據(jù)庫

    在這個(gè)快節(jié)奏的時(shí)代,互聯(lián)網(wǎng)對(duì)人們的生活帶來了極大的便利,人們的交流方式不在局限于面對(duì)面的交談或者周期漫長的書信,通信方式越來越多樣化而且越來越簡單。即時(shí)通訊是隨著網(wǎng)絡(luò)技術(shù)的高速發(fā)展而興起的一種新的通訊方式,具有極強(qiáng)的實(shí)時(shí)性、非同步互聯(lián)網(wǎng)通訊作為通信的主流之一性、互動(dòng)性等特點(diǎn)。即時(shí)通訊無疑是在互聯(lián)網(wǎng)時(shí)代下最流行的通訊方式[1]。主流的即時(shí)通訊例如騰訊QQ、微信等,它們以即時(shí)、可靠、視頻通話、語音通話等特點(diǎn)而大受歡迎。

    目前,即時(shí)通訊的應(yīng)用十分普及,不僅有專門的聊天軟件供人們使用。甚至很多主流的手機(jī)APP都引入了即時(shí)通訊的功能,例如新浪微博、百度貼吧的私信,支付寶的聊天功能等。將通訊系統(tǒng)進(jìn)行拓展和引入新的業(yè)務(wù),或者把它嵌入到其它軟件系統(tǒng)中,已成為即時(shí)通訊軟件發(fā)展的新趨勢。因此,本文設(shè)計(jì)了一個(gè)基于XMPP協(xié)議的即時(shí)通訊系統(tǒng),該系統(tǒng)可以讓用戶之間進(jìn)行實(shí)時(shí)的聊天交流,使用起來十分簡單,實(shí)用性很強(qiáng)。

    1 XMPP協(xié)議

    XMPP是一種網(wǎng)絡(luò)即時(shí)通信協(xié)議,它的前身是Jabber協(xié)議。它是一種基于XML的協(xié)議,它繼承了XML協(xié)議的靈活性和擴(kuò)展性。因此,基于XMPP協(xié)議的應(yīng)用也具有極強(qiáng)的可擴(kuò)展性。經(jīng)過擴(kuò)展以后的XMPP可以通過發(fā)送擴(kuò)展的信息來處理用戶的需求。XMPP還包含了針對(duì)服務(wù)器端的軟件協(xié)議,使之能與另一個(gè)進(jìn)行通話,這使得開發(fā)者更容易建立客戶應(yīng)用程序或給一個(gè)配好系統(tǒng)添加功能。盡管XMPP并沒有指定任何特定的網(wǎng)絡(luò)架構(gòu),但通常情況下,它是采用客戶端-服務(wù)器的架構(gòu)進(jìn)行實(shí)現(xiàn),其中客戶端通過TCP方式使用XMPP訪問服務(wù)器,服務(wù)器之間也采用TCP方式進(jìn)行通信。也就是說在大多數(shù)情況下,當(dāng)兩個(gè)客戶端進(jìn)行通訊時(shí),它們之間的消息都是通過服務(wù)器傳遞的。采用這種架構(gòu)的目的,主要是為了簡化客戶端,將大多數(shù)工作放在服務(wù)器端進(jìn)行,這樣,客戶端的工作就會(huì)簡單很多。XMPP將復(fù)雜性從客戶端轉(zhuǎn)移到服務(wù)器端。這使得客戶端的程序編寫變得非常容易,更新系統(tǒng)功能也同樣變得容易。

    XMPP中定義了3種角色:XMPP客戶端,XMPP服務(wù)器和網(wǎng)關(guān)。通信能夠在這三者的任意兩個(gè)之間雙向發(fā)生。服務(wù)器同時(shí)承擔(dān)了客戶端信息記錄、連接管理和信息的路由功能。網(wǎng)關(guān)承擔(dān)著與異構(gòu)即時(shí)通信系統(tǒng)的互聯(lián)互通,異構(gòu)系統(tǒng)可以包括SMS(短信)、MSN、ICQ等。以下是XMPP架構(gòu)的抽象的示意圖(單向箭頭表示使用 XMPP通訊,雙向箭頭表示可使用任何協(xié)議通訊。)如圖1所示,其中Client1,Client2,Clinet3 是 XMPP 客戶端,Sever1,Sever2 是XMPP服務(wù)器,Gateway1是一個(gè)XMPP和外部(非XMPP)消息網(wǎng)絡(luò)之間進(jìn)行 “翻譯”的網(wǎng)關(guān),F(xiàn)oreignNet1是一個(gè)外部消息網(wǎng)絡(luò),F(xiàn)oreignClient1是外部消息網(wǎng)絡(luò)上的一個(gè)客戶端。

    圖1 XMPP的網(wǎng)絡(luò)架構(gòu)

    XMPP協(xié)議的通訊并非點(diǎn)對(duì)點(diǎn)的通訊,而是客戶端到服務(wù)器再到客戶端的方式,它們之間通信時(shí)傳輸?shù)氖荴ML文件,一個(gè)簡單的XMPP通訊流程可以歸納為:

    1)客戶端連接到服務(wù)器以后,客戶端通過IO流發(fā)送一段XML文件,文件中包含了客戶端的用戶名和密碼;

    2)服務(wù)器接收客戶端發(fā)來的XML文件,獲取其中的用戶名和密碼并對(duì)其進(jìn)行驗(yàn)證,若驗(yàn)證通過,服務(wù)器會(huì)給客戶端發(fā)送一個(gè)XML文件告知登錄成功;

    3)客戶端登錄成功后,會(huì)給服務(wù)器發(fā)送一個(gè)獲取好友名單的XML文件,服務(wù)器會(huì)以XML文件的形式發(fā)送給客戶端好友名單;

    4)客戶端可以向任意一個(gè)好友發(fā)送消息,客戶端發(fā)送的信息先發(fā)送到服務(wù)器,服務(wù)器再轉(zhuǎn)發(fā)給好友,好友即可收到。

    2 基于XMPP的即時(shí)通訊系統(tǒng)的研究與實(shí)現(xiàn)

    從目前已有的通訊系統(tǒng)來看,XMPP作為IM(Instent Messaging)即時(shí)通訊方面的成熟協(xié)議,已被FaceBook、Twitter、網(wǎng)易POPO等知名的通訊工具所應(yīng)用,并且具有非常好的發(fā)展前景[2]。XMPP協(xié)議是自由的、源碼開放的。服務(wù)器端有類似OpenFire這樣的開源項(xiàng)目,客戶端有smack等基于Java的軟件開源協(xié)議包,開發(fā)人員可以直接使用這些開源工程,在必要時(shí)做一定的修改,這大大的減少了項(xiàng)目的開發(fā)難度。

    文中研究的是在Android使用XMPP協(xié)議進(jìn)行即時(shí)通信,所涉及3個(gè)主要的東西:OpenFire、Smack和spark,它們結(jié)合起來就是完整的XMPP即時(shí)通訊系統(tǒng)的實(shí)現(xiàn)[3]。這里簡單介紹一下它們作用:

    OpenFire主要是作為服務(wù)器,管理客戶端的通信連接,并提供客戶端一些通信信息和連接信息。

    Smack主要是對(duì)XMPP協(xié)議的實(shí)現(xiàn),它提供了一套API,所有實(shí)現(xiàn)XMPP的操作都是通過使用Smack的API來實(shí)現(xiàn),在Android里,使用的是Asmack這個(gè)包,這個(gè)包的作用與與Smack是相同的[4]。

    Spark是客戶端的實(shí)現(xiàn),它其實(shí)就是使用了Smack的API實(shí)現(xiàn)的。

    它們?nèi)咧g的關(guān)系如圖2所示。

    圖2 XMPP通訊系統(tǒng)的關(guān)系圖

    在本即時(shí)通訊系統(tǒng)的設(shè)計(jì)中,采用Java語言來編寫項(xiàng)目程序。Java是一門面向?qū)ο?、跨平臺(tái)的語言,其多線程與網(wǎng)絡(luò)編程機(jī)制是內(nèi)置的,在編寫完成后可以運(yùn)行在任何裝有Java虛擬機(jī)的平臺(tái)上,正是因?yàn)樗目缙脚_(tái)性,用Java語言編寫的項(xiàng)目也有了更強(qiáng)的可擴(kuò)展性[5]。

    2.1 數(shù)據(jù)庫

    即時(shí)通訊系統(tǒng)的數(shù)據(jù)庫至少要包括的數(shù)據(jù)表有,管理員表、用戶表、聊天記錄表、文件表等。數(shù)據(jù)庫的數(shù)據(jù)是根據(jù)實(shí)時(shí)的用戶信息而變化的,當(dāng)用戶數(shù)據(jù)發(fā)生了增刪改查時(shí),后臺(tái)也會(huì)對(duì)數(shù)據(jù)庫里的數(shù)據(jù)做出相應(yīng)的更改,例如新增好友時(shí),用戶的好友表也會(huì)新增一條數(shù)據(jù)。由于Java是通過JDBC以統(tǒng)一的接口訪問和操作各種數(shù)據(jù)庫系統(tǒng)的,而且支持的數(shù)據(jù)庫系統(tǒng)種類非常多,MySql、Oracle、SQL Server等主流數(shù)據(jù)庫應(yīng)用都十分廣泛[6],功能也十分強(qiáng)大,優(yōu)點(diǎn)也各不相同。本系統(tǒng)采用的是MySql數(shù)據(jù)庫,MySql的核心程序采用完全的多線程編程。線程是輕量級(jí)的進(jìn)程,它可以靈活地為用戶提供服務(wù),而不過多的占用系統(tǒng)資源。

    2.2 服務(wù)端

    在使用XMPP協(xié)議的即時(shí)通訊系統(tǒng)中,服務(wù)器充當(dāng)?shù)氖荴MPP通信的一個(gè)智能抽象層[7],它主要負(fù)責(zé)對(duì)受驗(yàn)證的客戶端,服務(wù)器以及其他實(shí)體之間以XML流形式的連接和會(huì)話進(jìn)行管理。并在這些實(shí)體之間使用XML流對(duì)合理編址的XML節(jié)進(jìn)行路由管理。大部分XMPP兼容的服務(wù)器也負(fù)責(zé)存儲(chǔ)客戶端使用的數(shù)據(jù)[8](比如基于XMPP協(xié)議的及時(shí)消息中的聯(lián)系人名單),那么此時(shí),XML數(shù)據(jù)直接由服務(wù)器來處理,而不需要轉(zhuǎn)發(fā)到其他的實(shí)體。

    服務(wù)端應(yīng)該包括的主要功能有:賬戶管理(注冊(cè)、登錄、注銷)、好友管理(新增好友、刪除好友)、消息管理等[9]。

    下面是完成于Openfire服務(wù)器的連接和設(shè)置一些配置的代碼:

    2.3 客戶端

    大部分客戶端是通過TCP連接直接連接到服務(wù)器的[10],并且通過XMPP獲得由服務(wù)器以及聯(lián)合服務(wù)器所提供的全部功能。多個(gè)不同資源(比如不同的設(shè)備和地點(diǎn))的客戶端可以同時(shí)登陸并且并發(fā)的連接到一個(gè)服務(wù)器[11],每個(gè)不同資源的客戶端通過XMPP地址的資源標(biāo)識(shí)符來區(qū)分。XMPP客戶端與服務(wù)端通過XML在TCP套接字的5222端口進(jìn)行通信,而不需要客戶端之間直接進(jìn)行通信[12]。

    客戶端的核心功能包括賬號(hào)管理:注冊(cè)、登陸、退出、用戶信息管理,好友管理:增加、刪除好友、更改昵稱、備注好友,聊天管理:聊天、聊天記錄存儲(chǔ)。做客戶端的賬號(hào)管理部分時(shí),首先最重要的是登錄模塊,登錄的安全性決定了整個(gè)系統(tǒng)的價(jià)值。系統(tǒng)對(duì)登錄的賬號(hào)和密碼做出判斷,只有在本系統(tǒng)上注冊(cè)過得用戶才可以登錄該通訊系統(tǒng),用戶或者密碼不匹配的用戶無法進(jìn)行后續(xù)的操作,這保障了該通訊系統(tǒng)的安全性。并且普通用戶登錄后進(jìn)入的界面和管理員的界面是不同的,他們都有各自能使用的功能和權(quán)限[13]。在好友管理模塊,用戶可以對(duì)自己的好友修改備注名,這樣即使用戶的好友們更改了自己的昵稱,或者不同的好友恰好使用了相同的昵稱時(shí),用戶可以根據(jù)自己修改的備注名直接找到自己想聊天的好友,而系統(tǒng)也不需要把用戶昵稱作為用戶的唯一標(biāo)識(shí)了。最后,在聊天管理模塊,用戶點(diǎn)擊一位好友頭像就可以和自己的任何一位好友發(fā)起一個(gè)聊天會(huì)話,他們的聊天記錄也保存在這個(gè)會(huì)話中,這樣一來,用戶和每一位好友的聊天記錄都保存在他們彼此的會(huì)話里,用戶與每位好友的聊天記錄都是單獨(dú)的,當(dāng)其中一方刪除了聊天記錄以后,數(shù)據(jù)庫的記錄并不會(huì)刪除,所以另一方的聊天記錄也是存在的,這樣聊天管理起來也會(huì)變得十分簡單和方便。

    如圖3所示是一個(gè)聊天的頁面。

    3 系統(tǒng)測試

    本次系統(tǒng)測試從普通用戶和管理員兩個(gè)不同的方面對(duì)所有涉及到的功能模塊進(jìn)行了測試,以保證順利走通每一個(gè)流程。首先從用戶這一方進(jìn)行測試,測試用戶的注冊(cè)登錄功能,確保用戶的權(quán)限安全性,比如注冊(cè)時(shí),后臺(tái)驗(yàn)證該賬號(hào)是否已被注冊(cè),登錄時(shí)后臺(tái)驗(yàn)證賬號(hào)密碼是否匹配,若已經(jīng)登錄則保存在一個(gè)session會(huì)話中[14],在規(guī)定時(shí)間內(nèi)不需要重新登錄。其次就是驗(yàn)證處理信息的準(zhǔn)確性,例如實(shí)時(shí)的收發(fā)消息,根據(jù)賬號(hào)精確找到相應(yīng)用戶來添加好友、刪除好友時(shí)解除好友關(guān)系以及會(huì)話權(quán)限。其次,從管理員這一方進(jìn)行測試,測試管理員的權(quán)限,登錄時(shí)后臺(tái)要判斷是管理員還是普通用戶,管理普通用戶的信息,除了用戶可以更改自己的信息以外,管理員也有權(quán)限更改用戶的一些信息,例如禁止用戶發(fā)言或者禁用用戶的賬號(hào)。最后是對(duì)一些非常規(guī)操作的測試,用戶甲刪除了好友乙以后,乙的好友列表里也不再有張三這位好友,這樣做的優(yōu)點(diǎn)是,當(dāng)甲刪除乙以后,甲沒有和乙會(huì)話的權(quán)限,而乙的好友里沒有甲以后,乙也就無法向甲發(fā)起一個(gè)會(huì)話,避免了這種無效會(huì)話的產(chǎn)生。依據(jù)最后的測試結(jié)果表明,本系統(tǒng)滿足實(shí)時(shí)、方便、安全、穩(wěn)定的特性,達(dá)到了設(shè)計(jì)的目的。

    圖3 用戶的聊天記錄截圖

    4 結(jié)束語

    文中主要介紹了一個(gè)基于XMPP協(xié)議的即時(shí)通訊系統(tǒng)的設(shè)計(jì)和實(shí)現(xiàn),并從幾個(gè)主要的模塊進(jìn)行了講解。經(jīng)過系統(tǒng)的測試證實(shí),本系統(tǒng)可以用于即時(shí)通訊,并且穩(wěn)定性較好,操作方便。同時(shí)由于Java語言面向?qū)ο蟮奶匦裕?dāng)增加或修改功能時(shí),都不需要對(duì)原系統(tǒng)進(jìn)行大量的修改。而XMPP的典型的C/S架構(gòu),簡化了客戶端,將大多數(shù)工作放在服務(wù)器端進(jìn)行,當(dāng)增加功能時(shí),多數(shù)是在服務(wù)器端進(jìn)行[15]。從而使所開發(fā)的軟件結(jié)構(gòu)合理,軟件重用性好、易于維護(hù)與擴(kuò)充。

    [1]李銳.淺談即時(shí)通訊工具現(xiàn)狀及其發(fā)展趨勢[J].中國科技信息, 2013(16):86.

    [2]張逸炎,任品毅,李凡.移動(dòng)終端即時(shí)消息推送系統(tǒng)的應(yīng)用開發(fā)[C].第十七屆全國青年通信學(xué)術(shù)年會(huì)論文集,2012.

    [3]李立亞,徐榮,潘曉燕.即時(shí)通信軟件用戶狀態(tài)管理策略與方法[J].電腦編程技巧與維護(hù),2011(10):96-98.

    [4]白鶴,歐陽峰,趙明,等.基于Jabber/XMPP擴(kuò)展協(xié)議的文件共享發(fā)布系統(tǒng) [J].廣播與電視技術(shù).2012(5):15,44-47.

    [5]張藝.基于WebSocket的即時(shí)通信系統(tǒng)研究與實(shí)現(xiàn)[J].軟件, 2015(3):89-94.

    [6]張建平.基于Android校園即時(shí)信息系統(tǒng)研究[J].電子設(shè)計(jì)工程,2013(20):117-120.

    [7]黃偉敏.基于XMPP協(xié)議的Android即時(shí)通信系統(tǒng)設(shè)計(jì)[J].電子設(shè)計(jì)工程,2011(8):57-59.

    [8]錢海鋼.基于即時(shí)通信技術(shù)的圖書預(yù)約系統(tǒng)[J].科技情報(bào)開發(fā)與經(jīng)濟(jì),2013(16):18-21.

    [9]林妍.局域網(wǎng)內(nèi)即時(shí)通訊系統(tǒng)的設(shè)計(jì) [J].中國新通信, 2013(12):8,13.

    [10]李光明.應(yīng)用SOCKET實(shí)現(xiàn)網(wǎng)絡(luò)通信[J].煤炭技術(shù), 2012(3):88-90.

    [11]謝智明.JAVA語言SOCKET機(jī)制的研究[J].湖南科技學(xué)院學(xué)報(bào), 2011(4):70-72.

    [12]諶頏.一種多功能網(wǎng)絡(luò)即時(shí)通訊系統(tǒng)的設(shè)計(jì)[J].網(wǎng)絡(luò)安全技術(shù)與應(yīng)用, 2014(11):62,65.

    [13]鐘桂鳳.基于Android平臺(tái)的食譜資訊管理系統(tǒng)的分析設(shè)計(jì)[J].技術(shù)與市場, 2014(12):34-35,38.

    [14]張沖,劉涌,楊海波,等.移動(dòng)社交網(wǎng)絡(luò)實(shí)時(shí)通信機(jī)制的研究[J].計(jì)算機(jī)系統(tǒng)應(yīng)用,2014(2):205-208.

    [15]李新路.XMPP協(xié)議在Android即時(shí)通訊系統(tǒng)中的應(yīng)用[J].電腦知識(shí)與技術(shù),2013(28):6268-6270.

    Design and implementation of instant communication system based on XMPP

    CHENG Hua-mei
    (Wuhan Research Institute of Posts and Telecommunications,Wuhan 430000,China)

    In information age,communication has became a necessary part of our life,however the development of technology makes our ways of communication easier and universal,the Internet as one ofthe most popular communications has brought great convenience to our life.This paper at first introduces the principle of XMPP protocol,and gives a design of instant communication based on XMPP, deploys it in MySQL database, with java programming language, and achieve instant messaging.Through the test , it is concluded that the system has the feature of real-time, easy to use, good stability,and should be introduced.

    communication system;XMPP;Java;database

    TN914

    :A

    :1674-6236(2017)15-0162-04

    2016-08-04稿件編號(hào):201608030

    程化梅(1991—),女,湖北天門人,碩士研究生。研究方向:通信與信息系統(tǒng)、互聯(lián)網(wǎng)。

    猜你喜歡
    聊天記錄即時(shí)通訊好友
    儲(chǔ)存聊天記錄用掉兩個(gè)半三峽水電站電量
    軍事文摘(2022年16期)2022-08-24 01:51:22
    屬羊
    民事訴訟中即時(shí)通訊記錄的證據(jù)采用進(jìn)路
    刪除好友
    雜文月刊(2017年20期)2017-11-13 02:25:06
    即時(shí)通訊軟件發(fā)展模型的實(shí)證研究
    東方教育(2016年19期)2017-01-16 12:34:53
    科學(xué)技術(shù)哲學(xué)視域下的即時(shí)通訊
    科技傳播(2015年14期)2015-12-13 04:20:18
    即時(shí)通訊軟件WhatsApp
    CHIP新電腦(2015年10期)2015-10-15 18:03:55
    無損遷移微信聊天記錄
    電腦迷(2015年7期)2015-05-30 04:50:35
    恢復(fù)iPhone誤刪的微信記錄
    電腦迷(2014年20期)2014-04-29 18:09:00
    輕松實(shí)現(xiàn)移動(dòng)端QQ聊天記錄漫游
    電腦迷(2013年8期)2013-04-29 00:44:03
    涪陵区| 大邑县| 青铜峡市| 盐边县| 马关县| 津南区| 新田县| 柏乡县| 浮山县| 九龙县| 新安县| 镇安县| 吉林省| 太和县| 玛纳斯县| 德安县| 雅江县| 卫辉市| 洛南县| 上栗县| 三河市| 库伦旗| 青浦区| 虞城县| 弋阳县| 康马县| 永寿县| 清涧县| 双流县| 海盐县| 兴山县| 广丰县| 沈丘县| 青河县| 滨州市| 西丰县| 上饶市| 平果县| 香河县| 界首市| 同江市|