【正文】
............................................. 31 附錄 A:手機(jī) SMS實(shí)現(xiàn)代碼 ........................................... 32 附錄 B:手機(jī)與 PC 機(jī)通信實(shí)現(xiàn)代碼 .................................... 37 附錄 C:手機(jī)與手機(jī)通信實(shí)現(xiàn)代碼 ..................................... 39 江蘇大學(xué)本科畢業(yè)論文 1 第 一 章 緒論 本次設(shè)計(jì)的目的是 掌握基于 TCP/IP 協(xié)議的網(wǎng)絡(luò)編程技術(shù)( windows 套接字編程)與流行開發(fā)工具 J2ME,并通過 設(shè)計(jì)實(shí)現(xiàn)智能手機(jī) 發(fā)送 和接收 文本 信息及網(wǎng)絡(luò)通信的功能 。 論文 研究的背景 伴隨 著我國移動(dòng)通信網(wǎng)絡(luò)規(guī)模的不斷擴(kuò)大和通訊技術(shù)的不斷成熟,移動(dòng)用戶發(fā)展極為迅速。 其中“短信息服務(wù)”最受用戶青睞。 比如, 證券業(yè)人士可以定制股市行情,地產(chǎn)業(yè)人士可以定制地產(chǎn)信息,經(jīng)常出行的人可以定制天氣預(yù)報(bào),體育迷可以定制體育新聞 ?? 如此豐富的內(nèi)容使每個(gè)行業(yè)、每個(gè)階層的人都能找到屬于自己的信息。 [1]因此,人們?nèi)粘J褂玫氖謾C(jī)具備 發(fā)送和接收文本 信息的功能,早已不再是新鮮事。手機(jī)儼然是當(dāng)今社會(huì)生活必不可少的,并且能給人們帶來豐富多彩的生活。 但是傳統(tǒng)手機(jī)又存在以下幾方面的弊端: 首先,傳統(tǒng)手機(jī)在出廠時(shí)均由硬件廠商固化程序。 其次,傳統(tǒng)手機(jī)訪問互聯(lián)網(wǎng)是通過 WAP(Wireless Application Protocol),所有網(wǎng)絡(luò)資源必須接通網(wǎng)絡(luò)才能在線訪問,非常耗時(shí)、費(fèi)用也比較高。 (2)Java 技術(shù)使網(wǎng)絡(luò)帶寬的應(yīng)用變得更為有效。 (3)Java 技術(shù)提供 了一個(gè)類庫,它使 應(yīng)用開發(fā)商可以創(chuàng)建更為直覺、豐富的用戶界面 (GUI); 基于以上分析, Java 手機(jī)將是未來手機(jī)的發(fā)展方向,是業(yè)界的熱點(diǎn)。 論文 研究 內(nèi)容 和意義 本論文 通過對(duì) TCP/IP 協(xié)議的網(wǎng)絡(luò)編程技術(shù) 的掌握, 主要研究 在 J2ME 的Eclipse 集成開發(fā)環(huán)境下,如何利用現(xiàn)有的開發(fā)技術(shù) 進(jìn) 行 windows 套接字編程 ,并 在 SUN 公司提供的模擬器上實(shí)現(xiàn)手機(jī)發(fā)送和接收文本消息及手機(jī)與 PC 機(jī)、手機(jī)與手機(jī)之間的網(wǎng)絡(luò)通行功能。 論文組織結(jié)構(gòu) (1)第一章,概述,這部分是對(duì) 本文的研究意義 作簡要闡述,并對(duì)本文的內(nèi)容作簡要概括。 (3)第三章, J2ME 開發(fā)環(huán)境的體系結(jié)構(gòu)、配置、簡表、 可選包 以及優(yōu)勢的介紹。 (5)第五 章,實(shí)現(xiàn)手機(jī)與 PC機(jī)、手機(jī)與手機(jī)之間的即時(shí)通信。 江蘇大學(xué)本科畢業(yè)論文 3 第 二 章 開發(fā)環(huán)境與開發(fā) 技術(shù) 本章 首先簡單介紹本次設(shè)計(jì)使用的開發(fā)環(huán)境、相關(guān) 工具的原理和使用;然后較詳細(xì) 介紹 MIDP 規(guī)范 架構(gòu)、 MIDP 應(yīng)用程序單元及應(yīng)用程序單元套件、 MIDP 的通用連接框架 GCF;最后對(duì) Windows 套接字編程 進(jìn)行簡單了解。就其本身而言,它只是一個(gè)框架和一組服務(wù),用于通過插件組件構(gòu)建開發(fā)環(huán)境。 雖然大多數(shù)用戶很樂于將 Eclipse 當(dāng)作 Java IDE 來使用,但 Eclipse 的目標(biāo)不僅限 于此。由于 Eclipse 中的每樣?xùn)|西都是插件,對(duì)于給 Eclipse 提供插件,以及給用戶提供一致和統(tǒng)一的集成開發(fā)環(huán)境而言,所有工具開發(fā)人員都具有同等的發(fā)揮場所 。盡管 Eclipse 是使用 Java語言開發(fā)的,但它的用途并不限于 Java 語言; Eclipse 框架還可用來 作 為與軟件開發(fā)無關(guān)的其他應(yīng)用程序類型的基礎(chǔ),比如內(nèi)容管理系統(tǒng)。 江蘇大學(xué)本科畢業(yè)論文 4 圖 Eclipse的軟件界面 Tool Kit J2ME Wireless Tool Kit(WTK)是常用的 J2ME SDK,使用 WTK 可以進(jìn)行程序的編譯、校驗(yàn)、運(yùn)行等,由 SUN公司提供。一些常用的集成開發(fā)環(huán)境如 JBuilder、 Sun One Studio、 Eclipse 都可以和 WTK 進(jìn)行集成,使得開發(fā)J2ME 應(yīng)用程序非常方便。各個(gè)設(shè)備制造廠商都為自己的設(shè)備提供了開發(fā)環(huán)境和模擬器,如 Moto,Nokia 等公司都提供了針對(duì)自己手機(jī)的 J2ME SDK,該 SDK 兼容于 WTK SDK,另外附加提供了一些專有 API,提供了模擬真實(shí)設(shè)備的模擬器。 [3] WTK 的運(yùn)行界面如圖 所示。 在實(shí)際設(shè)備的軟件架構(gòu)中, MIDP 的邏輯位置如圖 所示。從 MIDP 的架構(gòu)圖中,可以看到 MIDP 是如何適應(yīng)設(shè)備的。在硬件之上的是本地系統(tǒng),這一層包括操作 系統(tǒng)和設(shè)備所使用的類庫。這一塊描述了虛擬機(jī)和由 CLDC 規(guī)范所定義的相關(guān)類庫,它提供了更高級(jí)別的 Java API所需要的基本的 Java 功能。 [4] M I DN a t i v e S y s t e m S o f t w a r eC L D CM I D PM I D PA p p l i c a t i o n sO E M S p e c i f i cA p p l i c a t i o n sO E M S p e c i f i cC l a s s e sN a t i v eA p p l i c a t i o n s 圖 MIDP的架構(gòu) ( MIDlet)與套件 (MIDlet Suit) MIDP 應(yīng)用程序的基本運(yùn)行單位稱為 MIDlet,類似于網(wǎng)頁上運(yùn)行的 Applet,江蘇大學(xué)本科畢業(yè)論文 6 有自己 的狀態(tài),并 且他的狀態(tài)變化由 設(shè)備上的程序管理軟件 AMS(Application Management Software)控制。設(shè)計(jì) MIDlet 狀態(tài)主要是為了保證 MIDlet 運(yùn)行的一致性和封閉性。當(dāng) MIDlet 處于 Paused 狀態(tài) 時(shí),他不占有任何共享資源。 (2)Active: MIDlet 處于活動(dòng)狀態(tài),一般占有當(dāng)前屏幕。 (3)Destoryed: MIDlet 釋放了它占用的所有資源、終止運(yùn)行后的狀態(tài)。 暫 暫 暫 暫暫 P a u s e d 暫暫 暫 暫 暫暫 A c tiv e 暫暫 暫 暫 暫暫 D e s tr o y e d暫N e w ( )s ta r tA p p ( )d e s tr o y A p p ( )d e s tr o y A p p ( )p a u s e A p p( ) 圖 MIDlet狀態(tài)和狀態(tài)轉(zhuǎn)換圖 因?yàn)?MIDlet 是程序運(yùn)行的基本單位,所以開發(fā) MIDP 程序時(shí)必須實(shí)現(xiàn)自己的MIDlet,所有的 MIDlet都必須繼承抽象類 。 MIDlet 應(yīng)用程序要被傳輸?shù)綗o線設(shè)備上 之前,必須把所有相關(guān)文件進(jìn)行打包放到 JAR 文件格式的程序包中。這個(gè)程序包就是 MIDlet 應(yīng)用程序套件MIDlets(MIDlet Suit)。有一些屬性是強(qiáng)制字段,而另外一些是可選字段。 MIDlets 中可能包含多個(gè) MIDlet,其中所有的 MIDlet 共享一個(gè)持久化存儲(chǔ)空間、運(yùn)行時(shí)對(duì)象類和類中的靜態(tài)成員變量。換句話說, MIDP 應(yīng)用程序的安裝、更新和刪除的基本單位是 MIDlets。 JAD 使得設(shè)備上的 AMS 在 裝載整個(gè) JAR 文件之前,先驗(yàn)證相應(yīng)的MIDlet 套件是否合適本設(shè)備。 JAD 文件格式與 Manifest 文件格式一樣,擁有一些相同的屬性。并且,利用網(wǎng)絡(luò)可以使手機(jī)作為客戶端和服務(wù)器端進(jìn)行配合,實(shí)現(xiàn)復(fù)雜的應(yīng)用,從而大大擴(kuò)展手機(jī)的能力。因?yàn)橐苿?dòng)設(shè)備種類繁多,通用連接框架中只定義了抽象的用于網(wǎng)絡(luò)通信的類和接口,并未給出具體協(xié)議的實(shí)現(xiàn),協(xié)議的實(shí)現(xiàn)由位于 CLDC 之上的簡表層來完成。 [5] 通用連接框架 GCF 是由 CLDC 定義,并被 繼承下來的一個(gè)可擴(kuò)展的、通用的 I/O 框架。 GCF 的繼承 體系如圖 所示。其他的連接接口繼承 Connection 中的方法,并且定義了用來訪問相關(guān)變量和該Connection 類型動(dòng)作的方法。接口用作原始的輸入 /輸出流,如從 Socket 連接或文件中讀取/寫入數(shù)據(jù)流,這兩個(gè)接口分別在基本的 Connection 接口上增加了兩個(gè)方法,一個(gè)用來打開用于連接的數(shù)據(jù)輸入 /輸出流,另一個(gè)是用來打開用于連接的輸入 /輸出流。 ( 4) SocketConnection 和 ServerSocketConnection SocketConnection 和 ServerSocketConnection 接口在 規(guī)范中提供,使得 MIDlet 具有在 TCP/IP 層上通過 Socket 進(jìn)行通信或使用數(shù)據(jù)報(bào)進(jìn)行通信的能力。 [6] 關(guān)于 Windows 套接字編程 WinSock 是一套開放的、支持多種協(xié) 議的 Windows 網(wǎng)絡(luò)編程接口,是 Windows網(wǎng)絡(luò)編程事實(shí)上的標(biāo)準(zhǔn)。 套接字 (socket)是內(nèi)核對(duì)象中的一種通信結(jié)構(gòu),它提供網(wǎng)絡(luò)進(jìn)程間的數(shù)據(jù)通信功能。套接字地址是套接字通信結(jié)構(gòu)的描述和定義。套接字描述符實(shí)質(zhì)是某套接字內(nèi)核對(duì)象的一個(gè)“句柄”,套接字描述符所在的進(jìn)程則通過該“句柄”訪問和操作該 套接字。該表中有一個(gè)字段存放新創(chuàng)建的套接字的描述符,另一個(gè)字段存放套接字?jǐn)?shù)據(jù)結(jié)構(gòu)的地址。每個(gè)進(jìn)程在自己的進(jìn)程空間里都有一個(gè)套接字描述符表, 但是套接字?jǐn)?shù)據(jù)結(jié)構(gòu)都是在操作系統(tǒng)的內(nèi)核緩沖里,可供多個(gè)進(jìn)程使用。本章概念性和了解性的內(nèi)容較多,是整個(gè)設(shè)計(jì)的基礎(chǔ)部分,為后續(xù)章節(jié)的進(jìn)行提供了必要的知識(shí)儲(chǔ)備。 [8] J2ME 的出現(xiàn)實(shí)際上是 Java 技術(shù)的回歸。隨著 J2ME 的應(yīng)用,為移動(dòng)互聯(lián)引入了一種新的模型,即允許手機(jī)可以從互聯(lián)網(wǎng)上下載各種應(yīng)用程序,并在手機(jī)上創(chuàng)造可執(zhí)行環(huán)境離線運(yùn)行這些程序。 (2)一組可以運(yùn)行在各種虛擬機(jī)上的配置和簡表,分別稱為 Configuration和 Profile。 前兩者組成了 J2ME 的基本運(yùn)行環(huán)境,它們的關(guān)系如圖 所示。配置( Configuration)的上面是一個(gè)或者多個(gè) J2ME Profile,這些附加的編輯庫利用相似設(shè)備的類似功能。 可 選 包 ( O p t i o n a l P a c k a g e )簡 表 ( P r o f i l e )配 置 ( C o n f i g u r a t i o n )J A V A 虛 擬 機(jī)主 機(jī) 操 作 系 統(tǒng) 圖 J2ME運(yùn)行環(huán)境體系結(jié)構(gòu) 首先, J2ME 配置。因此為了滿足不同硬件的開發(fā)要求, J2ME 規(guī)定了配置( Configuration)的概念。 配置在 3 層體系結(jié)構(gòu)中起到了承上啟下的作用,它定義了針對(duì)在總存儲(chǔ)空間、電源、網(wǎng)絡(luò)連接等硬件功能有類似需求的某個(gè)水平范疇或者一組設(shè)備的 Java平臺(tái)。 (2)規(guī)定了所支持的 Java 虛 擬機(jī)特征。 [10] 當(dāng)前 J2ME 存在連接限制設(shè)備配置( CLDC)和連接設(shè)備配置( CDC)兩種配置。 Java 程序是以邊解釋邊執(zhí)行的方式運(yùn)行的,所有的 Java程序都會(huì)被編譯成二進(jìn)制代碼,并運(yùn)行在 Java 虛擬機(jī)上。 第三, J2ME 簡表。簡表的 實(shí)現(xiàn)是 Java 應(yīng)用程序接口的一個(gè)集合,用于適應(yīng)被定義配置的應(yīng)用程序接口提供的服務(wù),簡表是一個(gè)完整的運(yùn)行環(huán)境,一個(gè)在簡表上執(zhí)行的應(yīng)用程序不需要額外的支持類??蛇x包是針對(duì)簡表規(guī)范擴(kuò)展的,它為用途廣泛、獨(dú)立于設(shè)備家族的功能提供了相應(yīng)的 Java 類庫支持。無線設(shè)備制造商可以視設(shè)備的功能需要,實(shí)現(xiàn)相應(yīng)的可選包規(guī)范。目前 J2ME 領(lǐng)域里使用最廣泛的是移動(dòng)信息設(shè)備簡表( MIDP) ,它主要是針對(duì)手機(jī)和其它雙向移動(dòng)通信設(shè)備而設(shè)計(jì)的。不過這些包都是 Java 最基本的功能,更多的面向設(shè)備的功能性 API 必須還是通過簡表來提供的。 (1)跨平臺(tái)特性 Java 技術(shù)以其跨平臺(tái)性,即“ 一次 編寫,到處運(yùn)行”的特點(diǎn),已經(jīng)成為智江蘇大學(xué)本科畢業(yè)論文 11 能手機(jī)軟件平臺(tái)的事實(shí)標(biāo)準(zhǔn)。 (2)面向?qū)ο缶幊陶Z言的強(qiáng)大能力 Java 編程語言在抽象機(jī)制和較高層次的程序構(gòu)造方面遠(yuǎn)比當(dāng)前所用的其他語言和工具優(yōu)秀,這使得應(yīng)用程序的開 發(fā)更加有效。 Java 還提供了用于安全轉(zhuǎn)換 Web 內(nèi)容的擴(kuò)展安全 API,可以更安全的處理移動(dòng)商務(wù)和金融程序所需的事務(wù)。使用 J2ME 開發(fā)的應(yīng)用程序易于與 J2EE 企業(yè)應(yīng)用系統(tǒng)集成,以提供企業(yè)級(jí)無線應(yīng)用程序的后臺(tái)支持,特別是目前的 J2ME 已經(jīng)支持以 Web 服務(wù)的形式來調(diào)用企業(yè)應(yīng)用的功能。 本章將設(shè)計(jì)一個(gè)基于無線消息 接口函數(shù) WMA( Wireless message API)的短信息收 /發(fā)軟件,學(xué)習(xí) WMA的使用。它不僅支持發(fā)送和接收簡單的文本消息,而且能夠支持發(fā)送多媒體信息。這些不同的底層傳輸機(jī)制具有不同的消息格式和傳輸方法。 [12] WMA 定義在 包中,是一個(gè)可選包,擴(kuò)展了通用連接框架 GCF,為 J2ME 平臺(tái)提供了 手機(jī) 接收 和 發(fā)送 文本 信息的 功能。圖 顯示了他們之間的關(guān)系。 Public Message receive() throws IOException,InterruptedException—接收當(dāng)前連接中的無線消息。 發(fā)送無線消息 :Public void send(Message msg) throws IOExcept