Разработка телефонов Android - UDP сервисы - PullRequest
4 голосов
/ 06 декабря 2011

Меня интересует возможность реализации приложения Android, которое взаимодействует со службой UDP. Я уверен, что Android поддерживает UDP:

http://www.helloandroid.com/tutorials/simple-udp-communication-example

Что мне менее понятно, так это то, будет ли такое приложение работать на телефоне Android по обычному тарифу - для двунаправленной связи. Я хочу, чтобы клиент Android связывался с удаленно размещенной службой по протоколу UDP (объявляя о себе) и чтобы сервер впоследствии уведомлял устройство Android о событиях в реальном времени.

Я обеспокоен тем, что мобильное устройство в коммерческой сети может быть вынуждено изменить IP-адрес - например, при входе / выходе из зоны Wi-Fi ... и я неясно, будет ли NAT проблема в типичной сети 3G.

Действительно ли реально использовать UDP для двунаправленной (наиболее эффективной) связи как с телефоном Android, так и с него?

1 Ответ

5 голосов
/ 06 декабря 2011

Есть несколько вопросов, которые вы можете посмотреть здесь. Во-первых, UDP отлично подходит для Android. Он может отправлять и получать пакеты UDP просто отлично. Более серьезная проблема заключается в том, что телефон не может принимать входящие соединения UDP, для которых он не открыл первоначальное соединение, если только он не подключен к сети Wi-Fi и соединение не идет из той же локальной сети.

В 3G / 4G телефон не адресуется извне, поскольку у оператора беспроводной связи установлен межсетевой экран с прокси-сервером. Таким образом, входящие соединения не передаются через этот межсетевой экран. Если вместо этого телефон открывает соединение из-за брандмауэра, то по этой ссылке может проходить двунаправленный трафик.

Теперь проблема, с которой вы столкнетесь, будет

1) Поддержание связи, когда телефон переходит из сети (3G) в сеть (Wifi)

2) Время автономной работы от постоянно открытого соединения

Скорее всего, вы действительно хотите C2DM для того, что вы смотрите.

...