SuperTaoer::Thanksgiving

人总有不顺利的时候,或有疲倦的时候。在那时候,我就把它当成神赐给我们的休假。不必勉强冲刺,不必紧张,不必努力加油,一切顺其自然。

七月 27, 2005

java实现遍历目录并更改图片尺寸

文章类别: 程序 技术 — SuperTaoer @ 11:58 am

文件列表:
listDir.java (遍历目录)
jpgZoom.java (图像任意缩放)
jpgScaleZoom.java (图像等比缩放)
makeScaleImg.java (生成缩略图的程序)
需要注意的:
仅提供了jpeg,png的图像缩放功能
所定目录下必须都是图片
生成的图像放在对应目录的small/目录下
编译程序请使用jdk1.4.x
程序下载地址:
点击下载
编译:

  1. javac -d . listDir.java
  2. javac -d .jpgZoom.java
  3. javac -d jpgScaleZoom.java
  4. javac -d makeScaleImg.java

运行:
需要传入1个命令行参数来运行程序,参数为图片的实际目录,可以是相对的,也可以是绝对的.

  1. java taoer.image.app.makeScaleImg ../images/

“../images/”为你的实际目录
其中makeScaleImg.java可以根据自己的需要进行修改
部分说明
摘取makeScaleImg.java中可以自己定义的部分

  1. package taoer.image.app;
  2. import java.io.*;
  3. import java.util.*;
  4. public class makeScaleImg {
  5.      String path = ""//你的图片目录
  6.      public void makeDirectoryOfImg(String _path1, String _path2) {
  7.      String _path           = _path1 + _path2;
  8.      String _dPath          = _path + "small/"//这里的small可以修改为你想要的新目录名
  9.      String _scaleType      = "width";               //这里决定是按照宽度或者高度来进行比例缩放,可以写 width 或者 height
  10.      String _sFile          = "";
  11.      String _dFile          = "";
  12.      int _scaleNum          = 530;                       //这里是缩放的比例
  13.      boolean _originalShape = true;
  14.      File   _smallPath = new File(_dPath);
  15.      File   _smallFile;
  16.      listDir dir = new listDir(_path);
  17.      _smallPath.mkdir();
  18.      for (int i = 0; i < dir.fileList.length; i++) { 
  19.           File _file = dir.fileList[i];
  20.                if (_file.isFile()) {
  21.                     _sFile = _path + _file.getName();
  22.                     _dFile = _dPath + _file.getName();
  23.                     String fileExtName = _dFile.substring(_dFile.length() - 4, _dFile.length());
  24.                          if (fileExtName.equals(".jpg")) {
  25.                               _smallFile = new File(_dFile);
  26.                                    if (!_smallFile.isFile()) {
  27.                                         System.out.println("sFile is: " + _sFile);
  28.                                         System.out.println("dFile is: " + _dFile);
  29.                                         jpgScaleZoom zoom = new jpgScaleZoom(_sFile, _dFile, _scaleType, _scaleNum);
  30.                                         zoom.originalShape = _originalShape;
  31.                                         zoom.makeImg();
  32.                                    }
  33.                               }
  34.                     }
  35.                }
  36.      }
  37. }

基本就这么多吧
如果有不明白的朋友可以给我留言
我也是初学java,希望可以和朋友们交流
程序代码不是很精
希望高手指点,也希望没有误人子弟 :p



七月 25, 2005

taoer.net 正式启用

文章类别: 生活 情感 — SuperTaoer @ 12:05 am

taoer.net 命名为:Autumn::秦亚秋的blog
这个网站是我给一个白血病的女孩子做的

那个女孩子大约26岁
名字叫秦亚秋
日本留学生
江苏人
现在在北京的医院接受治疗

很可惜
在香港找到了匹配的骨髓后
来到北京,被告知:身体状况已经不能进行手术了
…….

我听到这个消息后
决定为她做一个网站
可能她永远都不会知道了
不过我会把这个网站一直做下去的
算是尽我自己的一份力吧

有时间我会去看你的 :)

真心的希望你可以健康起来 :)

七月 20, 2005

素质,人品,人性

文章类别: 生活 情感 — SuperTaoer @ 10:42 pm

今天从爸爸妈妈家上班的时候
特意早出家门半个小时
去看看我的小学和初中学校
本来以为今天上班路上会是愉快的

但是事情总是不完美的
在你愉快的时候
总会有不和谐的因素来干扰你

当我慢慢骑车到复兴门刚过的佟麟阁路口的时候
感觉到后面的自行车碰到了我的自行车
我回头望去
一个女的和她的电动自行车摔倒在路上
我于是停车下来
帮那个女的把东西拣起来,又把她和她的车都给扶了起来
然后问问她有没有事情
见她没有说话
我就上车打算继续上班去了

这个时候那个女的叫住了我
说你先别走啊
我问她还有什么事情么
她说她的车走不了了
问我怎么办
我听了感觉很茫然
她接着说
让我把车给她修好了
我看她的车把歪了
帮她正过来了

她说不行
车还是走不了
还说车的灯坏了
她也擦伤了
我感觉那个女的有些耍赖
我对她说是她撞得我,我好心好意的帮她,她还和我耍赖
她说看我要往左拐突然往右转弯了
我晕,左边是机动车道,是隔离带,右边才是自行车道,我左转做什么去啊
我说我还要赶去上班,要不就要迟到了,我把手机号码留给你都行
她说的更狠,说她自己已经迟到了,也不在乎了
按照我的性格
她要是个男的
事情反而好办了
大不了武力解决,我又不怕
偏偏是个女的
打不能打,骂不能骂
我说她的车没有事情她偏说车坏了
于是我带着她去找前面的警察
警察叔叔给我往回指着另外一个警察说找他
又找到那个交警,重复了一遍情况
交警又叫来一个交警
再次的重复情况,我都服了
交警说现场没有了
如果要公了的话,要先把双方的事故车都拖走,然后10天以后法院听证
我一听,头就大了,我哪里有时间这么搞阿,北京的交通这么堵,自行车是我上班的交通工具阿
无奈,先给公司的姐姐打个电话,说下自己可能会迟到
然后我又问那个女的
我带你修车去行不?
那个女的不知道故意的还是跟我装纯,就是不说话
我差点急了,但是当时在长安街,还有两个警察在旁边,我忍
后来警察也看出来了
对那个女的说
赔你点钱你自己修车去行不?
好,这下那个女的总算说话了,我不知道修车要花多少钱,
还说不光皮肤破了,关节还疼,听到这里我再忍,
我算是知道那个女的什么意思了,我告诉她,我钱包里面就有100元了,给她50修车够了
自己留一半要吃饭,她说她找不开,我问警察叔叔有没有零钱换一下,警察说有
这个时候那个女的又说了,她还要看病,50不够,警察这个时候也烦了
对我说要不你给她100,我想,得,谁让我大早上碰上那么倒霉的衰人呢
100就100吧,这次那个女的同意了,我当时想我要是有200估计她也得要200
警察开单子,单子上还要写是我的责任,由于我行车变线导致的事故的发生。
然后双方签字
警察叔叔还算负责人,说签字之后就等于双方都同意解决了,以后双方各有什么事情对方都没有责任了。

真是很郁闷,本来蛮开心的一个早上
就让一个无赖给搅了
开单子的时候,知道那个女的是82年出生的,才比我大不到一岁,怎么好的不学,竟学些歪门邪道呢,我看她是外地人,好心好意帮她,她倒好,用传说中的北京人的“碰瓷儿”来对付我,真不知道现在的人素质怎么都那么差呢?

我知道北京为什么申奥到2008才成功,就是因为有那些素质低的人一直在捣乱

这件事情让我烦了一整天
要是平时,就当做破财免灾了,
但是,那100元钱是我计划这个周末去看一个白血病的女孩子去的啊
没办法,下班的时候找朋友又借了600
不义之财,那个无赖会遭到报应的

人之初,性本善。性相近,习相远。
三字经开始这两句说的一点也不错。

我不知道,以后还能不能那么善良
今天朋友对我说,下次再遇到这种事情
不要动手,那样问题会上升一个高度的
你就骂她,还要先骂她,把她骂服了为止,对付这种人就要这样
我听后
笑了笑,感觉这种方法非常的野蛮但是非常的实用
没办法,社会就这样

以后我还是会当好人的
但是要看清楚对象了
对于无赖,有时候可能真的要用一些特别的手段来解决问题吧
毕竟,没有人有义务让别人无缘无故的来伤害自己吧

写了这么多,大部分都是写这件事情的过程的。

希望那个无赖早点得到报应
也希望周围的空气可以好一些。
最希望的还是,那个女孩子可以出现奇迹,希望她不要放弃自己的生命。
最晚这个周末,打算用闲置的 www.taoer.com/autumn 为她做个blog
即使有一天她到了天堂,我也会一直把blog做下去的。
不过还是希望可以看到健康快乐的她 :)

该睡了,
烦人的事情睡醒了就忘记吧。
希望明天不要起床晚了 :)

美好的回忆

文章类别: 生活 情感 — SuperTaoer @ 10:30 pm

今天上午我是从父母家去上班的,
特意早出来了半个小时
打算顺路去看看我的小学和初中

慢慢的骑着车
7年后重新走陪伴了我9年的上学的路

河边,早点摊,街心公园,居民小区,车库,还是老样子,没有变
仿佛这一切就像刚发生的,在初中驻足了一会儿,
以前的133中学不知道什么时候已经改为66中了
教学楼还是以前的教学楼,但是颜色由绿色变为深的橘黄色了
操场还是那么的大
但是篮球架都已经换上好的了
跑道也修了
不知道以前打乒乓球的水泥台子还在不在
食堂还是那个位置么?
每天中午还要排长长的队伍打饭么?

到了小学那边,一点样子都没有变
传达室的位置,小操场,教学楼的玻璃
学校后面的小卖部
一切还是那么的熟悉
不知道穿过学校的教学楼
那个主席台还在不在
记得上小学的时候
1,2年的学生是在小操场做操
等到3年级以后才能到大操场去
这里也曾经是和同学嬉戏玩耍的乐园
还记得小学的同学,贾鹏,林竟,董婕。。。
不知道小学的苏老师现在在哪里
可能早已经忘了我了吧
到现在一直认为苏老师是最好的老师了
记得那个时候
背不出来数学1到9的加减法
说谎肚子疼,最后还是被老师识破了
期中考试数学考了97分,怕爸爸说我,自己给改成了100分
那个时候真的很好玩
不知道小学同学现在都在哪里。。。

说着说着感觉有些伤感了
其实回忆还是蛮好的
回头看看从前
会让自己的心情好很多

希望以前的同学们生活事业全都顺心如意吧 :)

SyncML 嵌入式系统数据同步协议

文章类别: 程序 技术 — SuperTaoer @ 5:24 pm

转自: linux伊甸园

SyncML 简介

姜君
蓝点软件北京研发中心工程师

内容:

SyncML协议简述
SyncML 底层通讯
SyncML同步协议
SyncML表示协议
SyncML 参考工具包
相关资源
作者

目前在嵌入式系统与其他通信设备的数据同步方面,业界还没有统一的标准、协议。为了解决这个问题,IBM、Lotus、Motorola、Nokia、 Palm Inc、Psion、Starfish Software已经形成了SyncML协议的标准草案。这个草案将会发展成为一个通用的可以被用在工业界的同步协议。本文简单介绍了SyncML协议与应用该协议的工具包。
1 SyncML协议简述

目前,移动计算和通信设备的流行很大部分原因是因为它们具有一些方便的功能,比如说在需要时可以发送信息给其他用户,用户希望随时随地都可以利用掌上设备访问信息和执行应用程序,甚至在飞行中也可以获得和更新信息。

具有在一台掌上设备运行应用程序和处理信息、还可以将应用程序和信息的更新同步回到办公室的设备或者网上的这种能力对于普遍、离线计算的效用和流行是一个关键。

遗憾的是,到今天为止还有两种方式没有实现:

支持任何移动设备同步的网络数据
支持同步人和网络数据的移动设备
这样一来,需要为移动设备增加很多用来同步不同的,尽可能多的数据所需要的协议,这些协议中的每一个仅适用于在一个选定的设备子集上进行选定的传输和运行,并且可以访问一部分网络数据,单一同步标准的缺乏为最终用户、设备制造商、应用程序开发者和设备提供商制造了很多问题

SyncML是一个新的标准,为了开发一个简单、通用的可以用于工业界方面的数据同步协议,推进这个标准的有IBM、Lotus、Motorola、Nokia、Palm Inc、Psion、Stafish Software。其他的公司、企业不断的被补充进来。

1.1 通用同步协议的优点
下面让我们看看适合工业界范围的数据同步协议对于每组角色的有益之处。

1. 最终用户:今天移动设备用户可能在每一种设备上使用了不同的同步产品。这样就会,有一种程序用来在膝上电脑和网络数据之间同步文件,另一种用来同步掌上电脑的日历,还有远程email访问,每一种技术只能用来同步少数应用程序或者被限制成特殊类型的网络连接。这种安排安装昂贵、配置和操作复杂、管理昂贵。使用SyncML,用户可以购买可以使用广泛的数据类型的设备。

2. 设备制造商:当每一个设备制造商想要支持这种能支持所有用户和服务提供商进行数据访问的技术。实际上一个设备会支持一种数据同步技术。这种选择迫使制造商压缩存储空间、内存、电源的用量和消耗。设备制造商会从通用的协议中获得好处,这种通用的协议使设备共同使用广泛的应用程序、服务、网络和传输技术。

3. 服务提供商:正在进入快速增长的应用程序舞台的服务提供商非常关注这样一个现象,即同步技术的增多会使在有效的成本下扩展用户和支持用户成为不可能。现在服务提供商已经支持一定范围的数据类型和应用中的设备;还必须安装、配置多种服务的基础结构,维护和支持这些基础结构,并且保证兼容性和性能。现在可选的是利用单独的数据连通方案,陷入了避免紧密结合的私有解决方案。使用SyncML,将会使提供支持广阔的应用程序的连接成为可能。

4. 应用程序开发者:选择支持多种同步技术可以使应用程序支持更多的设备类型和网络数据,但是这种选择有一些浪费。为了保持向下兼容性开发者失去了选择网络数据仓库的灵活性,这也会增加程序开发的消耗和最终产品的复杂性。增加了复杂性的网络数据仓库对服务供应商的安装和采用是一个障碍。使用SyncML,可以开发能连接更多设备集合和网络数据的应用程序。

1.2 通用同步协议的描述
通用同步协议的目标是普遍适用,同步两端可以是任何一种类型、在任一种网络上面,这样会:

同步网络数据与任一种移动设备
同步移动设备与任一种网络数据
数据同步协议会同步网络数据和很多不同的设备,包括掌上电脑、移动电话、自动计算机和桌面计算机。一个用户可以在不同的设备上访问、操作同样的数据集合,举个例子,用户可以使用掌上设备或者移动电话阅读电子邮件,还可以维护一个一致的、更新的纪录。

同样的,同步两端可以使用任意类型,这使得移动设备可以支持更多数据类型,包括电子邮件、日历、事务管理信息、数据库中的企业数据和Web文档。这种功能使得想要通过电子邮件接收订单的用户可以在同样的设备上访问公司的目录清单系统,用来最后决定交付日期。

实现这个目标,协议需要下列特性:

可以有效的在有线和无线网络上运作
支持多种传输协议
支持任意的网络数据
可由多种应用程序访问
考虑到移动设备的资源限制
构造于现有的全球互联网和Web技术之上
协议最小功能就是赋予所有设备最常用的同步能力

2 SyncML 底层通讯

2.1 绑定Http

2.1.1 Tcp 传输服务

Http通信一般是在 Tcp连接之上的,这个绑定不是必需的,如果Http基于其它的协议,那么需求也和下面Tcp定义的相似

2.1.1.1 连接
在Http客户端连接到Http服务器端的时候,SyncML客户端建立一个Tcp连接在客户和服务器之间通过使用Tcp open操作,在超时的情况下还需要SyncML客户端从新建立连接。

2.1.1.2连接选项
关于端口和协议版本的一些选项。

2.1.1.3 断开连接
当连接不需要的时候,SyncML客户端负责使用tcp close操作结束连接。如果固定连接存在于Http请求中,Http连接的关闭有Http客户端来完成,当Http客户端接收到来自服务器的Http应答中指明这是最后一个SyncML的包。

2.1.1.4 终止
有时候非正常时间发生会要求应用程序中断Tcp连接,这种情况下,Tcp从新初始化来结束当前连接。

2.1.1.5 超时
当服务器超时,SyncML客户端需要重建一个新的HTTP会话并且Http服务器端会尝试从新发送当前的SyncML包

2.1.2. SyncML信息交换
一旦Http连接建立,一个或者多个SyncML消息会通过连接由SyncML客户端传输,它们存在于Http客户端的请求或者Http服务器端的应答中。

在Http请求中POST方法用来传递SyncML消息。

2.1.2.1 每包一个消息
下面是Http请求的部分代码:

  1. POST ./servlet/syncit HTTP/1.1
  2. Host: www.datasync.org
  3. Content-Type: application/vnd.syncml-xml; charset="utf-8"
  4. Content0Length: 1023
  5. Accept: application/vnd.syncml-xml

下面是Http应答的部分代码:

  1. HTTP/1.1 200 ok
  2. Content-Type: application/vnd.syncml-wbxml; charset="utf-8"
  3. Content-LengthL 1023
  4. --HTTP body---

2.1.2.2 一个包里包含多个消息
每一个Sync消息必须使用SyncML MIME媒体类型在HTTP请求或应答中传递,当每个包里有多个SyncML消息的时候,每一个消息是否在分离的HTTP请求或应答传递依赖于它是否是 SyncML的请求和应答。可以根据每一个SyncML消息是否有最后一个元素来判断这个包中是否有更多的SyncML消息,如够有最后一个元素,那么这消息就是该包中最后一个消息。

2.1.3 传输命令
HTTP使用一系列的命令,包括传输方法,头部信息,请求的头部信息,应答的头部信息

2.1.3.1 传输方法
SyncML客户端必须使用POST方法或者可以使用CONNECT方法(如果支持的话)来给SyncML服务器发送SyncML请求。CONNECT方法用来初始化SSL会话以验证HTTP客户和服务器,其他的方法目前没有用在SyncML客户端。

2.2 绑定Obex

2.3 绑定Wsp

3 SyncML同步协议

3.1 动机:

表示协议并不足够来实现信息的交互性
可以在多种设备之间传输多种格式的数据

3.2 设计原则

满足网络延迟的需要
满足各种设备
满足现有的各种储存模式
满足多种安全需求
多种使用模式

3.3 Sync 类型
3.3.1双向同步

客户端和服务器端双向传输信息
在特殊情况下采用Slow sync 作为传输模式
3.3.2 客户端单向同步

只有客户端提出修改信息
特殊情况下,数据可以被输出
3.3.3 服务器端单向同步

只有服务器端提出修改信息
特殊情况下,数据可以被输入
3.3.4 服务器端通告

同步要求从服务器端传到客户端
3.3.5 双向同步例子

日历的同步传输
客户端的认证请求被接受
客户端传送两条信息
服务器端传送一条信息
服务器端和客户端的数据一致会立刻完成
下面是一个例子,描述同步传输的大体过程。同步传输有七种方式,下面的例子是双向传输,最复杂的一种。首先进行初始的准备工作,然后进行传输,再进行确认。

3.3.5.1客户端发出同步请求

  1. <syncml>
  2. 相当于同步的头文件,基本为固定模式
  3. <synchdr>
  4. <verdtd>1.0</verdtd>
  5. <verproto>SyncML/1.0</verproto>
  6. <sessionid>1</sessionid>
  7. <msgid>1</msgid>
  8. 同步初始化时数值为一,相当于第几个回合
  9. 目标地址
  10. <target><locuri>http://www.syncml.org/sync-server</locuri></target>
  11. 源地址
  12. <source><locuri>IMEI:493005/10/059280/0</locuri></source>
  13. 认证
  14. <cred> <!--The authentication is optional.-->
  15. 认证模式
  16. <meta><type xmlns='syncml:metinf'>syncml:auth-basic</type></meta>
  17. 相当于密码
  18. <data>dXNlcmlkOnBhc3N3b3Jk=</data> <!--base64 formatting of "userid:password"-->
  19. </cred>
  20. <meta> <!--The Meta is now used to indicate the maximum SyncML message size, which
  21. client can receive.-->
  22. <mi :MaxMsgSize xmlns:mi='syncml:metinf'>5000</mi>
  23. </meta>
  24. </synchdr>
  25. 头文件结束
  26. <syncbody>
  27. 唤醒对方,相当于发出信号
  28. <alert>
  29. <cmdid>1</cmdid>
  30. 命令ID为1
  31. <data>200</data> <!-- 200 = TWO_WAY_ALERT -->
  32. 共有七种连接方式,200代表其中一种
  33. <item>
  34. <target><locuri>./contacts/james_bond</locuri></target>
  35. 进行操作的目标和地址,相当于数据库
  36. <source><locuri>./dev-contacts</locuri></source>
  37. <meta>
  38. 相当于认证
  39. <anchor xmlns='syncml:metinf'>
  40. <last>234</last>
  41. <next>276</next>
  42. </anchor>
  43. </meta>
  44. </item>
  45. </alert>
  46. 上传
  47. <put>
  48. <cmdid>2</cmdid>
  49. <meta><type xmlns='syncml:metinf'>application/xml</type></meta>
  50. 固定的格式
  51. <item>
  52. <source><locuri> devinf10</locuri></source>
  53. 固定的格式
  54. <data>
  55. <devinf xmlns='syncml:devinf'>
  56. 相当于本地的数据描述
  57. <man>Big Factory, Ltd.</man>
  58. <mod>4119</mod>
  59. <oem>Jane's phones</oem>
  60. <fwv>2.0e</fwv>
  61. <swv>2.0</swv>
  62. <hwv>1.22I</hwv>
  63. <devid>1218182THD000001-2</devid>
  64. <devtyp>phone</devtyp>
  65. <datastore>
  66. <sourceref>./contacts</sourceref>
  67. <displayname>Phonebook</displayname>
  68. <maxguidsize>32</maxguidsize>GUID
  69. 相当于索引
  70. <rx -Pref>
  71. <cttype>text/x-vcard </cttype>
  72. <verct>2.1</verct>
  73. </rx>
  74. <tx -Pref>
  75. <cttype>text/x-vcard</cttype>
  76. <verct>2.1</verct>
  77. </tx>
  78. 数据存储能力
  79. <dsmem>
  80. <maxmem>32650</maxmem>
  81. <maxid>250</maxid>
  82. <freemem>22430</freemem>
  83. <freeid>122</freeid>
  84. </dsmem>
  85. </datastore>
  86. <ctcap>
  87. <cttype>text/x-vcard</cttype>
  88. <propname>BEGIN</propname>
  89. <valenum>VCARD</valenum>
  90. <propname>END</propname>
  91. <valenum>VCARD</valenum>
  92. <propname>VERSION</propname>
  93. <valenum>2.1</valenum>
  94. <propname>N</propname>
  95. <propname>TEL</propname>
  96. <paramname>VOICE</paramname>
  97. <paramname>CELL</paramname>
  98. </ctcap>
  99. <synccap>
  100. <synctype>01</synctype>
  101. <synctype>02</synctype>
  102. </synccap>
  103. </devinf>
  104. </data>
  105. </item>
  106. </put>
  107. <get>
  108. <cmdid>3</cmdid>
  109. <meta><type xmlns='syncml:metinf'>application/xml</type></meta>
  110. <item>
  111. <target><locuri> devinf10</locuri></target>
  112. </item>
  113. </get>
  114. <final />
  115. </syncbody>
  116. </syncml>

3.3.5.2服务器端发出同步请求

  1. <syncml>
  2. 头文件
  3. <synchdr>
  4. <verdtd>1.0</verdtd>
  5. <verproto>SyncML/1.0</verproto>
  6. <sessionid>1</sessionid>
  7. <msgid>1</msgid>
  8. <target><locuri>IMEI:493005/10/059280/0</locuri></target>
  9. <source><locuri>http://www.syncml.org/sync-server</locuri></source>
  10. <cred> <!--The authentication is optional.-->
  11. <meta><type xmlns='syncml:metinf'>syncml:auth-basic</type></meta>
  12. <data>dXNlcmlkOnBhc3N3b3Jk=</data> <!--base64 formatting of "userid:password"-->
  13. </cred>
  14. </synchdr>
  15.  
  16. <syncbody>
  17. 相当于回复客户端请求
  18. 回复头文件
  19. <status>
  20. <msgref>1</msgref><cmdref>0</cmdref><cmd>SyncHdr</cmd>
  21. <targetref>http://www.syncml.org/sync-server</targetref>
  22. <sourceref>IMEI:493005/10/059280/0</sourceref>
  23. 212代表正常
  24. <data>212</data> <!--Statuscode for OK, authenticated for session-->
  25. </status>
  26. 回复Alert
  27. <status>
  28. <msgref>1</msgref><cmdref>1</cmdref><cmd>Alert</cmd>
  29. <targetref>./contacts/james_bond</targetref>
  30. <sourceref>./dev-contacts</sourceref>
  31. <data>200</data> <!--Statuscode for OK-->
  32. 200代表正常
  33. 把认证对上,对方请求的值
  34. <item>
  35. <data><anchor xmlns='syncml:metinf'><next>276</next></anchor></data>
  36. </item>
  37. </status>
  38. <status>
  39. 回复Put
  40. <msgref>1</msgref><cmdref>2</cmdref><cmd>Put</cmd>
  41. <sourceref> devinf10</sourceref>
  42. <data>200</data> <!--Statuscode for OK-->
  43. </status>
  44. 返回值,请求对方
  45. <results>
  46. <msgref>1</msgref><cmdref>3</cmdref>
  47. <meta><type xmlns='syncml:metinf'>application/xml</type></meta>
  48. 固定格式
  49. <item>
  50. <source><locuri>devinf10</locuri></source>
  51. 固定格式
  52. <data>
  53. 相当于数据描述
  54. <devinf xmlns='syncml:devinf'>
  55. <man>Small Factory, Ltd.</man>
  56. <mod>Tiny Server</mod>
  57. <oem>Tiny Shop</oem>
  58. <devid>485749KR</devid>
  59. <devtyp>Server</devtyp>
  60. <datastore>
  61. <sourceref>./contacts</sourceref>
  62. <displayname>Addressbook</displayname>
  63. <rx -Pref>
  64. <cttype>text/x-vcard </cttype>
  65. <verct>2.1</verct>
  66. </rx>
  67. <rx>
  68. <cttype>text/vcard </cttype>
  69. <verct>3.0</verct>
  70. </rx>
  71. <tx -Pref>
  72. <cttype>text/x-vcard</cttype>
  73. <verct>2.1</verct>
  74. </tx>
  75. <tx>
  76. <cttype>text/vcard</cttype>
  77. <verct>3.0</verct>
  78. </tx>
  79. 存储能力
  80. <dsmem>
  81. <maxmem>132650</maxmem>
  82. <maxid>1250</maxid>
  83. <freemem>122430</freemem>
  84. <freeid>1122</freeid>
  85. </dsmem>
  86. </datastore>
  87. <ctcap>
  88. <cttype>text/x-vcard</cttype>
  89. <propname>BEGIN</propname>
  90. <valenum>VCARD</valenum>
  91. <propname>END</propname>
  92. <valenum>VCARD</valenum>
  93. <propname>VERSION</propname>
  94. <valenum>2.1</valenum>
  95. <propname>N</propname>
  96. <propname>TEL</propname>
  97. <paramname>VOICE</paramname>
  98. <paramname>CELL</paramname>
  99. <cttype>text/vcard</cttype>
  100. <propname>BEGIN</propname>
  101. <valenum>VCARD</valenum>
  102. <propname>END</propname>
  103. <valenum>VCARD</valenum>
  104. <propname>VERSION</propname>
  105. <valenum>3.0</valenum>
  106. <propname>N</propname>
  107. <propname>TEL</propname>
  108. <paramname>VOICE</paramname>
  109. <paramname>FAX</paramname>
  110. <paramname>CELL</paramname>
  111. <cttype>text/vcard</cttype>
  112. <propname>BEGIN</propname>
  113. <valenum>VCARD</valenum>
  114. <propname>END</propname>
  115. <valenum>VCARD</valenum>
  116. <propname>VERSION</propname>
  117. <valenum>3.0</valenum>
  118. <propname>N</propname>
  119. <propname>TEL</propname>
  120. <paramname>VOICE</paramname>
  121. <paramname>FAX</paramname>
  122. <paramname>CELL</paramname>
  123. </ctcap>
  124. <synccap>
  125. <synctype>01</synctype>
  126. <synctype>02</synctype>
  127. <synctype>07</synctype>
  128. </synccap>
  129. </devinf>
  130. </data>
  131. </item>
  132. </results>
  133. 进行双向传输,唤醒对方
  134. <alert>
  135. <cmdid>1</cmdid>
  136. <data>201</data> <!-- 201 = TWO_WAY_ALERT -->
  137. <item>
  138. <target><locuri>./dev-contacts</locuri></target>
  139. <source><locuri>./contacts/james_bond</locuri></source>
  140. <meta>
  141. 发送认证
  142. <anchor xmlns='syncml:metinf'>
  143. <last>200005021T081812Z </last>
  144. <next>200005022T093223Z </next>
  145. </anchor>
  146. </meta>
  147. </item>
  148. </alert>
  149. <final />
  150. </syncbody>
  151. </syncml>
  152. 3.3.5.3客户端提交数据
  153. <syncml>
  154. <synchdr>
  155. <verdtd>1.0</verdtd>
  156. <verproto>SyncML/1.0</verproto>
  157. <sessionid>1</sessionid>
  158. <msgid>2</msgid>
  159. <target><locuri>http://www.syncml.org/sync-server</locuri></target>
  160. <source><locuri>IMEI:493005/10/059280/0</locuri></source>
  161. </synchdr>
  162. <syncbody>
  163. 回复服务器的请求
  164. <status>
  165. <msgref>1</msgref><cmdref>0</cmdref><cmd>SyncHdr</cmd>
  166. <targetref>IMEI:493005/10/059280/0</targetref>
  167. <sourceref> http://www.syncml.org/sync-server </sourceref>
  168. <data>212</data> <!--Statuscode for OK, authenticated for session-->
  169. </status>
  170. 回复服务器的请求
  171. <status>
  172. <msgref>1</msgref><cmdref>1</cmdref><cmd>Alert</cmd>
  173. <targetref>./dev-contacts</targetref>
  174. <sourceref>./contacts/james_bond</sourceref>
  175. <data>200</data> <!--Statuscode for Success-->
  176. <item>
  177. <data>
  178. Anchor回复对方请求的<next>
  179. <anchor xmlns='syncml:metinf'><next>200005022T093223Z </next></anchor>
  180. </next></data>
  181. </item>
  182. </status>
  183. <sync>
  184. <cmdid>1</cmdid>
  185. <target><locuri>./contacts/james_bond</locuri></target>
  186. <source><locuri>./dev-contacts</locuri></source>
  187. <meta>
  188. 存储能力
  189. <dsmem xmlns='syncml:devinf'>
  190. <freemem>8100</freemem>
  191. <!--Free memory (bytes) in Calendar database on a device -->
  192. <freeid>81</freeid>
  193. <!--Number of free records in Calendar database-->
  194. </dsmem>
  195. </meta>
  196. <replace>
  197. <cmdid>2</cmdid>
  198. <meta><type xmlns='syncml:metinf'>text/x-vcard</type></meta>
  199. <item>
  200. <source><locuri>1012</locuri></source>
  201. 数据项地址
  202. <data><!--The vCard data would be placed here.--></data>
  203. </item>
  204. </replace>
  205. </sync>
  206. <final />
  207. </syncbody>