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

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

Wireless Messaging API

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

Wireless Messaging API屬于J2ME體系的一個Optional Package,通常簡稱為WMA,使用它可以通過無線連接發(fā)送和接受短文本信息或者是二進(jìn)制信息。WMA基于Generic ConnectionFramework(GCF),GCF在Connected Limited Device Configuration (CLDC)中定義,GCF提供了一個抽象的框架用于履行輸入和輸出操作,GCF也是Connected Device Configuration (CDC)的一部分,因此何J2ME-enabled設(shè)備上使用WMA。

應(yīng)用WMA,意味著你可以使用cellular telephones(蜂窩電話)或者是相似的設(shè)備通過各種無線網(wǎng)絡(luò)發(fā)送和接收短信息,而不管這個無線網(wǎng)絡(luò)是基于GSM還是CDMA。值得一提的是,WMA還支持ShortMessage Service (SMS,短信息服務(wù))和 Cell Broadcast Short Message Service (CBS).盡管WMA消息和數(shù)據(jù)報(bào)(datagrams)十分相似,但是WMA并沒有使用GCF框架中定義的數(shù)據(jù)報(bào)接口(datagraminterfaces),因?yàn)檫@種接口是為UDP Connections而設(shè)計(jì)的。WMA在javax.wireless.messaging包中定義了一套全新的接口,用于接收和發(fā)送短消息。

在WMA中,為了接收或者是發(fā)送短消息,你必須首先獲得一個MessageConnection接口的實(shí)例,調(diào)用javax.microedition.io.Connector的open()方法可以返回MessageConnection接口的實(shí)例,參數(shù)是字

符串型的URL,該URL和HTTP協(xié)議中的URL十分相似,它必須指定所使用的協(xié)議(SMS或者是CBS),目標(biāo)電話的號碼,端口號等等,例如下面的URL都是合法的URL:

1. sms://+417034967891

2. sms://+417034967891:5678

3. sms://:5678

4. cbs://:5678

在上述URL串中,第一個和第二個URL串指定了目標(biāo)設(shè)備(移動電話)的號碼,第二個URL串還指定了端口號,假如端口號沒有被指定,那么WMA將會使用目標(biāo)設(shè)備上缺省的文本信息端口(text messaging port),上述兩種情況主要用于發(fā)送短信息的情況。第三個URL串表明指定的是本機(jī)的端口,這種情況主要用于接收短信息。第四個URL串也是指定本機(jī)的端口,這種情況主要適用于監(jiān)聽網(wǎng)絡(luò)中廣播信息。第三個URL串和第四個URL串的主要區(qū)別在于所哦使用的協(xié)議不一樣。

下面我們來看一段簡單的創(chuàng)建SMS客戶端的代碼:

import javax.microedition.io.*;

import javax.wireless.messaging.*;

.....

MessageConnection conn = null;

String url = "sms://+417034967891";

try

{

conn = (MessageConnection) Connector.open( url );

// do something with the connection

}

catch( Exception e )

{

// handle errors

}

finally

{

if( conn != null )

{

}}

現(xiàn)在SMS客戶端是創(chuàng)建起來了,也就是說你手上的設(shè)備已經(jīng)和服務(wù)器建立了連接,那么如何發(fā)送短信息呢?首先,你應(yīng)該使用MessageConnection接口的newMessage()方法創(chuàng)建一個空(empty)的消息,然后再設(shè)置該消息的PayloadText(也就是需要發(fā)送的文本或者是二進(jìn)制數(shù)據(jù)),最后調(diào)用MessageConnection的send()方法將短信息發(fā)送到目標(biāo)設(shè)備中去。請看下面的代碼:

public void sendText( MessageConnection conn, String text)

throws IOException, InterruptedIOException {

TextMessage msg = conn.newMessage( conn.TEXT_MESSAGE );

msg.setPayloadText( text );

conn.send( msg );

}

假如是發(fā)送二進(jìn)制格式的數(shù)據(jù),那么代碼略有不同:

public void sendBinary( MessageConnection conn, byte[] data)

throws IOException, InterruptedIOException {

BinaryMessage msg=conn.newMessage( conn.BINARY_MESSAGE);

當(dāng)然了,你所能發(fā)送的數(shù)據(jù)量是有限的,一般來說,SMS文本信息可以包含160或者是70個字符,

這依靠于你使用何種字符編碼,假如是二進(jìn)制數(shù)據(jù),那么容量是140字節(jié)(Note:The WMA requires support for message concatenation, however, which means that these limits are actually at least three times higher.)。同時,你可以使用MessageConnection接口的numberO fSegments()

方法決定某一個非凡的短信息能否被發(fā)送,并且需要把這條信息拆分為多少個信息段(message segments)。

上面介紹了如何應(yīng)用WMA發(fā)送短信息,應(yīng)用WMA接收短信息更加簡單,當(dāng)打開一個Server Connection后(此時建立connection時,不需指定電話號碼,只需要指定協(xié)議以及監(jiān)聽端口號),直接調(diào)用MessageConnection接口的receive()方法,該方法返回在當(dāng)前設(shè)備的指定端口收到的下一個短信息。假如沒有短信息到達(dá),那么該方法將會阻塞,并等待下一個短信息的到達(dá),或者由另一個不同的線程關(guān)閉此連接。請看下面的示例代碼:



發(fā)表評論 共有條評論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 阿巴嘎旗| 五莲县| 清水县| 贞丰县| 松江区| 浙江省| 环江| 鄂伦春自治旗| 江山市| 新蔡县| 轮台县| 建瓯市| 江川县| 拜泉县| 台南市| 中方县| 鹰潭市| 平果县| 称多县| 江油市| 平阳县| 镇远县| 溆浦县| 邛崃市| 洞头县| 建阳市| 菏泽市| 祁阳县| 江安县| 永州市| 弥渡县| 新绛县| 琼海市| 平湖市| 竹溪县| 类乌齐县| 新竹市| 高雄市| 紫金县| 泽州县| 兴义市|