IM軟件在智能電話(huà)終端上的設計與實(shí)現
IM(Instant Messaging)軟件即即時(shí)消息傳遞軟件,它是目前網(wǎng)絡(luò )上比較流行的殺手級應用程序(Killer Application),如騰訊的QQ、Microsoft的MSN、AOL的AIM和ICQ等。無(wú)論在什么地方,使用何種設備(如PC、手機、PDA和Web TV等),只要接入Internet,就能夠同其他用戶(hù)進(jìn)行實(shí)時(shí)的消息和文件傳遞,甚至進(jìn)行語(yǔ)音和視頻交流。通過(guò)撥號接入Internet,就能在智能電話(huà)終端的原型機上實(shí)現基本的網(wǎng)絡(luò )功能,如瀏覽器、電子郵件等。如果能在智能電話(huà)終端上實(shí)現IM的客戶(hù)端軟件,用戶(hù)通過(guò)電話(huà)就可以進(jìn)行實(shí)時(shí)交談,進(jìn)而進(jìn)一步完善了其網(wǎng)絡(luò )功能,從而增強了該產(chǎn)品在市場(chǎng)上的競爭力。
1 IM軟件的設計方案
1.1 硬件平臺
智能電話(huà)終端的原型機運行在基于A(yíng)RM920T內核處理器S3C2410的嵌入式開(kāi)發(fā)板上,該開(kāi)發(fā)板由于性能優(yōu)異、性?xún)r(jià)比高,因此適合于開(kāi)發(fā)各類(lèi)高端的手持、小型終端以及各種網(wǎng)絡(luò )應用產(chǎn)品。它的標準工作頻率為203MHz,核心板上的FlashROM和SDRAM均為64MB,并支持1024*768的液晶顯示器,附帶USB鍵盤(pán)和鼠標,可運行嵌入式Linux操作系統。為了降低整個(gè)系統的成本,設計過(guò)程中將該開(kāi)發(fā)板改造成具有32MB的FlashROM和32MB的SDRAM的產(chǎn)品,并為其配置了支持16階灰度的320*240液晶顯示器。
1.2 IM軟件的功能設計
近年來(lái)較為流行的即時(shí)消息傳遞軟件很多,它們所提供的功能大同小異。這些客戶(hù)端軟件的根本區別在于客戶(hù)機和服務(wù)器之間的通信過(guò)程分別基于不同的即時(shí)消息傳遞協(xié)議。通常,每一種即時(shí)消息傳遞軟件都具有賬號管理、聯(lián)系人管理、即時(shí)消息收發(fā)等基本功能,在此基礎上又有各自不同的特色功能,如語(yǔ)音聊天、視頻聊天和表情管理等。
在眾多的即時(shí)消息傳遞軟件中,MSN是最受歡迎的軟件之一,其通用性和齊全的功能特性得到了用戶(hù)的廣泛肯定。在許多平臺上都有由第三方開(kāi)發(fā)的MSN客戶(hù)端軟件,人們對其協(xié)議內容早已作了深入的研究和詳細的分析,這對開(kāi)發(fā)人員具有極大的參考價(jià)值,能夠使開(kāi)發(fā)周期大大縮短。本文介紹實(shí)現MSN客戶(hù)端的一些基本功能的方法,包括用戶(hù)登錄、聯(lián)系人管理和即時(shí)消息收發(fā)和顯示等。
1.3 MSN協(xié)議及其模型
MSN協(xié)議是采用C/S模型的應用層協(xié)議,其命令采用字符形式??蛻?hù)端應用程序必須以協(xié)議規定的順序在規定的時(shí)間內向服務(wù)器發(fā)送請求,接收應答信息,通過(guò)這種機制實(shí)現服務(wù)器與客戶(hù)端的通信。由于客戶(hù)端軟件并非始終與單一服務(wù)器進(jìn)行交互,MSN協(xié)議要求其客戶(hù)端在不同的階段與不同的服務(wù)器建立連接,傳輸相應的賬號或數據信息,因此首先必須了解MSN服務(wù)器的類(lèi)型和作用。
MSN服務(wù)器分為通知服務(wù)器(Notification Server,NS)和接線(xiàn)服務(wù)器(SwitchBoard Server,SBS)兩種。前者負責用戶(hù)的登錄及身份驗證工作,包括聯(lián)系人列表的增加、刪除、修改和狀態(tài)等信息都通過(guò)NS傳輸;后者則用于提供即時(shí)通信服務(wù),即用戶(hù)聊天消息的收發(fā)和文件的傳輸等都是由SBS實(shí)現的。MSN的通信模型如圖1所示,客戶(hù)端在登錄時(shí)首先與NS建立連接,將用戶(hù)賬號和密碼信息加密后發(fā)送給NS,再由NS進(jìn)行身份驗證。若驗證通過(guò),則NS把用戶(hù)登錄到SBS的Cookie令牌以及該用戶(hù)的聯(lián)系人列表和相應的狀態(tài)信息發(fā)送到客戶(hù)端,由客戶(hù)端軟件進(jìn)行顯示。當用戶(hù)開(kāi)始同聯(lián)系人進(jìn)行聊天會(huì )話(huà)時(shí),客戶(hù)端同SBS建立連接,將從NS得到的Cookie令牌交給SBS,SBS驗證Cookie令牌的有效性,驗證通過(guò)后,客戶(hù)端就可以發(fā)送和接收即時(shí)消息及文件。最后在用戶(hù)退出會(huì )話(huà)后,關(guān)閉同SBS的連接,此時(shí)只存在與NS的連接。圖中的虛線(xiàn)表示NS和SBS的通信過(guò)程。由于對客戶(hù)端來(lái)說(shuō)這個(gè)過(guò)程是透明的,因此可以認為它是一個(gè)黑盒子而不必關(guān)注。
1.4 IM軟件的系統結構
本系統主要由顯示界面、登錄模塊、聯(lián)系人管理和即時(shí)消息收發(fā)四個(gè)部分組成。
(1)顯示界面
界面設計可以分為登錄界面及主界面兩個(gè)部分。登錄界面提供用戶(hù)賬號和密碼的輸入。主界面由一個(gè)菜單欄和三個(gè)窗口構成。在用戶(hù)狀態(tài)菜單中,用戶(hù)可以選擇聯(lián)機、離開(kāi)、忙碌等六種狀態(tài);聯(lián)系人菜單實(shí)現了對聯(lián)系人的增加、刪除、修改等工作。三個(gè)窗口分別為聯(lián)系人列表窗口、消息發(fā)送窗口和會(huì )話(huà)窗口。聯(lián)系人列表窗口列出所有聯(lián)系人的昵稱(chēng)及其狀態(tài)信息;消息發(fā)送窗口用于輸入需要發(fā)送的內容;會(huì )話(huà)窗口中按順序依次顯示用戶(hù)所發(fā)送的消息和對方的應答消息。
(2)登錄模塊
與NS服務(wù)器建立連接,傳輸加密的用戶(hù)賬號和密碼信息,接收NS返回的應答信息,并從應答信息中抽取出SBS服務(wù)器的地址和用于登錄到該服務(wù)器上的Cookie令牌。
(3)聯(lián)系人管理
提供對聯(lián)系人的增加、刪除和修改等功能。在MSN中為了便于管理,聯(lián)系人可以分成不同的隊列,如好友、家庭成員和商務(wù)伙伴等。在新增加聯(lián)系人時(shí),應提示用戶(hù)選擇要加入的隊列,而對于曾經(jīng)添加過(guò)后又刪除的聯(lián)系人則直接將其恢復到原先所在的隊列。聯(lián)系人的刪除又分為阻止聯(lián)系人和徹底刪除兩種情況。阻止聯(lián)系人就是將其放入阻止隊列,使該聯(lián)系人無(wú)法看到用戶(hù)的狀態(tài)并且不能給用戶(hù)發(fā)送即時(shí)消息;而徹底刪除聯(lián)系人,則會(huì )刪除與該聯(lián)系人有關(guān)的所有信息。
(4)即時(shí)消息的收發(fā)模塊
負責發(fā)送和接收即時(shí)消息的工作。當用戶(hù)想同一個(gè)聯(lián)系人發(fā)起會(huì )話(huà)時(shí),首先同SBS服務(wù)器創(chuàng )建連接,將Cookie令牌交給它進(jìn)行驗證。驗證通過(guò)后就可以調用Socket接口向SBS服務(wù)器發(fā)送信息,而從服務(wù)器收到的消息則在會(huì )話(huà)窗口中顯示。
2 IM軟件的實(shí)現步驟及關(guān)鍵技術(shù)
2.1 開(kāi)發(fā)平臺的選擇
Linux操作系統因其開(kāi)放源碼、容易定制和擴展、多硬件平臺支持和內置網(wǎng)絡(luò )功能等優(yōu)良特性,早已成為嵌入式應用開(kāi)發(fā)的首選平臺,因此本文使用定制的嵌入式Linux系統[1]。
另外本文選擇了Qt-Embeded開(kāi)發(fā)工具,它是由著(zhù)名的Qt庫開(kāi)發(fā)商Trolltech針對嵌入式Linux系統推出的構建GUI和應用的C++開(kāi)發(fā)包。Qt-Embeded的移植性較好,支持ARM、PowerPC、MIPS和Dragonball等多種CPU體系結構。同時(shí)又有QMake、QVFB、Qt Designer等眾多強大開(kāi)發(fā)支撐工具的支持,大大提高了Qt-Embeded系統的開(kāi)發(fā)效率。Qt設計器(Qt Designer)是用來(lái)設計和實(shí)現用戶(hù)界面并能夠在多平臺下運行的一種開(kāi)發(fā)支撐工具,用以簡(jiǎn)化用戶(hù)界面的設計。QVFB即虛擬幀緩沖技術(shù),是用于在PC機上運行和測試嵌入式應用程序的工具。
評論