国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 學(xué)院 > 開發(fā)設(shè)計(jì) > 正文

開發(fā)MIDP聯(lián)網(wǎng)應(yīng)用程序

2019-11-17 06:27:45
字體:
供稿:網(wǎng)友

♦ 引言

  在上講中,我們介紹了如何利用Record Store把數(shù)據(jù)保存在終端內(nèi)。本講,我們將闡述MIDP java網(wǎng)絡(luò)的相關(guān)功能。由于N800終端只能使用HTTP通信,所以我們將以HTTP為主要范例進(jìn)行講解。到目前為止,只能制作終端內(nèi)的單機(jī)型應(yīng)用程序,假如利用網(wǎng)絡(luò),連接網(wǎng)絡(luò)服務(wù)器,那么就能夠制作出多種應(yīng)用程序。

1. 利用網(wǎng)絡(luò)

  1.1. Generic Connection Frame Work

  J2ME應(yīng)該能支持各種手機(jī)終端。由于終端不同其網(wǎng)絡(luò)功能及文件I/O功能也迥然不同,網(wǎng)絡(luò)和文件I/O關(guān)聯(lián)的圖書館所需的條件也不同。

  為了解決上述問題,JSME的CLDC采用了Generic Connection framework。Generic Connection framework擁有不同終端所需的省空間網(wǎng)絡(luò)功能以及文件I/O功能。廣泛應(yīng)用J2SE的java.io和java.net包里的網(wǎng)絡(luò)、文件I/O功能,并預(yù)備7個(gè)interface。這樣,為能支持各種手機(jī)終端的通信功能,只限定interface,在每個(gè)手機(jī)終端上都能自由安裝。不支持手機(jī)終端連接的實(shí)際安裝不能進(jìn)行。各種interface的說明如表1所示、層次結(jié)構(gòu)如圖1所示。

 Interface  作用 Connection 成為其他interface基礎(chǔ)的interface StreamConnectionNotifier 具有socket通信連接通知功能的interface InputConnection 具有接收數(shù)據(jù)功能的interface OutputConnection 具有發(fā)送數(shù)據(jù)功能的interface DatagramConnection 具有連接UDP的數(shù)據(jù)電報(bào)通信功能的interface StreamConnection 具有socket通信接收/發(fā)送功能的interface ContentConnection 具有通信內(nèi)容調(diào)查功能的interface HttpConnection 具有http通信功能的interface

表 1

開發(fā)MIDP聯(lián)網(wǎng)應(yīng)用程序(圖一)
圖 1

  1.2. Connection Interface

  Connection interface在Generic Connection framework中是連接interface的基礎(chǔ)interface。其他的連接interface是從Connection interface派生而來的。

  1.3. Connector 類

  使用Connector類的static方法open (String connectString)入網(wǎng)。

Connection con = Connector.open("http://www.nec-mfriend.com/");

ex. 1

  例如、如ex. 1所示,在open方法的自變量中輸入“http://www.nec-mfiend.com/”,就可以實(shí)現(xiàn)與www.nec-mfriend.com服務(wù)器進(jìn)行http通信。
  而Generic Connection framework的全部鏈接都是利用Connector類的open方法完成的。也就是說,即使鏈接類型不同,也能以同樣的方法完成。J2ME由于這樣的設(shè)計(jì)而擁有豐富的擴(kuò)展性,對(duì)于上述新的裝置它也配備了簡(jiǎn)單的支持系統(tǒng)。
  按照下述形式指定Open方法的自變量。

{PRotocol}:[{target}][{params}]

在Protocol部分可以指定如下所示的Protocol。  值 鏈接方式 file 文件 I/O comm. 串行端口通信 socket Socket通信 datagram 數(shù)據(jù)電報(bào)通信 http Web服務(wù)器通信

表 2

*N800不支持socket通信、數(shù)據(jù)電報(bào)通信,而N820支持socket通信。

  在Target部分指定服務(wù)器的用戶名、端口號(hào)和文件名等。若有必要的添加信息則在Params部分指定。

  Open方法也可以指定其他的自變量。

    static Connection open(String connectString, int mode)

從connectString中制作Connection、打開鏈接,若要使用mode鏈接則需指定access mode。在access mode中,可以指定Connector.READ,Connector.READ_WRITE和Connector.WRITE ,若不指定,則為Connector.READ_WRITE 。在Protocol中不能指定access mode時(shí),則放棄IllegalArgumentException。

  下表是其他Connector類的static方法。  方法 作用 DataInputStream openDataInputStream(String connectString) 從connectString中制作新的DataInputStream 并打開。 DataOutputStream openDataOutputStream(String connectString) 從connectString中制作新的DataOutputStream并打開。 InputStream openInputStream(String connectString) 從connectString中制作新的InputStream并打開。 OutputStream openOutputStream(String connectString) 從connectString中制作新的OutputStream并打開。

  1.4. HTTP 通信

  現(xiàn)在,我們對(duì)N800所支持的HTTP通信進(jìn)行闡述。利用HTTP通信可以連接WEB服務(wù)器。例如,可以把手機(jī)終端難以處理的復(fù)雜問題交給WEB服務(wù)器處理,得出結(jié)果。HTTP通信采用MIDP方法作為標(biāo)準(zhǔn),但是,采用MIDP作為基本方法的終端卻不能進(jìn)行HTTP通信,或者有很大的限制,這一點(diǎn)請(qǐng)注重。

為能在N800中使用HTTP通信需遵從以下規(guī)定。
• 要實(shí)現(xiàn)MIDlet通信必須在JAD(ADF)文件中設(shè)定MIDlet-UseNetwork(參考3.JAD(ADF)文件)為YES。.
• 最大發(fā)送量為10kbyte。
大于10kbyte時(shí),超出部分被清除,小于10kbyte的數(shù)據(jù)才是有效的。
• 最大接收量為100kbyte。
大于100kbyte時(shí),超出部分被清除,小于100kbyte的數(shù)據(jù)才是有效的。
• 連接處URL
從http://開始,包含http://,最多為512byte。不分大/小寫。

  HTTP通信由request和response兩部分組成。從客戶發(fā)出的request信息傳到服務(wù)器,服務(wù)器接收request,返還response信息。

  HTTP通信主要有下述三種request方式。  方式 作用 GET 要求指定的文件。 HEAD 要求指定文件的header信息。 POST 要求向指定文件發(fā)送信息,并得出結(jié)果。

接下來,讓我們?cè)囍枚喾Nrequest與服務(wù)器進(jìn)行通信。

  1.5. 利用GET

    利用GET可以讀取服務(wù)器上的文件。在使用GET之前,如下所示需在已完成的HttpConnection方法的setRequestMethod方法中,指定HttpConnection的static變數(shù)GET。

HttpConnection con = (HttpConnection)Connector.open("http://www.nec-mfriend.com/");
con.setRequestMethod(HttpConnection.GET);

ex. 2

    如下所示可以利用DataInputStream獲取response。

String res="";
DataInputStream in = con.openDataInputStream();
int input;
while((input = in.read())!=-1){
res = res + (char)input;
}
in.close();

ex. 3

   以下實(shí)際是與服務(wù)器通信,獲取Html文件的sample。為簡(jiǎn)單介紹sample的操作,得把通信結(jié)果,即獲取的html文件內(nèi)容,輸入控制臺(tái)。因此,此sample是以在模擬器上面操作為前提的。



發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 栾城县| 柳林县| 洛隆县| 桂林市| 石楼县| 宁陕县| 横峰县| 景宁| 常州市| 犍为县| 班玛县| 海淀区| 高邑县| 岑巩县| 合作市| 商都县| 马尔康县| 庆阳市| 绵竹市| 政和县| 漳平市| 子长县| 浦江县| 东源县| 江源县| 天等县| 扎鲁特旗| 平邑县| 白玉县| 卓尼县| 遵义县| 乐陵市| 丽水市| 称多县| 偃师市| 清河县| 来安县| 盖州市| 三亚市| 武义县| 盖州市|