基于局域網(wǎng)的手機即時通訊聊天軟件的設(shè)計與實現(xiàn)
引 言
隨著手機終端的普及和互聯(lián)網(wǎng)的發(fā)展,即時通訊軟件因其即時性、便利性在日常生活中占據(jù)著重要地位。局域網(wǎng)內(nèi), 因為不會產(chǎn)生流量資費,而且其本身的網(wǎng)絡(luò)條件也適合文件傳輸、音視頻傳輸?shù)却罅繑?shù)據(jù)的文件傳輸,因而可成為人們?nèi)粘Mㄓ嵵械闹匾緩?。并且可拓展到廣域網(wǎng)中,讓更多的人受益。
1 軟件系統(tǒng)整體結(jié)構(gòu)設(shè)計
根據(jù)手機用戶在局域網(wǎng)內(nèi)通過手機等無線終端進行即時通訊的需求,系統(tǒng)對即時通訊的常用功能進行實現(xiàn),包括用戶個人信息設(shè)置,添加、刪除、修改、分組等。
由于在局域網(wǎng)內(nèi),用戶對文件傳輸和語音等即時通訊需求更大,在無線局域網(wǎng)的網(wǎng)絡(luò)環(huán)境下,帶寬、傳輸速度和效率更高,更適合用來進行文件傳輸和語音的實時傳輸。
根據(jù)系統(tǒng)的不同功能,將系統(tǒng)分成兩大模塊 :文字語音聊天模塊和視頻聊天模塊。文字語音聊天模塊采用UDP 協(xié)議, 視頻聊天模塊采用TCP 協(xié)議,保證視頻圖像不會出現(xiàn)失幀的現(xiàn)象。圖 1 所示是該系統(tǒng)的結(jié)構(gòu)設(shè)計圖。
2 系統(tǒng)功能模塊設(shè)計
系統(tǒng)功能的設(shè)計,也就是即時通訊軟件即客戶端和服務(wù) 端的程序設(shè)計,在局域網(wǎng)下,分別對客戶端和服務(wù)器端進行 設(shè)計。
2.1 服務(wù)器端模塊設(shè)計
服務(wù)器的功能模塊主要負責(zé)建立監(jiān)聽、等待接收客戶端的鏈接請求、接收并建立新線程以響應(yīng)客戶端的請求。同時 根據(jù)請求類型決定是否需要訪問數(shù)據(jù)庫和對數(shù)據(jù)庫進行操作。 服務(wù)器端工作流程 :服務(wù)器啟動后,建立一個基于 TCP 的監(jiān) 聽進程,用于監(jiān)聽客戶端發(fā)送過來的各種請求。在接收到客 戶端的連接請求信息時,服務(wù)器會響應(yīng)連接,同時服務(wù)器會 建立一個新的線程,負責(zé)處理客戶端的各種請求信息。服務(wù) 器工作流程如圖 2 所示
2.2 客戶端模塊設(shè)計
客戶端的主要功能是與服務(wù)器端進行通訊,以及對數(shù)據(jù) 庫進行查詢、刪除、修改。 客戶端和服務(wù)器端通訊時創(chuàng)建三 個線程:一個線程負責(zé)信息的發(fā)送,一個線程負責(zé)信息的接收, 一個線程負責(zé)心跳信息的發(fā)送。其通訊流程圖如圖 3 所示。
客戶端采用 MVC 軟件開發(fā)結(jié)構(gòu),采用 Android 的 XML 文件對軟件界面進行描述。
(1)視圖層。主要是 Android 的 layout 中的 XML文件進行定義,該 XML文件用于定義并描述用戶界面,負責(zé)軟件界 面的顯示 ;
(2)控制層。Android 的 activity 活動類通過 Android 的 activity 進行邏輯處理,在 activity 里可以設(shè)置頁面事件的監(jiān) 聽響應(yīng),在 onCreate()方法里對主要邏輯進行處理 ;
(3)model 層。主要是關(guān)于服務(wù)器和客戶端進行連接并 對數(shù)據(jù)庫進行處理,對本地 SQLite 數(shù)據(jù)庫進行操作,把通訊 數(shù)據(jù)轉(zhuǎn)化成數(shù)據(jù)庫的相關(guān) SQL 存入數(shù)據(jù)庫,并封裝一些對數(shù) 據(jù)庫的查詢訪問,存儲個人信息及聊天信息。
文字語音聊天模塊采用點對點通信,使用 UDP 協(xié)議作為 文字語音信息的實時傳輸協(xié)議。UDP 協(xié)議占用資源更少,效 率更高,但是 UDP 協(xié)議是面向無連接的,所以傳輸質(zhì)量無法 保證。文字語音聊天流程圖如圖 4 所示。
視頻聊天模塊采用 TCP 協(xié)議,TCP 是一種面向連接的、 可靠的傳輸層協(xié)議,通過安卓手機自帶的前置攝像頭進行圖 像采集,采集的原始圖像數(shù)據(jù)轉(zhuǎn)換為 JPG 格式,轉(zhuǎn)化為數(shù)據(jù) 流發(fā)送給對方,并對數(shù)據(jù)進行還原,重繪成一幀一幀的圖像, 然后顯示出來。其視頻聊天流程圖如圖 5 所示。
2.3 客戶端數(shù)據(jù)庫設(shè)計
根據(jù)用戶需求,客戶端需要對一些數(shù)據(jù)進行本地存儲, 本軟件借助 Android 內(nèi)置的 SQLite 數(shù)據(jù)庫作為客戶端的數(shù) 據(jù)庫。SQLite 是一款輕型的數(shù)據(jù)庫,是遵守 ACID 的關(guān)系型 數(shù)據(jù)庫管理系統(tǒng),占用資源很低,能夠支持 Windows/Linux/ Unix 等操作系統(tǒng),可以和很多程序語言結(jié)合??蛻舳藬?shù)據(jù)庫 主要存儲用戶個人信息(見表 1 所列),圖像信息以及聊天信息 如表 2 所列。
(4)對軟件的客戶端和服務(wù)器端進行了設(shè)計和實現(xiàn)。
本文雖然設(shè)計實現(xiàn)了即時通訊功能,但對于視頻的傳輸簡化了設(shè)計,而且對于視頻的實時傳輸,未采用專業(yè)的流媒體服務(wù)器,以及在通訊加密方面還可以加強及優(yōu)化。