idź z tym na 4programmers.net i na forum tam zapytaj ludzi.
Tu już ci wyżej ktoś napisał, że komunikatory popularne, łączą się z serwerem jakimś, np. gadu gadu ma serwery swoje, z nimi każdy program gg, aqq łączy się (co zresztą widać, bo np. wyślesz kumplowi wiadomość, wyłączysz kompa, on kompa też ma wyłączonego, ale włączy go za godzinę, to odczyta twoją wiadomość gg, bo to serwer gg mu ją wyśle, on jest pośrednikiem waszym, gdyby nie istniały serwery gg, mógłbyś się tylko komunikować z kumplem wtedy kiedy macie obaj odpalone komunikatory).
O routerze też ci gość wspomniał, że wklepujesz w przeglądarce adres do panelu logowania routera np. http://192.168.0.1/ i logujesz się, szukasz zakładki port forwarding, czy jakoś podobnie i tam wklepujesz IP wewnętrzne twojego kompa i porty i gotowe.
Nie wiem, czy bez przekierowania portów mógłbyś się łączyć z każdym. Wiele lat temu w Polsce dość popularne było, że dostawcy netu oferowali łącza i każdy miał wewnętrzny adres ip w stylu 192.168.x.x i wtedy nie mogłeś np. radia internetowego otworzyć, bo ludzie ze świata nie mogli się połączyć z tobą, musiałeś latać do dostawcy internetu i prosić go, by przypisał ci publiczny adres IP i wtedy problemy znikały. Dzisiaj chyba już dostawcy netu nie dają nikomu wewnętrznego IP. Nie wiem jak jest teraz, gdy obie osoby mają routery, może przez te routery masz tak jakby wewnętrzne IP i ten problem co wiele lat temu w Polsce, stąd najlepiej przekierowywać porty na routerze co zajmuje 5 sekund i święty spokój masz (jak zakładasz serwer do gry to też porty odblokowujesz sobie na routerze).
Czy bez przekierowania portów można zrobić komunikator, tego nie wiem, nie znam się.
Wejdź na forum na 4programmers.net i tam zapytaj doświadczonych ludzi.