Comment faire pour démarrer en mode actif pour le protocole FTP client en C, linux

Je dois écrire un peu de ligne de commande client FTP pour linux en C. Il fonctionne très bien pour les utilisations courantes (répertoire de la gestion, la récupération et le stockage de fichiers, etc.), et je tiens à ajouter le mode actif (au moment de chaque transfert est effectué en vertu de la mode passif).

Je sais que je dois envoyer une commande sous la forme d' :

PORT a,b,c,d,e,f

a b c d sont les blocs d'adresses ip et e f les numéros de port. Cependant, ce que je comprends, l'ip doit être l'ip de la machine sur laquelle mon client est en cours d'exécution, mais j'ai été conseillé d'utiliser getsockname(). De ce que j'ai testé, getsockname() me met l'adresse ip locale de l'interface(s) utilisé par mon socket, pas mon ip vu de l'internet. Je ne peux pas donner cette adresse ip pour le serveur de connexion.

La question est : suis-je la compréhension de la commande PORT correctement, et comment obtenir l'adresse ip correcte pour l'envoyer ?