Почему сервер должен быть на устройстве?
Это кажется неэффективным, Android лучше всего работает как типичное клиентское устройство.
Создание приложения для обмена мгновенными сообщениями довольно просто.
Просто попросите клиента отправлять сообщения на веб-сервер, сохранять их.
Пусть другие клиенты ждут или запрашивают сообщения от веб-сервера.
Это будет работать независимо от типа подключения к Интернету.
Если вы настаиваете на наличии сервера на устройстве, я думаю, что самое близкое решение, которое вы получите, - это использовать какое-тоБиблиотека upnp.
С помощью upnp вы можете просто указать маршрутизатору автоматически настроить NAT для порта вашего сервера.
Это не будет работать для пользователей, которые отключили upnp на своих маршрутизаторах.