新聞中心

        EEPW首頁 > 消費電子 > 設計應用 > IM軟件在智能電話終端上的設計與實現

        IM軟件在智能電話終端上的設計與實現

        作者: 時間:2010-01-12 來源:網絡 收藏
        2.2 開放源碼的選擇
          從底層開始一個完整的MSN客戶端需要一定的時間。為了縮短開發周期、節省開發成本,本文采用開源項目的方式,即在第三方MSN客戶端的基礎上進行修改,使之滿足要求。這樣做的另外原因是可以從這些開放源碼的中進一步剖析出MSN的協議格式,即使MSN協議有了新的版本,只要這個軟件仍然可用,它所使用的新的協議格式級仍對開發調整有重要的參考價值,可以據此重新調整軟件而無須去通過逆向工程的方法對MSN協議進行分析。
          支持MSN協議的客戶端軟件很多,必須選擇適合于剪裁并且是基于Linux的開放源碼系統,Gaim和Kmess都是不錯的選擇。其中Gaim是為Linux操作系統而的一種即時消息傳遞軟件,它可以同時支持MSN、ICQ、A和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專用協議的分析和實現過程,而且也進一步降低了軟件的開發成本,縮短了軟件的開發周期,使智能電話終端具有更好的性價比。

        本文引用地址:http://www.104case.com/article/166799.htm

        上一頁 1 2 下一頁

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 虹口区| 普兰县| 鹤峰县| 星子县| 十堰市| 民丰县| 扬中市| 丹凤县| 五大连池市| 方正县| 太原市| 获嘉县| 内江市| 平阳县| 华安县| 石嘴山市| 浦北县| 宝清县| 日喀则市| 沭阳县| 五华县| 晋中市| 张家界市| 平遥县| 石城县| 灵川县| 大厂| 巴林右旗| 莱州市| 黄石市| 武鸣县| 岳池县| 富宁县| 玛曲县| 祥云县| 会泽县| 博白县| 屯昌县| 阳江市| 吉林市| 托里县|