Как настроить соединение через NAT?

Есть программка типа чата по сети (для общения) использующее шифрование. Идея такая при подключении вводится порт и IP собеседника (данные заранее известны). В общем запускаю 2 проги в каждой пишу локальный адрес (127.0.0.1) и разные порты, что бы не было путаницы. Все прекрасно работает и сообщения приходят. Но стоило мне запустить их на разных ПК, расположенных в разных сетях, они перестали соединяться. Начал вычитывать и наткнулся на такое понятие как NAT, так как ПК подключаются к интернету через роутеры в сети в которых несколько разных ПК. В принципе в общем я понял что это и зачем. Но как реализовать это в JAVA не знаю. Условие такое, что бы роутер не перенастраивать. т.к. прога должна запускаться на любом ПК подключенном к интернету.

Не знаю есть ли смысл показывать код, т.к. вроде он рабочий стандартный сервер - клиент , но если нужно скину.

Нет ли у кого нибудь пример кода, как это реализовать?