Connaitre le port Client connecté au port 21 du FTP [C/Reseau] - C - Programmation
Marsh Posté le 24-11-2012 à 22:07:33
Bonjour !
Pourquoi vouloir utiliser le (N+1) ? Vous n'avez, a priori, aucune assurance que ce port soit libre ...
Autant laisser faire le système : passez 0 comme numéro de port dans l'appel à la fonction bind, puis récupérez le port qui a effectivement été utilisé avec getsockname().
Sinon, pour répondre à votre question, getsockname devrait être la fonction dont vous avez besoin.
Marsh Posté le 24-11-2012 à 22:44:02
Bonjour,
Merci pour la réponse,
J'utilise le N+1 car, si j'ai bien compris, c'est la convention à utiliser quand on veut faire une connexion active pour un serveur ftp non ?
Marsh Posté le 24-11-2012 à 22:52:16
C'est possible, je ne connais pas la norme par cœur
J'aurais tendance à utiliser un port libre, sans trop me poser de question, vu que de toute façon on passe ce numéro de port au serveur, et qu'on en change à chaque commande.
Mais je suis peut-être hors de l'usage classique
Marsh Posté le 24-11-2012 à 22:57:27
C'est ce que j'ai essayé de faire mais quand j'utilise un port libre, le serveur me répond :
200 PORT command successful. Consider using PASV.
N'étant pas censé recevoir le "consider using PASV", je pensais que c'était du à ça !
Marsh Posté le 25-11-2012 à 00:09:33
Je pense que ce message est simplement là pour indiquer au client qu'il devrait utiliser le mode passif, que le serveur propose.
En effet, le mode passif ne demande pas de configuration réseau de la part du client (si il est derrière un firewall ou un routeur, ou une VM en mode NAT / host only, ...), contrairement au mode actif, qui nécessite que les ports du client soient accessibles par le serveur.
Edit : Le serveur renvoie OK, donc la commande a été bien reçue et acceptée, donc vous pouvez continuer
Marsh Posté le 25-11-2012 à 15:14:12
Bonjour,
Merci pour la réponse, c'était en effet dommage de bloquer sur quelque chose qui fonctionnait ^^.
Par la suite je vais donc essayer de créer la socket de data avec la fonction suivante :
Code :
|
Le problème est que je bloque sur "La socket 4 est maintenant en attente sur l'adresse 0.0.0.0 le port 1030".
Ce code m'a été donné dans l'énnoncé de mon tp, je pense donc qu'il est juste, je ne vois pas pourquoi la connexion bloque sur la fonction accepte.
De plus le fait qu'on essaye de se connecter sur l'addresse 0.0.0.0 m'étonne mais quand je la remplace par mon adresse, le problème persiste.
Voilà où je l'appelle :
Code :
|
Merci
Marsh Posté le 24-11-2012 à 16:44:15
Bonjour,
Je veux programmer un mini shell pour gérer un connexion ftp active.
J'ai un problème puisque pour envoyer le commande PORT il faut que je précise le numéro du port qui est le N+1 de celui qui a initié la connexion.
Ma question est donc, comment connaitre le numéro de port du client qui a initié la connexion vers le port 21 du serveur ftp?
Merci pour votre aide !