移动设备高效传输协议
我正在开发一个具有 GPRS 数据连接的平台。我现在拥有的是基于 TCP 或 UDP 的自定义协议,我正在考虑更改它。当前状态下的设备会定期发送小块数据(假设 30 秒或 5 分钟 - 这可能而且可能会改变)。我担心的是,随着时间的推移,发送的数据将开始变得越来越复杂。我想要的是:
- 一种在发送的信息和发送的数据大小之间具有良好平衡(尽可能好的)的协议(GPRS 需要花钱,因此发送的数据必须具有尽可能小的大小)
- 当数据包信息发生变化时可以轻松扩展的协议
目前我的解决方案是:
- 自定义协议(我现在正在使用)
- 标准/开放协议(我听说过二进制 xml,但还没有找到明确的内容)。
限制:
设备的计算能力很小,因此压缩数据是不可能的,除了 CPU 密集型方法,例如 RLE。
使用的语言是Python,并且关闭了很多功能(想象一下一个剥离的Python实现,只包含列表、字典、一些基本的字符串操作、异常、功能很少的sys模块、元组和其他自定义(非标准)函数)。
考虑到这些限制,通过网络传输数据的好/最佳方法是什么? (我指的是 TCP/UDP 上面使用的协议)
任何信息/提示/经验/实现都有帮助。
谢谢,
尤利安
I am working on a platform having a GPRS data connection. What I have now is a custom protocol over TCP or UDP which I'm thinking to change. The device in the current state sends small chunks of data periodically (let's say 30seconds or 5 minutes - this can, and probably will, change). My concern is that the data being sent will start to be more and more complex over the time. What I want:
- a protocol that has a good balance (as good as possible) between information sent and size of data sent (GPRS costs money so data sent must have as little size as possible)
- a protocol that is easily extensible when packet information changes
For now my solutions are:
- a custom protocol (which I'm using now)
- a standard/open protocol (I've heard about binary xml but haven't found something clear).
Constraints:
the device has little computational power so compressing data is out of the question, except for less cpu intensive methods like RLE.
the language used is python with a lot of features turned off (imagine a stripped python implementation containing only lists, dictionaries, some basic string operations, Exceptions, sys module with little functionality, tuples and other custom (non-standard) functions).
Given these constraints what is a good/best method for transmitting data over the network? (I'm referring to the protocol used above TCP/UDP)
Any information/hints/experiences/implementations are helpful.
Thanks,
Iulian
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
考虑到您的限制,正确编码的 JSON 听起来很合理。
eval()
获取 Python 字典(因为您的 Python 版本已被精简)。您还可以在 Python 2.5+ 中使用 simplejson ,无需任何依赖项。Given your constraints, properly encoded JSON sounds reasonable.
eval()
to get a Python dictionary (since your version of Python is stripped down). You can also use simplejson in Python 2.5+ without any dependencies.不知道这意味着什么,但您应该能够使用以下命令打开 UDP 或 TCP 连接
Python 并根据需要传输数据......真正的问题是什么?
No idea what that shall mean but you should be able to open a UDP or TCP connection using
Python and transmit your data as needed...what is the real question?