Der Messenger soll entweder über das Internet laufen oder ein Programm
Daran merkt man sofort, dass du keine Ahnung von Netzwerkprogrammierung bzw. den Grundlagen der Netzwerktechnik hast.
Du denkst, dass du C++ kannst? Ich sage, dass du es nicht kannst (zumindest laut meiner Definition). C++ bringt wie alle Programmiersprachen gewisse Bibliotheken mit, welche Funktionen bereitstellen. In deinem Fall gibt es garantiert Bibliotheken, die Klassen für (TCP)Sockets, In- und OutputStreams, DataPakets u.ä. zur Verfügung stellen, welches dir in deinem Projekt helfen kann.
Eine Programmiersprache zu beherrschen, heißt m.M.n. auch eben diese Bibliotheken im groben zu kennen. Zu einer Sprache gehört mehr, als die Syntax und die grundlegenden Kontrollstrukturen (If-Then-Else, Switch, Loops, etc).
Mal von dieser Sache abgesehen, empfehle ich dir nicht, eine neue Sprache anzufangen. Du wirst dich für dieses Thema einlesen müssen (z.B. TCP/IP-Stack). Diese Arbeit wird nur schwieriger, wenn du zusätzlich noch die Sprache wechselst und du am Anfang nicht mal weißt, wie man eine einfache Konsolenausgabe macht.
Falls du dich doch für eine andere Sprache entscheiden willst, kannst du dir eigentlich jede aussuchen. Es gibt für alle (z.B. Java, C++, C#, Python, Ruby, Haskell, JavaScript) irgendwelche Bibliotheken (3rd-Party oder Built-In), die Netzwerkfunktionalität zur Verfügung stellen.
Just my 2 cents...