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

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

转载时请注明出处和作者联系方式
作者联系方式:李先静 <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~~





  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值