Я пытаюсь найти решение, позволяющее обмен данными между встроенным устройством (на основе xMega128 (C)) и приложениями для Android. Ловушка - это обмен данными, должен осуществляться через Интернет, и как встроенное устройство, так и мобильное устройство, работающее с приложением, может находиться за разными NAT, подключаясь с использованием разных интернет-провайдеров, 3G, LTE и т. Д.Работа за NAT - схема связи с устройством
Я пробовал перфорирование отверстий UDP , но он не работает с симметричными NAT. Многопробивная штамповка с предсказанием также не гарантирует 100% надежности. Я также рассмотрел использование ICE, но библиотеки ICE C (pjnath, libnice) несовместимы с выбранным оборудованием (libs требуют os). Прямо сейчас я рассматриваю возможность реализации или использования (если есть) сервера ретрансляции трафика, но это похоже на хак для меня.
Есть ли другие варианты, которые я не рассматривал? Любая помощь будет оценена.
В идеале, схема связи будет:
100% надежность
относительно низкой задержкой (3 секунды абсолютное макс)
масштабируемым (скажем, до 500k устройств в будущее)
, предназначенный как для приложения, так и для устройства
многопользовательский - одно устройство будет подключаться к нескольким андроид приложений
Кроме того, если это помогает, обмен данными между устройством и приложением не очень высокой интенсивности - примерно 1 сеанс в час , ~ 50 сообщений за сеанс с 10-20 секундами между ними, каждое сообщение весом около 100 байт.
Одно устройство общается с макс 10 смартфонами. Позволяет называть его системой. Там может быть до 500 тыс. Таких систем, и решение должно быть в состоянии справиться с этим. – rojarand