首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VC/MFC >

通信协议设计请问

2012-06-13 
通信协议设计请教?需求:测试人的身体情况。终端(比如手机),可通过一些附着于人体的传感器来采集体温,血压等

通信协议设计请教?
需求:
  测试人的身体情况。
  终端(比如手机),可通过一些附着于人体的传感器来采集体温,血压等信息。然后把这些信息传给服务器,由服务器分析这些数据后,再把身体状况传回。
  1、实时性要求很高,比如30s出一次结果。
  2、需要有扩展能力,比如以后会加入其他传感器(比如脉搏,记步计等)。通信协议不可大变
  3、数据包尽可能小。
  4、安全性要求高。


问题:
  1、我请想问一下这样的通信协议该如何设计?
  2、数据类型是用二进制好还是用xml好?  
  3、传输层我想采用udp方式实现,因为较快,而且就算数据没有准确送达,也没必要重发,因为不久就会有新的数据过来了,重发的话也只是之前的身体状况?
  暂时就想到这么多,还望有协议开发经验的朋友多多帮忙,谢谢!

[解决办法]
通讯时,手机可以多次向服务器发信息,最后发检测结束信息
可以考虑xml,扩展性很强

[解决办法]
数据结构不要用 xml ,效率低 ,再说,就算是需要扩展也只是在原结构的下面添加成员,很容易,

tcp或udp不是关键,总之交互过程一定是 请求+应答
[解决办法]
这个很简单,功能就那么一个。每30s发送一次个人身体的状况,然后根据服务器的分析反馈给用户或者记录。
至于扩展那个 只是加个字段的问题。实际上数据类型方面,没有做过传二进制我就不说了。而且一直用的 socket 传输,并没有出现什么问题。
[解决办法]
tcp/ip是有链接的,udp是无连接的,通信协议里的内
xml吧,虽然速度方面是个欠缺,但是我猜你数据量不大吧
udp你收不到就抛弃了,不会再给你发送

要是想不掉线效果,通常可以发送心跳包确认
[解决办法]

探讨
协议可以这么定义:
数据头(起始帧)+命令(也可不要)+长度+数据域+校验字节(1个字节)+结束帧(也可不要,因为有了长度就可以判断出何时结束)
除非了数据域是变动的,其它部分不变,都是固定的,数据域变动是要能向下兼容的,至于数据域的每个字节的含义是又方可以动态定义的,这样就算以后加更多的内容,也不过是数据域的内容多了,通信部分是不需要改的,要改的是发送方进行数据赋值,接收方解析数据含义

[解决办法]
1、可以参看短信协议cmpp或者sgip,包头+包体,固定长的包头,描述整个包
的长度和包的业务类型。包体顺序存储定长不定长的数据。
2、二进制更好,因为传输的冗余数据小,更符合实时性需求
3、UDP足以。通信模型简单,而且易于实现. 只要网络环境不是及其恶劣,完全满足。

热点排行