Créer un client FTP en utilisant l'UDP

a marqué ce sujet comme résolu.

FTP utilise normalement deux connexions : une de contrôle pour la transmission des commandes et une autre pour la transmission des données.

Tu ne devrais donc pas t'attendre à recevoir la liste des fichiers mais le résultat de la commande (OK, NOK, refusée, etc.).

Du coup, deux possibilités : soit les résultats de ta commande devraient être envoyées sur un autre port (ici, nul part, donc). Soit ton serveur utilise le même port et effectivement, il attend une nouvelle connexion (une nouvelle connexion au sens client/serveur, donc pas forcément l'authentification d'un compte particulier).

Si, mais ça a d'autres avantages, comme le fait que le serveur (et le client) peuvent détecter et réagir immédiatement si une connexion est perdue, par exemple.

Sinon, je ne t'ai pas demandé de montrer un exemple sans ftplib par hasard : ce n'est pas un protocole trivial et il repose effectivement sur l'existence de deux connexions simultanées entre le client et le serveur (voir sur la RFC, page 8).

Cela dit si tu regardes comment est implémentée la classe ftplib.FTP, tu t'apercevras que Python peut gérer ça de façon relativement transparente.

+0 -0

Ouais mais d'un autre côté la stack classique utilise TCP. Vu que ce n'est que la couche de transport je trouve pas que ça apporte grand chose, pedagogiquement parlant, à ton tuto. Au contraire ça risque de distraire le lecteur sur une question périphérique alors qu'il va déjà devoir s'accrocher pour suivre ton code et comprendre le protocole.

Qui plus est, si tu rajoutes une couche de TLS/SSL pour sécuriser la connexion, celle-ci sera à coup sur encapsulée dans du TCP.

Enfin, il est vrai que TCP a le mérite de te garantir que tes fichiers n'arriveront pas corrompus, même en conditions de transmission dégradées.

+1 -0
Connectez-vous pour pouvoir poster un message.
Connexion

Pas encore membre ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte