`

java 短信基础

    博客分类:
  • OPEN
阅读更多
短信API基础
http://wireless.java.sun.com/midp/ttips/wma/
aiya翻译 lslzf@bjpeu.edu.cn
java的短信API是可选的包,Wireless Messaging API(WMA),让手机能够通过它来收发文本的短信息和二进制格式多媒体的信息。
WMA是基于GCF(Generic Connection FrameWork),GCF提供了输入输出的抽象的框架,该框架定义了一个可选包提供他们需要的i/o连接,GCF还是CDC的一部分。
通过WMA来传递和接受信息意味着电话通过无线的方式来传递信息,不论是GSM手机还是CDMA手机,特别是WMA支持SMS和CBS,虽然WMA信息和数据报很相似,但是WMA并不使用GCF定义的数据报借口,这种数据报接口是为了在UDP连接中使用,取而代之的是,WMA定义了一套新的接口,这套接口放在javax.wireless.messaging包中。
如果要接受和发出短信息,应用程序必须首先得到一个MessageConnection接口的一个实例,这可以使用GCF连接的工厂方法,传递给方法javax.microedition.io.Connector.open()的URL确认是使用SMS协议还是CBS协议,当然还要传递过去目的手机的号码,端口,也可以同时传递过去。
下面都是有效的URL形式:
sms://+417034967891
sms://+417034967891:5678
sms://:5678
cbs://:5678
这两种形式的短信,前面两种形式的URL建立客户端连接,这个URL一般指定设备,指定端口,如果端口不指定的话,默认的就是文本短信端口,第三种形式是在本地设备上建立一个服务连接,允许应用程序等待和应对其他设备发过来的信息,最后的形式允许应用接受网络操作的广播信息。
下面是一个简单的建立一个客户SMS连接的代码
import javax.microedition.io.*;
import javax.wireless.messaging.*;
.....
MessageConnection conn = null;
String url = "sms://+417034967891";
try {
conn = (MessageConnection) Connector.open( url );
// 操作这个连接
}
catch( Exception e ){
// 处理异常
}
finally {
if( conn != null ){
try { conn.close(); } catch( Exception e ){}
}
}
如果需要发送一个短信,则使用MessageConnection.newMessage()方法来建立一个空的信息,设定他的payload(需要发送的文本,或者是二进制数据),然后调用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 {
BinaryMessage msg =
conn.newMessage( conn.BINARY_MESSAGE );
msg.setPayloadData( data );
conn.send( msg );
}
当然,对于在一个信息里面能够传递的数据长度是有限制,一般来说,一则SMS文本短信息限制在160个字符,或者70个汉字,这和字符编码方式有关,而二进制数据限制在140字节,WMA需要对于信息串联融合的支持,但是,这意味着在长度需要至少是限制的三倍的时候使用。可以通过使用MessageConnection.numberOfSegments()来判断一个信息能不能够被传递,如果需要传递,至少要多少节?
而接受一个信息就要简单一些,在打开一个服务连接后,应用程序调用连接的receive()方法,他返回的是在指定的端口上下一个可以接受的短信,如果没有可以接受的短信,方法会一直等待倒下格的到来,或者一直到一个不同的线程来关闭这个连接。
import java.io.*;
import javax.microedition.io.*;
import javax.wireless.messaging.*;
MessageConnection conn = null;
String url = "sms://:5678"; // 本机,不需要手机号!
try {
conn = (MessageConnection) Connector.open( url );
while( true ){
Message msg = conn.receive(); // 等待
if( msg instanceof BinaryMessage ){
byte[] data =
((BinaryMessage) msg).getPayloadData();
//
} else {
String text =
((TextMessage) msg).getPayloadText();
//进行必要的操作 }
}
}
catch( Exception e ){
// 处理异常
}
finally {
if( conn != null ){
try { conn.close(); } catch( Exception e ){}
}
}
当然,WMA就是为了处理收发短信息的,不是为了处理他们,一般来说,应用程序发给应用程序的信息应该用二进制信息来作为收发的载体,标准的DataInputStream, DataOutputStream, ByteArrayInputStream, 和 ByteArrayOutputStream类能够很好的完成需要的功能。
这里是最新的WMA的实现。他的完善还有很漫长的路…
分享到:
评论

相关推荐

    JAVA短信验证源码DEMO

    这个"JAVA短信验证源码DEMO"提供了实现短信验证功能的基本框架,主要涉及Java编程语言和网络通信技术。以下是对该DEMO中核心知识点的详细解释: 1. **TCP/IP Socket通信**:TCP(Transmission Control Protocol)/...

    java代码实现短信猫发短信

    AT命令是与短信猫交互的基础,例如`AT+CMGF`用于设置短信模式(文本或PDU模式),`AT+CMGS`用于发送短信,`AT+CMGL`用于读取短信等。编写Java代码时,你需要构造这些命令字符串并通过串口发送。 4. **Java代码实现...

    java短信服务工具类

    Java短信服务工具类是开发过程中...以上是关于"Java短信服务工具类"的一些关键知识点,涵盖了从基础的协议理解到高级的性能优化等多个层面。理解并熟练运用这些知识点,可以帮助开发者高效、稳定地实现短信服务功能。

    java 短信开发 demo

    Java短信开发Demo主要涉及到的是Java在通信领域中的应用,尤其是短信服务的实现。在这个领域,Java程序员通常会利用第三方API或者SDK来实现短信的发送、接收以及相关的验证功能。以下是一些关键的知识点: 1. **...

    java 短信猫项目

    Java短信猫项目是一种基于Java语言实现的短信发送与接收系统,它主要依赖于两个关键库:smslib-3.3.3.jar和log4j-1.2.13.jar。这个项目对于需要进行短信服务集成的企业或者开发者来说,是一个非常有价值的参考案例。...

    Java短信收发系统开源

    【Java短信收发系统开源】是一个基于Java技术构建的短信服务平台,主要采用了JSP、Servlet和JavaBean等核心技术,用于实现短信的发送和接收功能。这个开源项目为开发者提供了一个可扩展和定制化的基础框架,方便对...

    Java短信收发;SMSLIB使用;java接收短信;java发送短信

    Java短信收发技术是软件开发中的一个重要组成部分,特别是在企业级应用和移动通信解决方案中。SMSLIB是一个用Java编写的开源库,它提供了短信发送和接收的功能,为开发者提供了方便的API来实现短信服务。本篇将详细...

    java短信验证(前后台全部)

    以上就是Java短信验证的整个流程,对于初学者来说,理解并实现这个功能是掌握Web开发基础的重要一步。在实际应用中,还需要根据项目需求进行优化和调整,比如增加二次验证、语音验证等增强安全性的措施。

    java短信的收发demo

    本示例“java短信的收发demo”提供了一个基础的实现,让我们来深入探讨其中涉及的关键知识点。 1. **短信API集成**: - `java利用飞信API发送短信.doc` 提到了飞信API,飞信是中国移动推出的一种即时通讯服务,它...

    短信猫java,java集成短信接口

    1. **comm.jar**:这是Java通信API(Java Comm API)的库文件,提供了与串行和并行端口交互的能力,是Java程序控制短信猫的基础。 2. **javax.comm.properties**:这是一个配置文件,用于配置Java Comm API的具体...

    Java手机短信项目源码

    Java手机短信项目源码是一个基于Java编程语言的项目,它主要涉及了移动通信领域中短信服务的实现。这个项目可能是为了帮助开发者理解如何在Java环境下构建短信发送和接收功能,或者是一个实际应用中的部分功能模块。...

    cmpp2.0短信网关发送短信代码(java)

    CMPP2.0短信网关发送短信代码...综上所述,基于Java实现的CMPP2.0短信网关发送短信代码是一项涉及网络通信、协议解析、多线程编程等多方面技术的工作,需要开发者对移动通信协议有深入理解,并具备扎实的Java编程基础。

    java手机短信收发程序源码

    1. Java Socket通信:Java Socket是网络通信的基础,它提供了两台机器间低级别的、双向通信的通道。在短信收发程序中,Socket用于建立客户端和服务器端的连接,使得程序能够通过TCP/IP协议发送和接收短信数据。 2. ...

    Java手机短信项目源码Java实用源码整理learns

    【Java手机短信项目源码分析】 Java作为一门广泛应用于服务器端和移动设备的编程语言,其在短信服务领域的应用也非常普遍。在这个项目中,我们主要探讨的是如何利用Java技术实现手机短信的发送与接收功能。这是一份...

    java发送手机短信验证码

    Java发送手机短信验证码是移动应用或网站验证用户身份的常用方法。通过这种方式,可以确保用户...`SendMsgDemo`这个文件为我们提供了一个基础的实现框架,但具体实现还需要根据实际需求和所选择的短信服务商进行调整。

    java 短信平台

    1. **Java编程基础**:Java短信平台的核心是用Java语言编写,因此了解Java语法、面向对象编程、异常处理、多线程等基础知识至关重要。Java的稳定性和跨平台特性使其成为构建可靠系统的首选。 2. **网络通信协议**:...

    Java输入短信界面

    通过实际的代码示例,学习者可以更好地理解Java ME平台下的GUI编程基础,包括如何使用Form、TextField等组件构建用户界面,以及如何通过Command和CommandListener处理用户的交互行为。这对于初学者来说是非常宝贵的...

    中国移动短信网关cmpp 3.0 华为java api

    中国移动短信网关CMPP(China Mobile Packet Protocol)3.0是一种专用于移动...通过理解以上知识点,开发者可以利用华为的中国移动短信网关CMPP 3.0 Java API,构建起与短信网关的桥梁,实现高效、稳定的短信服务应用。

    Java+Demo对接中国移动 云MAS短信发送-Jar

    Java+Demo对接中国移动云MAS短信发送-Jar是一个关于使用Java编程语言与中国移动的云MAS(Mobile Application Server)服务进行集成,实现短信发送功能的技术实践。中国移动的云MAS平台为企业提供了强大的短信服务...

    Java 短信通信接口文档

    Java 短信通信接口文档主要涉及了Java应用...这个Java短信通信接口文档涵盖了短信服务的基础操作,包括发送、接收、状态查询和账户管理等,为开发者提供了完整的API参考,方便集成到Java应用程序中实现短信通讯功能。

Global site tag (gtag.js) - Google Analytics