凌华 さんのプロフィール张凌华フォトブログリストその他 ツール ヘルプ

ブログ


2月6日

J2ME 中处理http连接超时

http是无状态的连接,不像socket可以有timeout的异常,因此在判断超时上一直比较困扰.

这段时间做j2me的一个小游戏.用到了http连接,学习了论坛上说的一种方法.

"声明一个boolean公共变量,表明当前httpconnection是否得到服务器回应。

你的连接线程中在连接之前置这个变量为false;

另起一个监视线程,拿到那个HttpConnection的连接对象,并循环监视这个boolean公共变量。如果指定时间内(20秒后)你的boolean公共变量还是false,那么就主动置httpconnection=null。这样,那边连接线程就会抛出异常退出来。" 

写了Timer类来实现.(学习国外一个网站上的写法)

class Timer extends Thread {
  /** 每个多少毫秒检测一次 */
  protected int m_rate = 100;

  /** 超时时间长度毫秒计算 */
  private int m_length;

  /** 已经运行的时间 */
  private int m_elapsed;

  /**
   * 构造函数
   *
   * @param length
   *            Length of time before timeout occurs
   */
  public Timer(int length) {
   // Assign to member variable
   m_length = length;

   // Set time elapsed
   m_elapsed = 0;
  }
  /**
   * 重新计时
   *
   */

  public synchronized void reset() {
   m_elapsed = 0;
   System.out.println("reset timer");
  }
  /**
   * 故意设置为超时,可以在服务器有返回,但是错误返回的时候直接调用这个,当成超时处理
   *
   */
  public synchronized void setTimeOut()
  {
   m_elapsed = m_length+1;
  }

  /**
    */
  public void run() {
   // 循环

   System.out.println("timer running");
   for (;;) {
    // Put the timer to sleep
    try {
     Thread.sleep(m_rate);
    } catch (InterruptedException ioe) {
     continue;
    }

    synchronized (this) {
     // Increment time remaining
     m_elapsed += m_rate;

     // Check to see if the time has been exceeded
     if (m_elapsed > m_length && !isConnActive) { //isConnActive 为全局变量
      // Trigger a timeout
      timeout();
      break;
     }
    }

   }
  }

  /**
   * 超时时候的处理
   *
   */
  public void timeout() {
      httpConnection = null;
      System.out.println("conn time > " + TIME_OUT + " ms");
    }
 }

 

在http连接线程调用的同时调用 new Timer(20*1000).start();

需要重新计时时候调用timer.reset();

1月30日

基于短信网关WAP推送的实现(转载)

摘要AP PUSH既有信息发送主动、及时的特点,又有可随时随地接收信息的优势,因而具有良好的应用前景。该文简单介绍了WAP PUSH系统框架、推送协议和推送方式,重点介绍了通过短信网关实现WAP推送的实现方法。

关键词无线应用协议,WAP推送,短信网关,PDU 模式

1 WAP推送技术简介

1.1 什么是WAP推送

WAP推送(PUSH)技术是一种建立在客户服务器上的机制,就是由服务器主动将信息发往客户端的技术。同传统的拉(PULL)技术相比,最主要的区别在于推送(PUSH)技术是由服务器主动向客户机发送信息,而拉(PULL)技术则是由客户机主动请求信息。PUSH技术的优势在于信息的主动性和及时性。

PUSH技术在Internet中没能取得大的成功,原因是多方面的。主要原因在于固定网中计算机等固定设备为用户提供了足够的资源和能力去查找信息所以用户通常将它作为一个浏览信息的窗口,而不是被动的信息接收者。同时固定网用户对于信息准确性的要求远甚于对其及时性的要求,因此PUSH技术未能得到广泛的应用。

而在移动网中,由于存在着网络带宽、移动终端能力以及自费标准高昂等诸多限制,使得用户查找信息受到了一定的限制,如果将重要的信息主动及时地推送到用户的移动设备上无疑会大大方便用户。移动通信的优点是移动设备能够随时随地接收信息因此PUSH技术在移动网中可以大展拳脚,WAP PUSH正是PUSH技术和移动通信两者扬长避短相结合的产物。WAP PUSH是在移动网络中应用的PUSH技术,它结合了一般PUSH技术和移动网络的特点。它的系统框架、使用协议和服务方式与固定网上的PUSH技术有很大不同。

1.2 WAP PUSH系统框架

WAP PUSH框架主要包括推送发起者(PI:PUSH Initiator)、推送代理网关(PPG:PUSH ProxyGateway)和推送客户(PC:PUSH Client)三个功能部分。PI位于Internet中,而PC在WAP领域,PI和WAP客户端所使用的协议是不同的,需要在中间建立一个协议转换网关即PPGPPG通过推送访问协议(PAP:PUSH AccessProtocol)与PI通信,通过推送空间传输协议(PUSH OTA:PUSH over-the-Air)完成向客户推送信息的数据传输任务。

PPG完成推送体系结构中的大部分工作,包括从Internet到移动网的访问接入,以及与其有关的认证、安全、客户端控制等所有工作。PPG所提供的主要服务包括:1)PI的标识、鉴权和访问控制;2)对推送内容进行语法分析,并依据数据类型定义(DTD)检错纠错;3)客户寻址与信息传输;4)PAP与PUSH OTA间的协议转换;5)为提高无线信道中的传输效率,对信息进行压缩、编译等处理。

另外,PPG还可以通过别名机制实现组播和广播,即将某些特定的地址别名映射到组播或广播的操作中,具体方案可以由系统实现者决定。不同的客户端,其能力是不同的,PPG还要负责响应PI的客户能力查询请求,以便于PI针对不同的客户端构造合适的内容格式。

1.3 推送协议

PAP是PI与PPG间的通信协议,它使用可扩展标记语言(XML)作为消息的描述语言,通过简单的请求响应机制完成数据的传输。PAP可以在多种通信协议(包括超文本传输协议(HTTP)、简单邮件传输协议(SMTP)等)之上实现。

而PUSH OTA是运行于无线会话协议(WSP)之上的一个较为简单的协议层,负责从PPG到客户代理的数据传输。PUSH OTA可使用面向连接的会话和无连接会话两种WSP层服务,对于使用连接会话的推送,需要在PPG和客户端间预先有一个激活的会话上下文;对于无连接的推送,则通过预留的端口来完成通信。

1.4 推送服务方式

WAP的推送协议中定义了服务指示(SI:Service Indication)和服务加载(SL:Service Load)两项服务,以给用户和网络运营者更多的选择。服务指示是将新信息的指示和相关的通用资源标识符(URI)推送给用户,由用户选择是立即处理信息还是以后处理。服务加载是将一项服务的URI推送给用户,然后客户端自动地使用PULL技术根据该URI启动服务。两种服务的区别在于用户是否介入推送信息的处理过程。SL对推送信息的处理对用户来说是透明的,而SI则在指示用户的同时,请用户对随后的处理做出选择。

PUSH可以将某一站点或某一业务的链接通过短信发送到支持WAP PUSH功能的手机上,这样用户只需要阅读这条短信,打开短信中的链接,就可以直接访问业务了。因此,WAP PUSH实现了短信和WAP业务的结合,节省了用户寻找业务的时间,方便用户直接找到并使用自己喜欢的业务。

2 短消息网关简介

短消息网关(ISMG)是处于短消息中心(SMSC)和业务提供商(SP)之间的设备,它为这两个实体的数据交换提供安全、快捷的通道。网关与短消息中心之间使用SMPP协议(Short Message Peer to Peer,短消息点对点协议), 与SP之间使用CMPP协议(China Mobile Peer to Peer,中国移动点对点协议),因此短消息网关需要完成协议的转换、计费、路由、安全和网络管理等功能。具体说来, SMPP通信代理系统主要实现网关和GSM网中短消息中心(SMSC)的连接,确保准确接收和发送数据,实现高效、可靠的数据传输。为了达到规范要求的不超过0.001%的数据丢包率,SMPP通信代理需要支持流量控制。CMPP通信代理系统主要是实现和SP服务提供商的连接,与SMPP通信代理系统不同的是,由于协议的影响,CMPP通信代理是服务器端,需等待SP的连接,而SMPP通信代理是客户端,需要主动连接SMSC。短消息网关处理系统是网关中最复杂的处理进程,它完成的任务包括:向GNS(汇接网关) 查询路由,维护路由表,进行协议转换和数据分发。防火墙系统主要为网关系统提供安全保障,它包括IP包过滤和身份验证。短信网关计费系统主要形成各种计费话单,为计费提供依据。业务管理系统主要完成对业务进行统计报告,生成报表,为运营者对用户数据的添加、修改、删除以及对网关系统的监控、查询、操作和维护提供接口和界面。

3 基于短信网关发送WAP PUSH

WAP PUSH的发送有两种途径,一个是通过PPG网关,另外一个是通过SMPP协议。其中SMPP是一个基本协议,在中国主要有三个由其派生的协议:中国移动的CMPP协议,中国联通的SGIP(在CDMA上是ETIP),以及小灵通的SMGP。通过中国移动的PPG网关发送WAP PUSH有着开发周期长,调测流程较复杂等不足,而使用CMPP协议即基于短信网关来进行WAP PUSH发送灵活性比较高,相对比较简单。

3.1 WAP PUSH发送的实现模式

可通过计算机串口上连接GSM MODEM,用它向手机发送WAP PUSH。这种方法发WAP PUSH又分三种模式:BLOCK 模式、TEXT 模式和PDU 模式。BLOCK 模式现在用的很少了, TEXT 模式则只能发送ASCII 码,它不能发送中文的UNICODE码,而PDU 模式开发起来则较为复杂,它需要编写专门的函数来将文本转换为PDU 格式,但PDU 模式被所有手机支持,可以使用任何字符集,它也是手机默认的编码方式,所以选用PDU模式发送WAP PUSH.

3.2 PDU 模式

用PDU 模式发送 WAP PUSH可以使用三种编码: 7-bit 编码、8-bit 编码和UCS2 编码。7-bit 编码用于发送普通的ASCII 字符,8-bit 编码通常用于发送数据消息,UCS2 编码用于发送Unicode 字符。由于要实现中文WAP PUSH的发送,所以选择用UCS2 编码,即中文Unicode 码。

⑴ UCS2 编码原理 所谓UCS2 编码,是将单个的字符(1-2 个字节)按ISO/IEC10646 的规定,转变为16 位 的Unicode 宽字符。即将单个的字符转换为由四位的‘0’-‘9’、‘A’-‘F’的数字和字 母组成的字符串。待发送的消息以UCS2 码的形式进行发送。

⑵ 通过UCS2 编码我们得到中文Unicode 码,接着就可以进行发送PDU 串的编制了。从表面上看,PDU 串是ASCII 码串,同样由‘0’-‘9’、‘A’-‘F’这些数字和字母组成。它们是8 位字节的十六进制数,或者BCD 码十进制数。PDU 串除了包含所发送的消息本身外,还包含很多其它参数信息,如服务中心号码、目标号码和编码方式等

例如

0051000BA13108086406F600F5A7850B05040B8423F_

0000303010129060603AE81EA8DCA02056A0045C6080C033231312e_

3133362e3135332e33302f776170707573682f70757368496e6465782e_

6a73703f7075736849643d3035303531313134313630353231000103E8A_

FB7E782B9E587BBE4BBA5E4B88BE993BEE68EA5E88EB7E58F96E5BDA9E4BFA1E58685E5AEB9000101_

为一串可以成功发送的WAP PUSH,其中包括了汉字描述和WAP页面地址。具体分析如下

00 SMSC 地址信息的长度 00表示用手机上设置短信中心号码,PDU 串的“SMSC 址格式”段和“SMSC 地址”段将省去

51 基本参数(TP-MTI/VFP) 不要求发送回复

00 消息基准值(TP-MR)

0B 对方电话的长度

A1 目标地址格式 A1表示为国内格式

3108086406F6 目标地址,补‘F’凑成偶数位后奇偶位互换

00 协议标识(TP-PID) 是普通GSM 类型,点到点方式

F5 用户信息编码方式 (TP-DCS)

A7 有效期(TP-VP)

85 用户信息长度(TP-UDL)

0B WAP PUSH头部的总长度

05040B8423F0表示接下来是一个WAP PUSH

00 表示是Concatenated Short Messages

03 长度

03 reference number

01 表示分成1个短信发送

01 当前包的序号

29060603AE81EA8DCA WSP

02 标记位

05 -//WAPFORUM//DTD SI 1.0//EN

6A UTF-8

00 标记开始

45

C6 < />

08

0C href="http://

03 字符串开始

3231312e3133362e3135332e33302f776170707573682f

70757368496e6465782e6a73703f7075736849643d3035303531313134313630353231 URL

00 URL 字符串结束

01 >

03 内容描述字符串开始

E8AFB7E782B9E587BBE4BBA5E4B88BE993BEE68EA_

5E88EB7E58F96E5BDA9E4BFA1E58685E5AEB9 内容描述字符串

00 内容描述字符串结束

01 /P>

01 /P>

由以上分析可以看出,WAP PUSH可以被当作一种特殊的短信来发送,WAP PUSH包发送的内容实际上跟通过PPG网关发送的XML原理相同,但是经过了压缩。压缩之后的格式称为WBXML,这种格式将一些标记用代码来表示。然而WBXML的缩略标记分为两部分,一部分是所有类型的XML都通用的,另一部分是不同类型的XML有着不同的解释。

用户接收到此类信息时,在客户端手机支持WAP的情况下,可以直接访问到信息中加载的WAP网站地址,这样服务器也达到了推广业务方便用户使用的目的。由于在UCS2 编码方式下,可发送短消息的最大字符数是140字节,即WAP PUSH中的推送URL与描述文字的总字符数为140,因此描述文字的字数限制与推送的URL长度有关。

4 结束语

WAP PUSH技术结合了PUSH技术的优势和移动通信服务的特性,具有良好的应用前景。但是WAP PUSH技术仍然存在着一些亟待解决的问题,如信息的鉴权与认证、信息的准确性、如何避免垃圾信息等。如何解决好这些问题将是WAP PUSH技术成功的关键。另外,随着GPRS技术和3G无线通信技术的发展,无线信道的带宽将逐步增大,WAP PUSH也将能进一步推送多媒体信息,有着更宽广的应用前景。

WAP PUSH技术(转载三)

摘要AP PUSH既有信息发送主动、及时的特点,又有可随时随地接收信息的优势,因而具有良好的应用前景。该文简单介绍了WAP PUSH系统框架、推送协议和推送方式,重点介绍了通过短信网关实现WAP推送的实现方法。

关键词无线应用协议,WAP推送,短信网关,PDU 模式

1 WAP推送技术简介

1.1 什么是WAP推送

WAP推送(PUSH)技术是一种建立在客户服务器上的机制,就是由服务器主动将信息发往客户端的技术。同传统的拉(PULL)技术相比,最主要的区别在于推送(PUSH)技术是由服务器主动向客户机发送信息,而拉(PULL)技术则是由客户机主动请求信息。PUSH技术的优势在于信息的主动性和及时性。

PUSH技术在Internet中没能取得大的成功,原因是多方面的。主要原因在于固定网中计算机等固定设备为用户提供了足够的资源和能力去查找信息所以用户通常将它作为一个浏览信息的窗口,而不是被动的信息接收者。同时固定网用户对于信息准确性的要求远甚于对其及时性的要求,因此PUSH技术未能得到广泛的应用。

而在移动网中,由于存在着网络带宽、移动终端能力以及自费标准高昂等诸多限制,使得用户查找信息受到了一定的限制,如果将重要的信息主动及时地推送到用户的移动设备上无疑会大大方便用户。移动通信的优点是移动设备能够随时随地接收信息因此PUSH技术在移动网中可以大展拳脚,WAP PUSH正是PUSH技术和移动通信两者扬长避短相结合的产物。WAP PUSH是在移动网络中应用的PUSH技术,它结合了一般PUSH技术和移动网络的特点。它的系统框架、使用协议和服务方式与固定网上的PUSH技术有很大不同。

1.2 WAP PUSH系统框架

WAP PUSH框架主要包括推送发起者(PI:PUSH Initiator)、推送代理网关(PPG:PUSH ProxyGateway)和推送客户(PC:PUSH Client)三个功能部分。PI位于Internet中,而PC在WAP领域,PI和WAP客户端所使用的协议是不同的,需要在中间建立一个协议转换网关即PPGPPG通过推送访问协议(PAP:PUSH AccessProtocol)与PI通信,通过推送空间传输协议(PUSH OTA:PUSH over-the-Air)完成向客户推送信息的数据传输任务。

PPG完成推送体系结构中的大部分工作,包括从Internet到移动网的访问接入,以及与其有关的认证、安全、客户端控制等所有工作。PPG所提供的主要服务包括:1)PI的标识、鉴权和访问控制;2)对推送内容进行语法分析,并依据数据类型定义(DTD)检错纠错;3)客户寻址与信息传输;4)PAP与PUSH OTA间的协议转换;5)为提高无线信道中的传输效率,对信息进行压缩、编译等处理。

另外,PPG还可以通过别名机制实现组播和广播,即将某些特定的地址别名映射到组播或广播的操作中,具体方案可以由系统实现者决定。不同的客户端,其能力是不同的,PPG还要负责响应PI的客户能力查询请求,以便于PI针对不同的客户端构造合适的内容格式。

1.3 推送协议

PAP是PI与PPG间的通信协议,它使用可扩展标记语言(XML)作为消息的描述语言,通过简单的请求响应机制完成数据的传输。PAP可以在多种通信协议(包括超文本传输协议(HTTP)、简单邮件传输协议(SMTP)等)之上实现。

而PUSH OTA是运行于无线会话协议(WSP)之上的一个较为简单的协议层,负责从PPG到客户代理的数据传输。PUSH OTA可使用面向连接的会话和无连接会话两种WSP层服务,对于使用连接会话的推送,需要在PPG和客户端间预先有一个激活的会话上下文;对于无连接的推送,则通过预留的端口来完成通信。

1.4 推送服务方式

WAP的推送协议中定义了服务指示(SI:Service Indication)和服务加载(SL:Service Load)两项服务,以给用户和网络运营者更多的选择。服务指示是将新信息的指示和相关的通用资源标识符(URI)推送给用户,由用户选择是立即处理信息还是以后处理。服务加载是将一项服务的URI推送给用户,然后客户端自动地使用PULL技术根据该URI启动服务。两种服务的区别在于用户是否介入推送信息的处理过程。SL对推送信息的处理对用户来说是透明的,而SI则在指示用户的同时,请用户对随后的处理做出选择。

PUSH可以将某一站点或某一业务的链接通过短信发送到支持WAP PUSH功能的手机上,这样用户只需要阅读这条短信,打开短信中的链接,就可以直接访问业务了。因此,WAP PUSH实现了短信和WAP业务的结合,节省了用户寻找业务的时间,方便用户直接找到并使用自己喜欢的业务。

2 短消息网关简介

短消息网关(ISMG)是处于短消息中心(SMSC)和业务提供商(SP)之间的设备,它为这两个实体的数据交换提供安全、快捷的通道。网关与短消息中心之间使用SMPP协议(Short Message Peer to Peer,短消息点对点协议), 与SP之间使用CMPP协议(China Mobile Peer to Peer,中国移动点对点协议),因此短消息网关需要完成协议的转换、计费、路由、安全和网络管理等功能。具体说来, SMPP通信代理系统主要实现网关和GSM网中短消息中心(SMSC)的连接,确保准确接收和发送数据,实现高效、可靠的数据传输。为了达到规范要求的不超过0.001%的数据丢包率,SMPP通信代理需要支持流量控制。CMPP通信代理系统主要是实现和SP服务提供商的连接,与SMPP通信代理系统不同的是,由于协议的影响,CMPP通信代理是服务器端,需等待SP的连接,而SMPP通信代理是客户端,需要主动连接SMSC。短消息网关处理系统是网关中最复杂的处理进程,它完成的任务包括:向GNS(汇接网关) 查询路由,维护路由表,进行协议转换和数据分发。防火墙系统主要为网关系统提供安全保障,它包括IP包过滤和身份验证。短信网关计费系统主要形成各种计费话单,为计费提供依据。业务管理系统主要完成对业务进行统计报告,生成报表,为运营者对用户数据的添加、修改、删除以及对网关系统的监控、查询、操作和维护提供接口和界面。

3 基于短信网关发送WAP PUSH

WAP PUSH的发送有两种途径,一个是通过PPG网关,另外一个是通过SMPP协议。其中SMPP是一个基本协议,在中国主要有三个由其派生的协议:中国移动的CMPP协议,中国联通的SGIP(在CDMA上是ETIP),以及小灵通的SMGP。通过中国移动的PPG网关发送WAP PUSH有着开发周期长,调测流程较复杂等不足,而使用CMPP协议即基于短信网关来进行WAP PUSH发送灵活性比较高,相对比较简单。

3.1 WAP PUSH发送的实现模式

可通过计算机串口上连接GSM MODEM,用它向手机发送WAP PUSH。这种方法发WAP PUSH又分三种模式:BLOCK 模式、TEXT 模式和PDU 模式。BLOCK 模式现在用的很少了, TEXT 模式则只能发送ASCII 码,它不能发送中文的UNICODE码,而PDU 模式开发起来则较为复杂,它需要编写专门的函数来将文本转换为PDU 格式,但PDU 模式被所有手机支持,可以使用任何字符集,它也是手机默认的编码方式,所以选用PDU模式发送WAP PUSH.

3.2 PDU 模式

用PDU 模式发送 WAP PUSH可以使用三种编码: 7-bit 编码、8-bit 编码和UCS2 编码。7-bit 编码用于发送普通的ASCII 字符,8-bit 编码通常用于发送数据消息,UCS2 编码用于发送Unicode 字符。由于要实现中文WAP PUSH的发送,所以选择用UCS2 编码,即中文Unicode 码。

⑴ UCS2 编码原理 所谓UCS2 编码,是将单个的字符(1-2 个字节)按ISO/IEC10646 的规定,转变为16 位的Unicode 宽字符。即将单个的字符转换为由四位的‘0’-‘9’、‘A’-‘F’的数字和字母组成的字符串。待发送的消息以UCS2 码的形式进行发送。

⑵ 通过UCS2 编码我们得到中文Unicode 码,接着就可以进行发送PDU 串的编制了。从表面上看,PDU 串是ASCII 码串,同样由‘0’-‘9’、‘A’-‘F’这些数字和字母组成。它们是8 位字节的十六进制数,或者BCD 码十进制数。PDU 串除了包含所发送的消息本身外,还包含很多其它参数信息,如服务中心号码、目标号码和编码方式等

例如

0051000BA13108086406F600F5A7850B05040B8423F_

0000303010129060603AE81EA8DCA02056A0045C6080C033231312e_

3133362e3135332e33302f776170707573682f70757368496e6465782e_

6a73703f7075736849643d3035303531313134313630353231000103E8A_

FB7E782B9E587BBE4BBA5E4B88BE993BEE68EA5E88EB7E58F96E5BDA9E4BFA1E58685E5AEB9000101_

为一串可以成功发送的WAP PUSH,其中包括了汉字描述和WAP页面地址。具体分析如下

00 SMSC 地址信息的长度 00表示用手机上设置短信中心号码,PDU 串的“SMSC 址格式”段和“SMSC 地址”段将省去

51 基本参数(TP-MTI/VFP) 不要求发送回复

00 消息基准值(TP-MR)

0B 对方电话的长度

A1 目标地址格式 A1表示为国内格式

3108086406F6 目标地址,补‘F’凑成偶数位后奇偶位互换

00 协议标识(TP-PID) 是普通GSM 类型,点到点方式

F5 用户信息编码方式 (TP-DCS)

A7 有效期(TP-VP)

85 用户信息长度(TP-UDL)

0B WAP PUSH头部的总长度

05040B8423F0表示接下来是一个WAP PUSH

00 表示是Concatenated Short Messages

03 长度

03 reference number

01 表示分成1个短信发送

01 当前包的序号

29060603AE81EA8DCA WSP

02 标记位

05 -//WAPFORUM//DTD SI 1.0//EN

6A UTF-8

00 标记开始

45

C6 < />

08

0C href="http://

03 字符串开始

3231312e3133362e3135332e33302f776170707573682f

70757368496e6465782e6a73703f7075736849643d3035303531313134313630353231 URL

00 URL 字符串结束

01 >

03 内容描述字符串开始

E8AFB7E782B9E587BBE4BBA5E4B88BE993BEE68EA_

5E88EB7E58F96E5BDA9E4BFA1E58685E5AEB9 内容描述字符串

00 内容描述字符串结束

01 /P>

01 /P>

由以上分析可以看出,WAP PUSH可以被当作一种特殊的短信来发送,WAP PUSH包发送的内容实际上跟通过PPG网关发送的XML原理相同,但是经过了压缩。压缩之后的格式称为WBXML,这种格式将一些标记用代码来表示。然而WBXML的缩略标记分为两部分,一部分是所有类型的XML都通用的,另一部分是不同类型的XML有着不同的解释。

用户接收到此类信息时,在客户端手机支持WAP的情况下,可以直接访问到信息中加载的WAP网站地址,这样服务器也达到了推广业务方便用户使用的目的。由于在UCS2 编码方式下,可发送短消息的最大字符数是140字节,即WAP PUSH中的推送URL与描述文字的总字符数为140,因此描述文字的字数限制与推送的URL长度有关。

4 结束语

WAP PUSH技术结合了PUSH技术的优势和移动通信服务的特性,具有良好的应用前景。但是WAP PUSH技术仍然存在着一些亟待解决的问题,如信息的鉴权与认证、信息的准确性、如何避免垃圾信息等。如何解决好这些问题将是WAP PUSH技术成功的关键。另外,随着GPRS技术和3G无线通信技术的发展,无线信道的带宽将逐步增大,WAP PUSH也将能进一步推送多媒体信息,有着更宽广的应用前景。

WAP PUISH技术(转载二)

摘要:无线应用协议作为一个开放的工业标准,代表了移动通信和internet两大技术融合的发展方向。许多新的技术正逐渐融入该体系当中。本文着重分析了wap1.2规范中提出的推送技术(push),并初步探讨了其应用的实现构想。

关键词:无线应用协议 推送 wap

1.简介

自从1998年推出无线应用协议(wap)后,该协议得到了包括nokia、motorola、ericssion等多家大公司在内的业界的广泛支持。各公司除尽快的推出自己的产品,以期占有市场外,还在不遗余力的进行着协议的扩充和新应用的开发工作。推送(push),这项在internet中曾一度引起过轰动的技术,在同移动通信相结合后,再次被认为有着良好的应用前景。

所谓推送技术是一种基于客户服务器机制,由服务器主动的将信息发往客户端的技术,其传送的信息通常是用户所事先预定的。同传统的拉技术(pull)相比,两者最为主要的区别在于前者的是由服务器主动发送信息,而后者则是由客户机主动请求信息。

2.推送技术与移动通信的结合

推送技术的本质在于让信息去主动的寻找用户,因此其优势在于信息的主动性和及时性,通过使用该技术,可以尽快的将信息推送到用户面前;其弱势在于信息的准确性较差,由于简单的筛选机制取代了人工的选择,必然会使推送信息和用户的需求间存在一定的差异。

推送技术在internet中没能取得巨大的成功,原因是多方面的。在固定网中,计算机等固定设备为用户提供了足够的资源和能力去查找信息,所以人们通常将它作为一个浏览信息的窗口,而不是被动的信息接收者,用户对于信息准确性的要求也远胜于对其及时性的要求,因此很难期望推送技术在internet中的成功。

在移动网中,由于存在着网络带宽,移动设备能力及高昂的资费标准等诸多的限制,使得用户无法象在固定网中一样方便的查找信息,这就需要将重要的信息主动及时的推送到用户的移动设备中。移动通信的优点是可以及时方便的发送和接收信息,由于公共通信接入点的普及,使得发送信息的优势不再明显,而及时的接收信息仍然是移动设备所独具的优势。移动的话音业务是将语音信息推送到用户,而wap中的推送技术则是要将包括文字、声音、图像等在内的数字信息推送给用户。所以,扬长避短正是推送技术同移动通信结合的合理性所在。

将推送技术应用于移动通信领域可以带来许多电信增值业务。这包括移动中收发电子邮件,随时获得股价的涨跌信息,天气预报,及时的新闻报道,位置相关服务等。所有这些服务的共同特点在于用户对信息的及时性的要求比较高,用户希望能够通过手机,pda等移动设备随时随地的的到该种服务。

3.wap中的推送技术

无线应用协议在1.2版本的规范中定义了推送技术,提出了一套完整的从服务器到客户端的协议规范,其体系结构图如图一所示。
图一、wap推送技术体系结构图

推送框架主要包括推送发起者(pi)、推送代理网关(ppg)和推送客户(pc)三个功能部份。pi位于internet中,通过推送访问协议(pap)同ppg通信,ppg是internet网和移动网之间的访问接入点,通过推送空间传输协议(p-ota)完成从ppg到推送客户的数据传输任务。基本的工作过程如下:当有消息要推送到客户时,pi首先根据消息的内容和性质构造推送消息,通过pap协议ppg发出推送请求,ppg收到请求后进行一些必要的处理工作(包括压缩、协议转换、安全认证等),然后通过p-ota协议将推送内容传送给客户端。客户端收到推送消息后,根据消息内容和服务类型同用户进行交互。wap的推送协议中针对不同的用户需求定义了服务指示和服务加载两种服务,可根据推送消息的性质选择使用。

从实现的角度看,一般pi是运行于internet端的一台独立的服务器,负责收集推送信息和发起推送请求。由于ppg和客户端间的通信是由运行于wsp之上的p-ota协议完成,所以ppg通常是和wap网关集成在一起。在客户端,为了能够随时收到来自ppg的推送消息,必须在后台始终运行一个推送消息监听程序。另外,由于面向连接的推送请求需要在客户端和服务器端有激活的wsp会话,而wsp连接的建立无法由服务器端发起,所以在客户端中引入了会话初始化程序,以监听来自服务器的会话建立请求,建立并激活wsp会话。

下面分别介绍推送技术的几个关键组成部份:

⑴ 推送代理网关(ppg)

推送技术的主要处理工作基本都集中在ppg中,作为internet到移动网的访问接入点,即要与pi通信,又要负责通过无线信道传输推送信息,所以必须负责所有相关的协议转换和编码工作。概括讲,ppg所提供的主要服务包括:

q pi的标识和鉴权,访问控制。

q 对推送内容进行语法分析,并依据dtd检错纠错。

q 客户寻址与信息的传输。

q pap与p-ota间的协议转换。

q 为提高无线信道中的传输效率,对信息进行处理(如压缩、编译等)。

另外,ppg还可以通过别名机制实现组播和广播,即将某些特定的地址别名映射到组播或广播操作,具体的实现方案可以由系统实现者决定。不同的客户端,其能力是不同的,ppg还要负责响应pi的客户能力查询请求,以便于pi针对不同的客户端构造合适的内容格式。

⑵ 推送访问协议(pap)

pap是pi与ppg间的通信协议,它使用xml作为消息的描述语言,通过简单的请求响应机制完成数据的传输。pap可以实现在多种通信协议之上,包括http,smtp等。目前的wap版本仅给出了利用http隧道机制实现pap的规范。pap支持的操作包括:

q 推送消息提交:pi使用该操作向ppg提交推送请求,推送消息包括xml格式的控制信息,消息体和一个可选的客户能力描述三部份,共同组成一个多部相关的消息(multipart/related)。

q 确认通知:当pi请求确认的推送时,该操作用于传输确认消息。

q 推送取消:pi请求ppg取消先前的推送请求。

q 状态查询:pi利用该操作查询先前的推送请求的执行状况。

q 客户能力查询:pi可利用该操作查询客户端的能力,以调整传送给用户的推送内容及格式。

⑶ 推送空间传输协议(p-ota)

p-ota是运行于wsp之上的一层较为简单的协议层,负责从ppg到客户代理的数据传输。p-ota可使用面向连接的会话和无连接会话两种wsp层服务,对于使用连接会话的推送,需要在ppg和客户端间预先存在一个激活的会话上下文;对于无连接的推送,则通过预留的端口完成通信。

⑷ 服务指示(si)和服务加载(sl)

推送消息送到移动设备后,通常只需显示给用户即可,但用户可能会有些不同的需求。wap的推送协议中定义了服务指示和服务加载两项服务,以给用户和网络运营者更多的选择。服务加载是将一项服务的uri推送给用户,然后客户端自动的使用拉技术根据该uri启动服务。服务指示是将新信息的指示和相关的uri推送给用户,由用户选择是立即处理信息或以后处理。两种服务的区别在于用户是否介入推送信息的处理过程。sl对推送信息的处理对用户来说是透明的,而si则在指示用户的同时,请用户对随后的处理做出选择。

4.wap推送技术的实现

本节以一个电子邮件系统为例,简单的探讨了wap推送技术的实现。在internet中,电子邮件系统已相当的普遍,但是收发电子邮件通常还是限制在固定的pc机完成,信息的及时性大打折扣。虽然gsm的短消息功能也可提供邮件功能,但是信息量小(160个字符),类型单一(仅限于文本),远不能满足用户的需要,所以可以利用wap的推送技术来实现移动电子邮件功能。基本的设计构想如图二所示。
图二、移动email系统设计构想

希望实现的功能包括:

q 服务的登记与取消

q 邮件到来通知(响铃或振动,并提供邮件头部信息)

q 利用手机阅读邮件

q 利用手机发送邮件

q 利用手机配置服务

整个邮件系统由以下几部份组成:

q 邮件服务器:该部份即位于internet中的普通的邮件服务器,负责用户邮件的收发工作。

q pop3邮件代理:该部份使用pop3协议与邮件服务器进行通信,并负责推送消息的发起,是整个系统运行的核心组成部份。它维护着一个用户数据库,记录所有登记该服务的用户的信息,包括电子邮件地址、pop3服务器地址、账号、配置、手机号码等,采用轮询的机制通过internet定期检查各邮件服务器,如发现某用户有新邮件,则取得邮件的部份信息(如收发人、时间、主题等)作为指示内容,并以pi的地址作为uri,共同构成服务指示消息,然后依据该用户的手机号对移动设备寻址,使用pap协议ppg提出推送请求。

q 推送代理网关:ppg收到推送消息后对信息进行鉴权,包括消息是否来自合法的推送服务器,用户是否登记,消息格式是否符合dtd语法等。对于合法信息利用wbxml格式进行压缩,然后通过p-ota协议传送给对应用户的手机。

q 移动设备:包括邮件应用程序和服务加载器,服务加载器负责监控推送消息的到达,当收到合法的推送消息时,以振动或响铃的方式通知用户新邮件的到达,并将指示消息中邮件头部信息显示给用户。这时候,用户可选择立即启动服务或是推迟服务。

系统的工作流程如下:

⑴ pop3代理以一定的时间间隔,使用pop3协议检查各用户是否有新邮件到达,若有则取回邮件的头部信息。

⑵ pop3代理作为推送的发起者,依据收到的邮件头部信息和数据库信息向相应的用户发起推送请求。

ppg对推送的消息进行鉴权和格式检查后,压缩成适合无线链路传输的二进制消息发送给指定的用户。

⑷ 客户端的服务加载器检测到推送消息后,提醒用户新邮件的到达,然后根据用户的选择启动或推迟服务。

⑸ 若用户选择立即阅读邮件,则将启动客户端的邮件程序,以用户账号作为参数,依据指示消息中携带的uri向pi发出wsp get请求。

ppg对wsp请求进行协议转换,向pop3代理发出http get请求。

⑺ pop3代理收到请求后,代理客户从对应的pop3服务器上取得邮件,并构造成wml页面,然后作为请求的响应返回客户端。

从具体的实现上看,现有的许多wap网关产品,如nokia wap server,都集成了ppg的功能,提供了对推送技术的支持,另外,越来越多的移动设备开始支持wap协议,推送功能也在逐渐的得到支持,所以实现的重点就集中在了pop3代理上。这部份的功能可实现在一台同ppg和internet同时有连接的计算机上。需要运行两个服务器程序,一个支持text/wml类型的web服务器,用以响应ppg的http请求,返回邮件页面。另一个特定的监控程序,用以不断的检测与接收新邮件,构造推送消息和wml页面。需要另外说明的是,以上的设计主要是针对利用推送功能实现邮件的接收,对于邮件的发送,则可使用基本的wsp功能实现。

5.发展前景

推送技术结合了自身的优势和移动通信服务的特性,应将有着良好的应用前景。但是推送技术仍然存在着一些亟待解决的问题,如信息的鉴权与认证、信息的准确性问题、如何避免垃圾信息等。如何解决好这些问题将是推送技术成功的关键。另外,随着gprs技术和3g无线通信技术的发展,无线信道的带宽将逐步增大,在无线信道上推送多媒体信息也将成为可能。

WAP PUSH 技术(转载一)

WAP Push是要将互联网上的信息主动推送到用户的手机等移动终端上。达到这个目标需要解决如下两个问题:
(1)互联网服务器如何主动地连通位于无线网络上的手机,通信问题。
(2)互联网上的信息内容采用什么格式,数据表现问题。

WAP论坛(现在归到OMG)在2000年时就提出了WAP1.2规范,相比WAP1.1增加的主要内容就是WAP Push的整个体系。WAP Push分为Confirmed Push,即需要对方回送接收确认信息的Push,和无连接模式的Push,即发送出去后,是否收到不管了。

整个WAP框架包括PI(Push Initiator,即互联网的服务器)、PPG(Push Proxy Gateway,一般为WAP网关)、移动终端三大部分。PI到PPG之间是基于HTTP的PAP(Push Access Protocol)协议(PPG和PI互为HTTP服务器),PPG到移动终端之间是OTA(Over-The-Air)协议。

基本流程是互联网的服务器将要发送的信息内容,采用XML表现形式,通过PAP协议发送给WAP网关。这里发生了很多细节过程后(计费、SP标识、访问控制、信息内容二进制压缩编码、终端发现、终端能力特性检查、终端地址解析),通过OTA协议将内容发送到手机上(2.0以下的规范用OTA-WSP,2.0以上的规范用OTA-HTTP)。

这是很理想的目标,可是在目前全球所有运营商部署的无线网络那里,实现这个基本都不现实。第二代无线网络GSM/CDMA95A是基于信令的电路交换的通信技术,并不支持IP协议,能进行WAP这样数据业务,需要先在信令协议栈上借用modem拨号机制封装成IP/PPP包。WAP网关通过信令网找到手机并建立WSP会话的连接,是不可能实现的。第二代半过渡性的网络技术GPRS/CDMA1.x理论上是可以让手机永久在线,拥有固定的IP地址,可现实并不是如此。空中信道的有限容量、计费管理、网络容量等方面都不成熟,所以,移动终端要像一台服务器那样,接收并处理WAP网关随时发起的主动连接请求,只能等到第三代无线网络技术全面普及的那一天了。

正是由于上述局限,目前,在世界各地,所有运营商和所有方案供应商那里,都采用SMS方式承载OTA侧的推送。SMS是信令通道上传输的,处于网络覆盖中的手机通过BTS、BSC、MSC与短信中心随时随地可以相互通信。所以,作为这种服务器到终端的信息传输载体,SMS是最适合不过了。

中国移动和中国联通都对SP提供了WAP Push接口,他们是通过WAP网关与短信中心的接口用SMS发送到手机上。既然他们也是用短消息来实现的,那么,如果我拥有一个短信发送通道,从理论上说,自然而然也可以发送WAP Push。

下面要说的就是WAP Push的信息表现形式问题。WAP Push的内容有两种,一种是SI,service indication;另一种SL,service loading。这两种内容类型的目的都是发送URL链接到手机上。SI是以异步方式发送一个通知、警示、提醒等信息到手机上,用户会看到屏幕上显示这条通知文字内容,然后,提示你是否去那个页面,如果去,手机将激活为WAP浏览器,打开这个链接,浏览其内容。SL则是直接发送一个URL链接到手机上,手机不会给用户任何提示,自动地启动WAP微浏览器,下载这个URL对应的内容,显示在手机上。让人觉得好像是推送了一个页面下来了似的。MMS就是利用这个机制实现的。

至于为什么不直接发送一个基于XML的WML页面(包括多媒体信息图像、声音),WAP论坛的规范设计者找了一通理由,说这种方式存在很多弊病,所以,WAP Push就没有直接推送内容的规范了。我想未来3G肯定会有这样的规范出台。

目前大部分手机并没有实现对SL的支持,近几年新出的WAP浏览器版本高点的手机基本都支持SI(OEM Openwave微浏览器的手机如果WAP Browser版本在4.0以上的都支持)。国产手机基本都是贴牌生产,内核全是国外的,所以,国内手机技术现状基本跟欧洲一样的格局。

中国联通的WAP网关和WAP Push业务都是有Openwave提供,Openwave出于对市场的垄断和控制,在CDMA手机上的WAP Push支持非常封闭保守,有些接口没有遵循国际规范,通过联通的短信中心发送WAP Push的SI消息到CDMA手机上,只能借用联通和OpenWave提供的接口标准。

下面介绍如何,通过中国移动的SMS接口发送SI到其GSM/GPRS手机上?