Wireless Messaging API

2016-02-19 18:56 10 1 收藏

下面图老师小编要向大家介绍下Wireless Messaging API,看起来复杂实则是简单的,掌握好技巧就OK,喜欢就赶紧收藏起来吧!

【 tulaoshi.com - 编程语言 】

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:

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/bianchengyuyan/)

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;
  
  String url = "sms://+417034967891";
  
  try
  
  {
  
  conn = (MessageConnection) Connector.open( url );
  
  // do something with the connection
  
  }
  
  catch( Exception e )
  
  {
  
  // handle errors
  
  }
  
  finally
  
  {
  
  if( conn != null )
  
  {
  
  }}

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/bianchengyuyan/)

现在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 {
  
  BinaryMessage msg=conn.newMessage( conn.BINARY_MESSAGE);
  
  当然了,你所能发送的数据量是有限的,一般来说,SMS文本信息可以包含160或者是70个字符,
  
  这依靠于你使用何种字符编码,假如是二进制数据,那么容量是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()

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


来源:http://www.tulaoshi.com/n/20160219/1619570.html

延伸阅读
记载Windows使用的时间 有时候你需要记下每次Windows开启和关闭的时间,下面这个小程序就可以完成这个功能,你可以把它放在Windows开始菜单的“启动”文件夹里面,这样当你进入Windows时,这个小程序就会自动启动(不可见),并在你指定的文件中写下当时的时间,在你推出Windows系统时,小程序会关闭并记下离开的时间,并关闭记录文件。 ...
Int Command操 作Int DataHELP_COMMAND运行一个帮助宏或者宏字符串指定要运行的帮助宏名字的字符串地址。假如字符串指定了多个帮助宏,这些宏必须以逗号或分号隔开。对于某些宏,你要使用其缩写名,因为WinHelp不支行长名称。HELP_CONTENTS显示.HPJ文件的OPTIONS中Contens所指定的主题。该命令向后兼容,新的程序应当使用.chn文件和HELP_FINDER...
JTA(Java Transaction API)允许应用程序执行分布式事务处理--在两个或多个网络计算机资源上访问并且更新数据。JDBC驱动程序的JTA支持极大地增强了数据访问能力。 本文的目的是要提供一个关于的Java事务处理API(JTA)的高级的概述,以及与分布式事务相关的内容。一个事务处理定义了一个工作逻辑单元,要么彻底成功要么不产生任何结果...
我曾经写过一个截获MessageBoxW的程序,可以看看,或许对你有一些帮助. 该程序是基于HOOK原理,主要是将自己的函数放到目标PROCESS的地址空间,这里是使用HOOK实现.首先建立一个MOUSE的HOOK程序,然后在全局鼠标HOOK的DLL中做截获动作,可以在PROCESS_ATTACH时做,也可以在鼠标的HOOK链函数中做. 建立全局HOOK我就不说了,可以在网上很多...