Moment:
Problem taki że nie byłyby te programy w te samej sieci i server pewnie nie będzie miał publicznego ip.
Powyżej piszesz że nie ma publicznego adresu a potem:
Musze się jakoś łączyć, server nie może być po mojej stronie bo moje ip może się zmienić i jak to na sztywno w programie miałbym swoje ip wbijać?
Bo jeżeli tylko jednak masz adres publiczny tylko dynamiczny to może wystarczy założyć dynamiczną domenę?