Je travaille sur un simple serveur ftp dans c. Je ne sais pas quand le serveur FTP accepte la connexion de données passive du client. À ma connaissance ici est de savoir comment fonctionne ftp passif:Quand le serveur FTP accepte-t-il la connexion de données passive du client?
- client envoie la commande « PASV » au serveur
- serveur crée et se lie à une prise, et écoute sur un port aléatoire. serveur
- utilise getsockname pour obtenir le port aléatoire
- assemblez message de réponse passive au format: 227 Entrée en mode passif (a1, a2, a3, a4, a5, a6). Remarque: le serveur ip est a1.a2.a3.a4 et le numéro de port est: a5 * 256 + a6.
ma question est: quand le serveur ftp accepte-t-il la connexion au dit port aléatoire? le serveur doit-il accepter la connexion de données après avoir envoyé une réponse? ou le serveur ftp doit-il accepter la connexion juste avant que la connexion de données ne soit nécessaire, c'est-à-dire lorsque le client demande un fichier?
J'ai RFC959. Y at-il une autre ressource ftp utile là-bas? Google n'est pas particulièrement utile.
merci à l'avance
c'est ce que vous vouliez dire: 1. le client envoie "pasv" 2. le serveur envoie la réponse avec l'ip et le port et commence à écouter 3. le client envoie "obtiennent le nom de fichier" 4. les appels de serveur acceptent() et envoient le dossier laissez-moi savoir si je comprends correctement – Quincy
C'est correct. Tant que vous appelez 'listen()' avant d'envoyer la réponse 227, cela devrait vous convenir. Vous pouvez tester cela en retardant quelques secondes après avoir reçu la commande GET, juste pour vous assurer que le client n'abandonnera pas avant que vous ayez une chance de 'accepter()'. –