2010-09-02 1 views
1

Я делаю приложение IM для Android. Приложение состоит из сервера и клиента, оба находятся на андроиде. При запуске приложения регистрируются на веб-сервере. Если клиент хочет отправить IM на сервер за NAT-маршрутизатором, как это сделать? Я слышал о stun4j и jstun, но нигде не нашел примера их использования в android. Спасибо!Сервер мгновенных сообщений на Android за NAT-маршрутизатором

ответ

0

stun4j не является универсальным решением, которое будет работать для всех NAT.

Simplest & Наиболее надежным решением является отправка сообщений через ваш внешний веб-сервер с известным адресом.

+0

Вы хотите сказать, что если A хочет отправить в B (оба позадиNAT), то: A отправляет на сервер и веб-сервер отправляет на B. Как веб-сервер отправляется в B? – user437731

+0

B проверяет сообщения с веб-сервера через постоянное соединение. Comet-like. – BarsMonster

1

Почему сервер должен находиться на устройстве?

Это кажется неэффективным, функции Android лучше всего подходят для типичного клиентского устройства.

Создание приложения мгновенного сообщения довольно просто.

Просто попросите клиента отправить сообщения на веб-сервер, сохраните их.
Попросите других клиентов либо подождать, либо опросить сообщения с веб-сервера.

Это будет работать независимо от типа подключения к Интернету.

Если вы настаиваете на наличии сервера на устройстве, я думаю, что самое близкое решение, которое вы получите, это использовать какую-то библиотеку upnp.

С помощью upnp вы можете просто сообщить маршрутизатору, что он автоматически настраивает NAT на порт вашего сервера.

Это не будет работать для пользователей, которые отключили upnp в своих маршрутизаторах.