Nochmal ganz langsam:
Der Server (läuft auf deinem Rechner) lauscht auf einem von dir festgelegten Port hinter eine IP Adresse. Diese IP Adresse ist diejenige mit der du ins Internet gehst und die du von deinem Provider zugeteilt bekommst. Diese IP Adresse ändert sich beim neuen Verbinden zum Provider, d.h. du musst deinem Freund immer die aktuelle IP zukommen lassen.
Der Client (läuft auf dem Rechner deines Freundes) verbindet sich über einen Socket (Kombination aus Port und IP) zu deinem Rechner. Dafür muss er aber deine korrekte IP wissen, und zwar diejenige mit der du dich im Internet befindest. Diese IP ist nämlich einzigartig sodass dein Computer gefunden werden kann.
Eine Private IP (192.168.x.x z.B.) macht überhaupt keinen Sinn, da dein Freund damit deinen Rechner niemals finden kann, über das Internet.
Wenn sich dein Rechner allerdings in einem kleinen LAN befindet und zwischen dir und dem Internet ein Router steht, muss dein Freund natürlich die IP des Routers kennen. Dieser Router muss dann die entsprechenden Packete weiterleiten, nämlich auf deinen Rechner. Und hierfür benötigst du dann deine IP in deinem privaten LAN.
grüße