《電子技術應用》
您所在的位置:首頁 > 其他 > 設計應用 > IM軟件在智能電話終端上的設計與實現
IM軟件在智能電話終端上的設計與實現
徐 瑞,錢龍華,呂 強,楊季文
(蘇州大學 計算機科學與技術學院,江蘇 蘇州215006)
摘要: 提出了在智能電話終端上實現IM軟件的方案,對實現步驟及所涉及的關鍵技術進行了詳細介紹。
Abstract:
Key words :

摘   要: 提出了在智能電話終端上實現IM軟件的方案,對實現步驟及所涉及的關鍵技術進行了詳細介紹。
關鍵詞: 即時消息傳遞  智能電話終端  嵌入式系統

  電話在經過數百年的發展之后,已從最早的簡單接聽和撥打設備,成為集錄音留言、自動應答、個人信息管理和撥號上網等諸多功能于一身的智能電話終端。智能電話終端使人們能夠更加高效、及時地處理周邊的各種信息,滿足不斷發展的信息化要求。
  IM(Instant Messaging)軟件即即時消息傳遞軟件,它是目前網絡上比較流行的殺手級應用程序(Killer Application),如騰訊的QQ、Microsoft的MSN、AOL的AIM和ICQ等。無論在什么地方,使用何種設備(如PC、手機、PDA和Web TV等),只要接入Internet,就能夠同其他用戶進行實時的消息和文件傳遞,甚至進行語音和視頻交流。通過撥號接入Internet,就能在智能電話終端的原型機上實現基本的網絡功能,如瀏覽器、電子郵件等。如果能在智能電話終端上實現IM的客戶端軟件,用戶通過電話就可以進行實時交談,進而進一步完善了其網絡功能,從而增強了該產品在市場上的競爭力。
1  IM軟件的設計方案
1.1 硬件平臺
  智能電話終端的原型機運行在基于ARM920T內核處理器S3C2410的嵌入式開發板上,該開發板由于性能優異、性價比高,因此適合于開發各類高端的手持、小型終端以及各種網絡應用產品。它的標準工作頻率為203MHz,核心板上的FlashROM和SDRAM均為64MB,并支持1024*768的液晶顯示器,附帶USB鍵盤和鼠標,可運行嵌入式Linux操作系統。為了降低整個系統的成本,設計過程中將該開發板改造成具有32MB的FlashROM和32MB的SDRAM的產品,并為其配置了支持16階灰度的320*240液晶顯示器。
1.2 IM軟件的功能設計
  近年來較為流行的即時消息傳遞軟件很多,它們所提供的功能大同小異。這些客戶端軟件的根本區別在于客戶機和服務器之間的通信過程分別基于不同的即時消息傳遞協議。通常,每一種即時消息傳遞軟件都具有賬號管理、聯系人管理、即時消息收發等基本功能,在此基礎上又有各自不同的特色功能,如語音聊天、視頻聊天和表情管理等。
  在眾多的即時消息傳遞軟件中,MSN是最受歡迎的軟件之一,其通用性和齊全的功能特性得到了用戶的廣泛肯定。在許多平臺上都有由第三方開發的MSN客戶端軟件,人們對其協議內容早已作了深入的研究和詳細的分析,這對開發人員具有極大的參考價值,能夠使開發周期大大縮短。本文介紹實現MSN客戶端的一些基本功能的方法,包括用戶登錄、聯系人管理和即時消息收發和顯示等。
1.3 MSN協議及其模型
  MSN協議是采用C/S模型的應用層協議,其命令采用字符形式。客戶端應用程序必須以協議規定的順序在規定的時間內向服務器發送請求,接收應答信息,通過這種機制實現服務器與客戶端的通信。由于客戶端軟件并非始終與單一服務器進行交互,MSN協議要求其客戶端在不同的階段與不同的服務器建立連接,傳輸相應的賬號或數據信息,因此首先必須了解MSN服務器的類型和作用。
  MSN服務器分為通知服務器(Notification Server,NS)和接線服務器(SwitchBoard Server,SBS)兩種。前者負責用戶的登錄及身份驗證工作,包括聯系人列表的增加、刪除、修改和狀態等信息都通過NS傳輸;后者則用于提供即時通信服務,即用戶聊天消息的收發和文件的傳輸等都是由SBS實現的。MSN的通信模型如圖1所示,客戶端在登錄時首先與NS建立連接,將用戶賬號和密碼信息加密后發送給NS,再由NS進行身份驗證。若驗證通過,則NS把用戶登錄到SBS的Cookie令牌以及該用戶的聯系人列表和相應的狀態信息發送到客戶端,由客戶端軟件進行顯示。當用戶開始同聯系人進行聊天會話時,客戶端同SBS建立連接,將從NS得到的Cookie令牌交給SBS,SBS驗證Cookie令牌的有效性,驗證通過后,客戶端就可以發送和接收即時消息及文件。最后在用戶退出會話后,關閉同SBS的連接,此時只存在與NS的連接。圖中的虛線表示NS和SBS的通信過程。由于對客戶端來說這個過程是透明的,因此可以認為它是一個黑盒子而不必關注。

1.4 IM軟件的系統結構
  本系統主要由顯示界面、登錄模塊、聯系人管理和即時消息收發四個部分組成。
  (1)顯示界面
  界面設計可以分為登錄界面及主界面兩個部分。登錄界面提供用戶賬號和密碼的輸入。主界面由一個菜單欄和三個窗口構成。在用戶狀態菜單中,用戶可以選擇聯機、離開、忙碌等六種狀態;聯系人菜單實現了對聯系人的增加、刪除、修改等工作。三個窗口分別為聯系人列表窗口、消息發送窗口和會話窗口。聯系人列表窗口列出所有聯系人的昵稱及其狀態信息;消息發送窗口用于輸入需要發送的內容;會話窗口中按順序依次顯示用戶所發送的消息和對方的應答消息。
  (2)登錄模塊
  與NS服務器建立連接,傳輸加密的用戶賬號和密碼信息,接收NS返回的應答信息,并從應答信息中抽取出SBS服務器的地址和用于登錄到該服務器上的Cookie令牌。
  (3)聯系人管理
  提供對聯系人的增加、刪除和修改等功能。在MSN中為了便于管理,聯系人可以分成不同的隊列,如好友、家庭成員和商務伙伴等。在新增加聯系人時,應提示用戶選擇要加入的隊列,而對于曾經添加過后又刪除的聯系人則直接將其恢復到原先所在的隊列。聯系人的刪除又分為阻止聯系人和徹底刪除兩種情況。阻止聯系人就是將其放入阻止隊列,使該聯系人無法看到用戶的狀態并且不能給用戶發送即時消息;而徹底刪除聯系人,則會刪除與該聯系人有關的所有信息。
  (4)即時消息的收發模塊
        負責發送和接收即時消息的工作。當用戶想同一個聯系人發起會話時,首先同SBS服務器創建連接,將Cookie令牌交給它進行驗證。驗證通過后就可以調用Socket接口向SBS服務器發送信息,而從服務器收到的消息則在會話窗口中顯示。
2  IM軟件的實現步驟及關鍵技術
2.1 開發平臺的選擇
  Linux操作系統因其開放源碼、容易定制和擴展、多硬件平臺支持和內置網絡功能等優良特性,早已成為嵌入式應用開發的首選平臺,因此本文使用定制的嵌入式Linux系統[1]。
  另外本文選擇了Qt-Embeded開發工具,它是由著名的Qt庫開發商Trolltech針對嵌入式Linux系統推出的構建GUI和應用的C++開發包。Qt-Embeded的移植性較好,支持ARM、PowerPC、MIPS和Dragonball等多種CPU體系結構。同時又有QMake、QVFB、Qt Designer等眾多強大開發支撐工具的支持,大大提高了Qt-Embeded系統的開發效率。Qt設計器(Qt Designer)是用來設計和實現用戶界面并能夠在多平臺下運行的一種開發支撐工具,用以簡化用戶界面的設計。QVFB即虛擬幀緩沖技術,是用于在PC機上運行和測試嵌入式應用程序的工具。
2.2 IM開放源碼的選擇
  從底層開始實現一個完整的MSN客戶端軟件需要一定的時間。為了縮短開發周期、節省開發成本,本文采用開源項目的方式,即在第三方MSN客戶端軟件的基礎上進行修改,使之滿足要求。這樣做的另外原因是可以從這些開放源碼的軟件中進一步剖析出MSN的協議格式,即使MSN協議有了新的版本,只要這個軟件仍然可用,它所使用的新的協議格式級仍對開發調整有重要的參考價值,可以據此重新調整軟件而無須去通過逆向工程的方法對MSN協議進行分析。
  支持MSN協議的IM客戶端軟件很多,必須選擇適合于剪裁并且是基于Linux的開放源碼系統,Gaim和Kmess都是不錯的選擇。其中Gaim是為Linux操作系統而設計的一種即時消息傳遞軟件,它可以同時支持MSN、ICQ、AIM和Yohoo等多種客戶端通信,但是它的軟件結構比較復雜。Kmess也是基于Linux的開放源碼系統,它只能支持MSN客戶端,從開發者的角度而言,Kmess因其結構相對簡單則更易于分析和改進。所以這里選擇了Kmess作為MSN客戶端軟件的開發藍本。
2.3 IM開放源碼的修改
  盡管Kmess是基于Linux平臺的支持MSN客戶端的即時消息傳遞軟件,但并不是直接搬過來就能用,必須進行大量的修改工作。首先Kmess是基于KDE環境而開發的應用程序,在源代碼中大量使用KDE庫函數,而KDE庫本身就有數百兆,受到原型機存儲容量的限制,不可能在原型機上實現KDE環境;其次Kmess是一個功能完善的MSN客戶端,其中包括許多增強功能如文件傳送、多方聊天、語音聊天和視頻聊天等,由于在目前的智能電話終端上暫不考慮實現這些功能,因此對源碼的修改和剪裁是必不可少的。
針對上面的二個問題,對Kmess軟件進行了較大的調整,主要保留了與MSN協議處理的相關的內容。具體調整如下:
  (1)重新設計界面部分
  由于Kmess中的用戶界面是基于KDE環境,而原型機上采用的是Qt-Embeded,因此界面部分基本不能用,本文用Qt designer重新設計了登錄窗口、主菜單、聯系人窗口、會話窗口等,在這些界面中再調用Kmess的函數。
  (2)KDE庫函數的替換
  將源代碼中的基于KDE的庫函數用Qt-Embeded提供的類函數來實現。由于Qt-Embeded對一些基本功能的實現都有很好的支持,所以找到它們的對應實現方法并不困難,惟一的例外是SSL的實現。
  (3)剪裁部分源代碼
  分析Kmess的源碼結構,刪除不需要實現的功能部分,構建自己需要的體系結構。由于Kmess的模塊之間有著緊密聯系,因此并不是簡單剔除實現這些增強功能的類函數就可以完成的。首先必須理清Kmess的層次結構及模塊與模塊之間的相互關系,只有在對整體結構有了清晰的了解之后才能夠著手剪裁工作。
2.4 IM網絡安全的實現
  在登錄過程中,用戶要向NS服務器發送賬號和密碼來通過驗證,只有合法的注冊用戶才能使用即時消息收發功能,因此對用戶賬號和密碼必須進行加密。MSN客戶端采用SSL(Secure Socket Layer)技術來保證賬號信息的安全性。SSL即安全套接層,是介于應用層和TCP層之間的一個薄層。使用SSL協議的雙方可以在一個不安全的公共信道上協商加密算法和加密密鑰,并使用協商好的算法和密鑰將應用層的數據加密成密文,然后在網絡上傳輸。這樣即使第三方截獲了該密文,由于沒有解密算法和密鑰,也無法解密出明文數據,從而確保網絡數據的安全性。
2.5 應用程序的移植
  由于在原型機上開發和調試應用程序有相當大的困難,因此需要在PC上先進行仿真開發,然后再下載到原型機上。
  (1)PC機與原型機的通信
  PC機通過串口與原型機交換數據。在Linux中,串口的設備文件一般為/dev/ttyS0和/dev/ttyS1,分別表示串口1和串口2。首先用open命令打開串口,然后根據具體的應用來配置串口,設置波特率、校驗方法、數據位、停止位和流控制等參數。設置完成后,就可以通過MINICOM串口通信程序,完成PC與原型機之間應用程序的下載和調試結果的上傳等操作。
  (2)應用程序的交叉編譯
  整個開發過程分為二個階段:第一階段,開發者在PC環境下使用Qt-Embeded進行應用程序開發,通過gcc編譯器生成在PC上可以執行的目標代碼,然后使用QVFB模擬原型機的運行效果,經過不斷的調整直到滿足用戶的要求;第二階段,根據CPU體系結構的不同,對PC上實現的應用程序作相應的調整后,再使用arm-Linux-gcc將程序重新交叉編譯為在原型機上可執行的代碼,最后將該代碼下載到原型機的Flash中,從而完成原型機上的即時消息軟件的開發。由于在PC機上已經用QVFB模擬過軟件的運行情況,因此下載到原型機上后能基本上確保軟件的正確性,從而大大提高了開發效率。
  (3)OpenSSL庫的交叉編譯
  OpenSSL庫是作為目標代碼被調用的,因此還需要進行OpenSSL庫的移植工作。首先需在PC上對OpenSSL庫進行交叉編譯,生成目標平臺上使用的二進制文件,然后將其載入目標平臺。為了使OpenSSL庫能夠在ARM嵌入式平臺上運行,首先要為OpenSSL的Makefile文件加入一個名為“opensslForARM.Makefile.patch”的補丁,再用arm-Linux-gcc編譯生成可執行代碼。
  (4)OpenSSL庫的注冊
  交叉編譯OpenSSL成功后,使用MINICOM將其下載到原型機上,但此時仍然無法正常使用OpenSSL庫函數。這是因為在Linux中只有經過注冊的庫,才能成為共享動態鏈接庫。Linux下的共享庫采用了類似于高速緩存的機制,將共享庫所在的目錄信息首先保存在/etc/ld.so.cache中。應用程序需要連接時先在這個文件里查找,若找不到再去ld.so.conf的路徑里查找。動態鏈接庫的管理命令ldconfig會在默認目錄(/lib和/usr/lib)和動態庫配置文件/etc/ld.so.conf內所列的目錄下,搜索出可共享的動態鏈接庫,進而創建出動態裝入程序(ld.so)所需的連接和緩存文件,并將已排序的動態鏈接庫名稱列表存放在默認文件/etc/ld.so.cache中。用戶首先將ldconfig下載到原型機上,然后在ld.so.conf文件中指定OpenSSL的路徑,運行ldconfig命令即可自動完成整個注冊過程。
3  結束語
  在智能電話終端上構造MSN客戶端軟件,首先要考慮目標平臺的特點及資源的有限性,選擇實現其中最基本和最常用的功能;然后借助于已有的開放源碼成果,選擇一個合適的開源項目,并對其界面部分和相關庫函數進行調整和調試,使之滿足目標平臺的運行要求;最后通過交叉編譯的方法生成目標平臺上的可執行代碼并下載到智能電話終端上。充分利用現有的開源成果不僅可以大大簡化對MSN專用協議的分析和實現過程,而且也進一步降低了軟件的開發成本,縮短了軟件的開發周期,使智能電話終端具有更好的性價比。
參考文獻
1   郭勝超,呂強.一個嵌入式Linux應用系統在Lubbock開發板上的實現.計算機應用,2003;23(12)
 

此內容為AET網站原創,未經授權禁止轉載。
主站蜘蛛池模板: 九九免费精品视频在这里 | 亚洲 成人 欧美 自拍 | 毛色毛片免费观看 | 国内视频自拍 | 日本加勒比高清一本大道 | 美国毛片网 | 欧美日韩另类综合 | 国产一区二区亚洲精品 | 国产精品27页 | 国产亚洲精品看片在线观看 | www射射一区 | 99视频在线看观免费 | 亚洲久久久久久久 | 99久久综合狠狠综合久久一区 | 日韩欧美在线观看一区 | 韩国福利影视一区二区三区 | 一级毛片免费视频观看 | 免费观看一级成人毛片 | 国模在线播放 | 免费特黄一级欧美大片 | 免费中文字幕一级毛片 | 一个人看的日本www的免费视频 | 欧美国产精品久久 | 亚洲m男在线中文字幕 | 亚洲国产精品看片在线观看 | 欧美高清成人 | 久久成人午夜 | 日本高清无吗免费播放 | 国产成人精品久久综合 | 精品日韩二区三区精品视频 | 一个人看的日本免费视频 | 国产区一区二区三区 | 国产亚洲午夜精品a一区二区 | 91久久精品一区二区 | www中文字幕在线观看 | 手机在线精品视频 | 欧美激情免费a视频 | 91久久香蕉| 久久久久久久久久免免费精品 | 久久一本一区二区三区 | 亚洲精品欧洲一区二区三区 |