Попробуйте так:
1. Вы шлете UDP пакет на сервер
2. При приходе пакета обновляете свой статус, что вы онлаин и заодно свои адрес.
3. Ищите список онлайн друзей
4. Посылаете им ответные UDP пакеты
Если они потеряются это не страшно, это geo данные, но работает он проще, чем TCP и быстрее. В качестве сервера советую использовать Netty.
Это лишь предположение, не факт что это будет работать.
P.S. если у вашего приложения все просто с белым IP можно обойтись вообще без сервера.