幻想小说网 酷文学 深夜书屋 叮当小说网 找小说网 无限小说网 红尘小说网

手机探索者开发实录—数据打包

手机探索者开发实录—数据打包

转载时请注明出处和作者联系方式
作者联系方式:李先静 <xianjimli at hotmail dot com>

我们采用XML打包数据,而且采用UTF-8编码,数据打包相对比较简单,主要考虑几个问题:

数据组织,我们有三类数据要传输,一是发送给手机的请求数据包,二是从手机返回的响应数据包,三是从手机上报的事件数据包。

请求数据包的组织方法 (我已经记不得DTD的语法细节,只能给个例子):

  1. <req name="clipboard_set_data">
  2. <me_data>
  3. <type>1</type>
  4. <length>3</length>
  5. <data>616263</data>
  6. </me_data>
  7. </req>


Req表示是一个请求数据包,其属性name= clipboard_set_data表示设置剪切板数据,中间夹的是数据,长度是3数据却有6字符并不是无意中犯下的错误,3表示有效数据长度,6个字符是编码之后的数据。

响应数据包的组织方法:

  1. <resp name="clipboard_get_data" ret="0">
  2. <me_data>
  3. <type>1</type>
  4. <length>3</length>
  5. <data>616263</data>
  6. </me_data>
  7. </resp>


resp表示是一个响应数据包,其属性name= clipboard_get_data表示是响应获取剪切板数据的请求,ret表示执行操作的结果,这是在一个枚举中定义的,同样中间夹的是数据。

事件数据包的组织方法:

  1. <on_event type="newsms">
  2. <me_event>
  3. <type>newsms</type>
  4. <info><received> some sms.</info>
  5. </me_event>
  6. </on_event>

On_event表示事件发生,属性type表示事件类型,中间的参数有更详细的说明。

程序实现比较简单,因为采用UTF-8编码,标准C中的字符串处理函数仍然可以使用。事先不知道数据包的大小,所以存放数据包的buffer要可以动态增长,我们封装一个MobileExplorerBuffer类,由它管理内存的动态增长。要传输的基本数据类型并不多,有必要把这些数据类型的打包封装起来,一方面可以重用代码,另外一方面也可以隔离变化。

~~end~~





posted on 2008-08-24 17:30  张云临  阅读(101)  评论(0编辑  收藏  举报

导航