`
ihuashao
  • 浏览: 4721804 次
  • 性别: Icon_minigender_1
  • 来自: 济南
社区版块
存档分类
最新评论

J2ME短信处理: jsr120

阅读更多

1.


JSR120: http://jcp.org/aboutJava/communityprocess/final/jsr120/index.html

jsr120规定的受限SMS Port Numbers

下面的表格给出了jsr120规定的受限SMS Port Numbers

Port number Description
2805 WAP WTA secure connection-less session service
2923 WAP WTA secure session service
2948 WAP Push connectionless session service (client side)
2949 WAP Push secure connectionless session service (client side)
5502 Service Card reader
5503 Internet access configuration reader
5508 Dynamic Menu Control Protocol
5511 Message Access Protocol
5512 Simple Email Notification
9200 WAP connectionless session service
9201 WAP session service
9202 WAP secure connectionless session service
9203 WAP secure session service
9207 WAP vCal Secure
49996 SyncML OTA configuration
49999 WAP OTA configuration
普通SMS的端口是特定的,可以通过this.getAppProperty("SMS_Port")来获取,只要你的设备支持JSR120。


2.


http://www.cnjm.net/tech/article2857.html

用J2ME收发短信 -- Wireless Messaging API

本文版权归原作者,中国JAVA手机网收录本文的目的是让更多人阅读到此文章。转载请注明出处为中国JAVA手机网www.cnjm.net [出处:51cto.com整理] 作者:Eric Giguere
【导读】本文将简要的介绍Wireless Messaging API(JSR 120)的一些基本知识
Wireless Messaging API属于J2ME体系的一个Optional Package,通常简称为WMA,使用它可以通过无线连接发送和接受短文本信息或者是二进制信息。
WMA 基于Generic ConnectionFramework(GCF),GCF在Connected Limited Device Configuration (CLDC)中定义,GCF提供了一个抽象的框架用于履行输入和输出操作,GCF也是Connected Device Configuration (CDC)的一部分,因此何J2ME-enabled设备上使用WMA。
应用WMA,意味着你可以使用 cellular telephones(蜂窝电话)或者是相似的设备通过各种无线网络发送和接收短信息,而不管这个无线网络是基于GSM还是CDMA。值得一提的是, WMA还支持ShortMessage Service (SMS,短信息服务)和 Cell Broadcast Short Message Service (CBS).尽管WMA消息和数据报(datagrams)十分相似,但是WMA并没有使用GCF框架中定义的数据报接口(datagraminterfaces),因为这种接口是为UDP Connections而设计的。WMA在javax.wireless.messaging包中定义了一套全新的接口,用于接收和发送短消息。
在WMA中,为了接收或者是发送短消息,你必须首先获得一个MessageConnection接口的实例,调用javax.microedition.io.Connector的open()方法可以返回MessageConnection接口的实例,参数是字符串型的URL,该URL和HTTP协议中的URL十分相似,它必须指定所使用的协议(SMS或者是CBS),目标电话的号码,端口号等等,例如下面的URL都是合法的URL:
1. sms://+417034967891
2. sms://+417034967891:5678
3. sms://:5678
4. cbs://:5678
在 上述URL串中,第一个和第二个URL串指定了目标设备(移动电话)的号码,第二个URL串还指定了端口号,如果端口号没有被指定,那么WMA将会使用目 标设备上缺省的文本信息端口(text messaging port),上述两种情况主要用于发送短信息的情况。第三个URL串表明指定的是本机的端口,这种情况主要用于接收短信息。第四个URL串也是指定本机的 端口,这种情况主要适用于监听网络中广播信息。第三个URL串和第四个URL串的主要区别在于所哦使用的协议不一样。
下面我们来看一段简单的创建SMS客户端的代码:

import javax.microedition.io.*;
import javax.wireless.messaging.*;
.....
MessageConnection conn = null;

JAVA手机网[www.cnjm.net]

String url = "sms://+417034967891";
try{
conn = (MessageConnection) Connector.open( url );
// do something with the connection
}
catch( Exception e ){
// handle errors
}finally{
if( conn != null ){
}}
现 在SMS客户端是创建起来了,也就是说你手上的设备已经和服务器建立了连接,那么如何发送短信息呢?首先,你应该使用MessageConnection 接口的newMessage()方法创建一个空(empty)的消息,然后再设置该消息的PayloadText(也就是需要发送的文本或者是二进制数 据),最后调用MessageConnection的send()方法将短信息发送到目标设备中去。请看下面的代码:
public void sendText( MessageConnection conn, String text)
throws IOException, InterruptedIOException {
TextMessage msg = conn.newMessage( conn.TEXT_MESSAGE );
msg.setPayloadText( text );
conn.send( msg );
}
如果是发送二进制格式的数据,那么代码略有不同:
public void sendBinary( MessageConnection conn, byte[] data)
throws IOException, InterruptedIOException {

JAVA手机网[www.cnjm.net]

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

当然了,你所能发送的数据量是有限的,一般来说,SMS文本信息可以包含160或者是70个字符,

JAVA手机网[www.cnjm.net]

这 依赖于你使用何种字符编码,如果是二进制数据,那么容量是140字节(Note:The WMA requires support for message concatenation, however, which means that these limits are actually at least three times higher.)。同时,你可以使用MessageConnection接口的numberO fSegments()

JAVA手机网[www.cnjm.net]


方法决定某一个特别的短信息能否被发送,并且需要把这条信息拆分为多少个信息段(message segments)。

上 面介绍了如何应用WMA发送短信息,应用WMA接收短信息更加简单,当打开一个Server Connection后(此时建立connection时,不需指定电话号码,只需要指定协议以及监听端口号),直接调用 MessageConnection接口的receive()方法,该方法返回在当前设备的指定端口收到的下一个短信息。如果没有短信息到达,那么该方法 将会阻塞,并等待下一个短信息的到达,或者由另一个不同的线程关闭此连接。请看下面的示例代码:

import java.io.*;

JAVA手机网[www.cnjm.net]

import javax.microedition.io.*;

import javax.wireless.messaging.*;

MessageConnection conn = null;

String url = "sms://:5678"; // no phone number!

try {

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

while( true ){

JAVA手机网[www.cnjm.net]

Message msg = conn.receive(); // blocks

if( msg instanceof BinaryMessage ){

byte[] data =

JAVA手机网[www.cnjm.net]

((BinaryMessage) msg).getPayloadData();

// do something here

} else {

String text =

((TextMessage) msg).getPayloadText();

// do something here

}}

}

catch( Exception e ){

// handle it

JAVA手机网[www.cnjm.net]


}

finally {if( conn != null ){

JAVA手机网[www.cnjm.net]

try { conn.close(); } catch( Exception e ){}

}

JAVA手机网[www.cnjm.net]

}

WMA的任务只是接收和发送短信息,并不去解释它们。通常来说,应用程序之间会来回发送二进制数据类型的信息,java.io包的DataInputstream,DataOutputstream,ByteArrayInputstream

和ByteArrayOutputStream 类在对这些二进制数据解码和编码时十分有用。

访问下面两个网址可以获得更多关于WMA的信息:

[1]http://java.sun.com/products/wma/

[2]http://jcp.org/aboutJava/communityprocess/final/jsr120/index.html.

注:本文主要根据Eric Giguere写的Wireless Messaging API Basics翻译而成,原文可以参见

Wireless Developer Newsletter(October 15, 2002),具体网址为:http://wireless.java.sun.com/midp/ttips/wma/

本文并非字字照译,而只是译其大意而已,文中代码均没有经过验证,仅供参考而已。如果有问题,请和翻译联系:javalover.bbs@bbs.pku.edu.cn。


3.

参考

Mobile P2P messaging, Part 1:

http://www.ibm.com/developerworks/java/library/wi-p2pmsg/

Figure 1 contains a UML diagram for these interfaces.
Figure 1. Top-level WMA interfaces in the javax.wireless.messaging package
Top-level WMA interfaces in the  javax.wireless.messaging package
分享到:
评论

相关推荐

    J2me 手机发送短信示例

    在J2ME中,发送短信涉及到使用JSR-120(WMA,Wireless Messaging API)。这个API允许开发者通过GSM或CDMA网络发送和接收文本消息。关键类包括`javax.wireless.messaging.MessageConnection`和`javax.wireless....

    J2ME短信息的发送

    在J2ME的Mobile Information Device Profile (MIDP) 和 Connected Limited Device Configuration (CLDC) 中,短信功能主要通过JSR-120(无线信息 API,Wireless Messaging API,WMA)来实现。WMA提供了`javax....

    j2me收發短信.rar_bluetooth chat_j2me_j2me sms_sms_短信 j2me

    1. 发送短信:在J2ME中,我们使用JSR-120(Mobile Information Services API)中的`javax.wireless.messaging`包来处理短信发送。首先,创建一个`MessageConnection`对象,然后通过`TextMessage`或`...

    J2ME开发 J2ME开发 J2ME开发

    "J2ME开发.pdf"可能包含J2ME的详细教程或者最佳实践,涵盖从基础语法到高级特性的讲解,包括UI设计(如Form和Canvas类)、数据持久化(RecordStore)、网络编程(HttpConnection和Socket)以及事件处理等。...

    手机短信软件 源码 J2ME

    总的来说,这款J2ME短信软件源码提供了学习移动开发,尤其是短信功能实现的良好机会。通过分析和修改源码,开发者不仅可以理解J2ME的基本用法,还能掌握如何在资源有限的移动设备上实现数据存储和通信。对于想要提升...

    郭克华 J2ME 视频 源码

    6. **JSR(Java Specification Requests)**:定义J2ME的新功能或扩展,例如JSR-118定义了MIDP 2.0,增加了对多媒体和XML的支持。 视频教程可能涵盖的内容: 1. **环境搭建**:安装Java SDK,配置J2ME开发环境,如...

    j2me小程序

    **短信发送功能**是移动应用中的常见需求,J2ME通过使用JSR-120(Mobile Information Services API)或者直接调用设备的API来实现。JSR-120提供了对SMS(Short Message Service)的支持,包括发送、接收和管理短信。...

    j2me手机上的短信开发实例.

    2. **JSR-120: WMA (Wireless Messaging API)**:短信开发的关键在于WMA(Wireless Messaging API),它定义了在J2ME中发送和接收短信的接口。JSR-120是Java Community Process制定的标准,为J2ME提供了短信服务支持...

    J2ME对手机短信息及通讯录的调用

    在J2ME中,发送和接收短信主要依靠MIDP(Mobile Information Device Profile)和JSR-118(Java ME Mobile Information Services)中的接口和类。JSR-118提供了对短消息服务的支持,包括创建、发送和接收短信。 - **...

    j2me的Wireless Toolkit客户端编写的短信发送收发程序

    JSR-120是J2ME规范的一部分,提供了处理短消息服务(SMS)的能力,包括发送、接收和管理短信。在SMSMidlet中,开发者会创建一个MIDlet类,这个类负责启动和管理MIDlet应用,并实现WMA接口来处理短信的交互。** **在...

    基于 J2ME的手机短信平台的研究论文

    WMA(Wireless Messaging API)是J2ME中专门用于短信编程的API,它遵循JSR 120规范。WMA提供了两种类型的消息对象:`TextMessage`和`BinaryMessage`。`TextMessage`用于发送文本消息,而`BinaryMessage`则用于发送二...

    J2ME Property属性表E.doc

    - `microedition.chapi.version`:Content Handler API(JSR211)版本,处理内容解析和处理。 - `microedition.sip.version`:SIP API版本,用于会话初始化协议,实现VoIP等功能。 对于MMAPI,J2ME提供了一些特定的...

    J2ME程序设计实例

    通过J2ME的WMA(Wireless Messaging API)或者MIDP(Mobile Information Device Profile)的javamail组件,开发者可以实现发送和接收短信。这涉及到创建SMS消息对象,设置目的地地址,以及使用适当的连接管理器发送...

    J2ME 例子

    5. **JSR (Java Specification Requests)**: JSR是J2ME中添加新功能或扩展的规范,例如JSR-118(MIDP 2.0)和JSR-139(Connected Device Configuration 1.1)。 6. **Eclipse IDE**: 提供了集成开发环境来编写、...

    SMS.rar_j2me sms

    4. **SMS API**:在J2ME环境中,发送和接收短信通常需要使用JSR-120(Mobile Information Services API)或JSR-205( Multimedia Messaging Service - MMS API)。这些API提供了创建、发送和接收文本消息的接口。 5...

    j2me基础教程开发大全

    1. **无线通信协议栈**:J2ME提供了JSR 82(Java API for Bluetooth Wireless Technology)和JSR 118(Java API for Wireless Messaging Protocol)等接口,支持蓝牙和短信通信。 2. **HTTP和Socket连接**:通过`...

    J2ME及其移植2011

    - J2ME提供了多种扩展功能,如蓝牙API(JSR 82)、无线消息API(JSR 120)和移动多媒体API(JSR 135)等。 - 这些扩展功能使得开发者能够在不同的设备上实现更丰富的功能,如蓝牙通信、无线消息传递和多媒体处理。...

    sms.rar_The Program_j2me sms

    J2ME提供了发送和接收短信的服务,这主要依赖于MIDP 2.0中的JSR-118(Java Mobile Information Device Profile 2.0)和JSR-120(Wireless Messaging API,WMA)。WMA提供了一个接口,使得开发者可以利用手机的短信...

    J2ME应用教程PPT

    J2ME通过JSR-82(Java Bluetooth API)和JSR-118(Java Wireless Toolkit 2.0 for MIDP)支持无线通信。MIDP提供了HttpConnection和SocketConnection接口,用于HTTP请求和TCP/IP通信。 **数据存储** J2ME使用...

    J2ME无线设备编程

    此外,J2ME还可以通过JSR 82(蓝牙API)和JSR 180(WAP 2.0 API)实现无线通信。 ### 7. 文件系统和数据持久化 MIDP提供RecordStore API来存储小量数据,如游戏得分或用户设置。对于更大的数据存储需求,开发者可能...

Global site tag (gtag.js) - Google Analytics