我正在尝试提出一种解决方案,支持在嵌入式设备(基于 xMega128(C))和 Android 应用程序之间进行数据交换。问题是数据交换必须通过互联网进行,嵌入式设备和运行应用程序的移动设备都可以在不同的 NAT 后面,使用不同的 ISP、3G、LTE 等进行连接。
我尝试了 UDP 打孔,但它不适用于对称 NAT。带有预测的打孔也不能保证 100% 的可靠性。我也考虑过使用 ICE,但是 ICE C 库(pjnath、libnice)与选择的硬件不兼容(libs 需要 os)。现在我正在考虑实施或使用(如果存在)流量中继服务器,但这对我来说似乎是一种黑客行为。
还有其他我没有考虑过的选择吗?任何帮助将不胜感激。
理想情况下,通信方案将是:
100% 可靠
相对较低的延迟(3 秒绝对最大值)
可扩展(比如未来多达 50 万台设备)
可由应用程序和设备初始化
多用户——一台设备可以连接许多安卓应用
此外,如果这有帮助,设备和应用程序之间的数据交换不是非常高强度 - 大约每小时 1 个会话,每个会话约 50 条消息,它们之间的时间为 10-20 秒,每条消息的重量约为 100 字节。