Во-первых, получение общедоступного IP-адреса удаленного компьютера:
- Использовать динамические днс.
- Создайте собственный протокол и запустите сервер, чтобы сохранить список пользователей и IP.
Обработка входящих пакетов UDP:
- Использовать связь клиент / сервер вместо одноранговой.
- Используйте протокол UPnP (я думаю, что xbox делает это), чтобы запросить у вашего маршрутизатора порт. Не все маршрутизаторы поддерживают или поддерживают UPnP.
- Использовать протокол TURN / STUN. Этот протокол был разработан для обхода UDP nat. Для этого требуется внешний сервер, но доступны бесплатные серверы.
Я думаю, что есть библиотеки для UPnP и STUN, но я не могу вам точно сказать.