python - 移动设备的高效传输协议(protocol)

标签 python optimization mobile network-protocols

我正在一个具有 GPRS 数据连接的平台上工作。我现在拥有的是一个基于 TCP 或 UDP 的自定义协议(protocol),我正在考虑改变它。当前状态下的设备会定期发送小块数据(比如说 30 秒或 5 分钟——这可以而且可能会改变)。我担心的是,随着时间的推移,正在发送的数据将开始变得越来越复杂。我想要的是:

  • 一种在发送的信息和发送的数据大小之间具有良好平衡(尽可能好)的协议(protocol)(GPRS 需要花钱,所以发送的数据必须尽可能小)
  • 一种在数据包信息发生变化时易于扩展的协议(protocol)

  • 目前我的解决方案是:
  • 自定义协议(protocol)(我现在正在使用)
  • 标准/开放协议(protocol)(我听说过二进制 xml,但还没有找到清楚的东西)。

  • 约束:
  • 该设备的计算能力很小,因此压缩数据是不可能的,除了像 RLE 这样的 CPU 密集度较低的方法。 .
  • 使用的语言是 python 和 很多功能关闭(想象一个剥离的 Python 实现只包含列表、字典、一些基本的字符串操作、异常、功能很少的 sys 模块、元组和其他自定义(非标准)函数)。

  • 鉴于这些限制,什么是通过网络传输数据的好/最佳方法? (我指的是TCP/UDP上面使用的协议(protocol))

    任何信息/提示/经验/实现都是有帮助的。

    谢谢,

    尤利安

    最佳答案

    鉴于您的限制,正确编码的 JSON 听起来是合理的。

  • 它相当轻量级(数据大小 + 引号和 {})
  • 它是可扩展的。您无需预先决定固定格式。添加 key 对于传输和接收都是微不足道的。
  • 您可以使用 eval()获取 Python 字典(因为您的 Python 版本已被剥离)。您也可以使用simplejson在没有任何依赖关系的 Python 2.5+ 中。
  • 它是跨其他语言(JavaScript 等)进行数据交换的常用格式
  • 关于python - 移动设备的高效传输协议(protocol),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5523889/

    相关文章:

    python - 应该如何使用 tox 和 py.test 测试 matplotlib 绘图?

    c++ - 是否允许编译器优化堆内存分配?

    iphone - iPhone 和 BlackBerry 的共享库

    mobile - 将项目动态附加到 ListView

    c# - Azure Mobile 中的乐观并发功能

    python - py2neo (1.6) 如何在没有 CypherQuery 的情况下逐个节点属性获取现有节点

    python - 如何使用Python中的Tkinter,使用几个选定颜色的迭代来更改Python中的圆圈颜色,这些颜色随着每次按下按钮而变化?

    python - 使用 python : intervals at x:00 repeat

    c - 高效地编写 For 循环

    javascript - RequireJS/r.js 'baseURL' 属性看似被忽略