GNT sans publicité, site mobile, fonctionnalitées exclusives...

client ftp

Le
aVrama
Bonjour a tous,
J'espère que je suis sur le bon newsgroups sinon, excusez-moi de vous
parasiter.
Je me suis lancé dans le codage en C d'un module permettant de récupérer
un fichier via un serveur ftp distant. La ou cela se complique, c'est
que je ne veux pas utiliser une librairie toute faite de client ftp, je
veux programmer une fonction 'get_fichier_ftp' (simplifiée) en utilisant
les sockets (d'une lib tcp/ip).
J'arrive à échanger des données via des sockets (socket, listen,
bind,) mais pour me connecter a un serveur et suivre le protocole,
c'est une autre histoire. Est-ce que quelqu'un a une piste, une idée, un
exemple pour implémenter cette partie du protocole FTP ou est-ce que je
dois connaitre la RFC959 par coeur pour pouvoir le faire
Merci pour votre aide,
aVr
Lire les 13 réponses

Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses Page 1 / 3
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Pascal Bourguignon
Le #985127
aVrama
Bonjour a tous,
J'espère que je suis sur le bon newsgroups sinon, excusez-moi de vous
parasiter.
Je me suis lancé dans le codage en C d'un module permettant de
récupérer un fichier via un serveur ftp distant. La ou cela se
complique, c'est que je ne veux pas utiliser une librairie toute faite
de client ftp, je veux programmer une fonction 'get_fichier_ftp'
(simplifiée) en utilisant les sockets (d'une lib tcp/ip).
J'arrive à échanger des données via des sockets (socket, listen,
bind,...) mais pour me connecter a un serveur et suivre le protocole,
c'est une autre histoire. Est-ce que quelqu'un a une piste, une idée,
un exemple pour implémenter cette partie du protocole FTP ou est-ce
que je dois connaitre la RFC959 par coeur pour pouvoir le faire...


Oui.

La question c'est pourquoi tu ne peux pas utiliser une bibliothèque
existante, ou pourquoi tu ne pourrais pas lire une implémentation en
source libre, pour apprendre comment on fait?


--
__Pascal Bourguignon__ http://www.informatimago.com/

PLEASE NOTE: Some quantum physics theories suggest that when the
consumer is not directly observing this product, it may cease to
exist or will exist only in a vague and undetermined state.

Mihamina Rakotomandimby (R12y)
Le #985124
Pascal Bourguignon wrote:

La question c'est pourquoi tu ne peux pas utiliser une bibliothèque
existante,


Il veut apprendre.

ou pourquoi tu ne pourrais pas lire une implémentation en
source libre, pour apprendre comment on fait?


Oui mais non.
Si je veux apprendre à faire un kernel, me baser sur le code _actuel_ de
FreeBSD ou Linux serait... décourageant. Ca aurait été interessant d'en
suivre l'évolution depuis Minix, mais on est loin de Minix...
Les projets en source libre existants se sont compliqué avec le temps.
Un "débutant" ne peut pas prendre le train en marche simplement.

espie
Le #985123
In article Mihamina Rakotomandimby (R12y)
Si je veux apprendre à faire un kernel, me baser sur le code _actuel_ de
FreeBSD ou Linux serait... décourageant. Ca aurait été interessant d'en
suivre l'évolution depuis Minix, mais on est loin de Minix...
Les projets en source libre existants se sont compliqué avec le temps.
Un "débutant" ne peut pas prendre le train en marche simplement.


Ton analogie presente un leger probleme: si on veut faire un client ftp
qui fonctionne, ca revient a prendre le train en marche de toutes facons,
vu tous les petits details qui se sont rajoutes a la spec de base, et que
tu ne peux ignorer.

Note que pour les noyaux, c'est un peu pareil. Meme en repartant de zero,
vu la facon dont fonctionne le hard actuel, ca ne va pas non plus etre
super-simple. Sauf si tu as du matos tres specifique, faire un semblant
de noyau sur un PC aujourd'hui, ca revient a parler PCI, Sata, et USB...
pas exactement une mince affaire.

Xavier Roche
Le #985122
Ton analogie presente un leger probleme: si on veut faire un client ftp
qui fonctionne, ca revient a prendre le train en marche de toutes facons,
vu tous les petits details qui se sont rajoutes a la spec de base, et que
tu ne peux ignorer.


Euh, si. La RFC 959 impose uniquement une poignée de commandes:

5.1. MINIMUM IMPLEMENTATION

In order to make FTP workable without needless error messages, the
following minimum implementation is required for all servers:

TYPE - ASCII Non-print
MODE - Stream
STRUCTURE - File, Record
COMMANDS - USER, QUIT, PORT,
TYPE, MODE, STRU,
for the default values
RETR, STOR,
NOOP.

Bon, on est un peu HS ici, mais je dirais que de toute manière, ftp est
un protocole mal baisé (l'injection de l'IP du niveau d'en dessous dans
le protocole était décidément pas une bonne idée) et que pour faire
joujou, HTTP est beaucoup plus abordable.

Pascal Bourguignon
Le #985121
"Mihamina Rakotomandimby (R12y)"
Pascal Bourguignon wrote:

La question c'est pourquoi tu ne peux pas utiliser une bibliothèque
existante,


Il veut apprendre.


Oui, alors c'est difficile de faire l'impasse sur les RFC.

Je ne commencerais pas par FTP, c'est un protocole plus compliqué que
la plupart comme il utilise normalement deux connexions TCP/IP.

SMTP ou POP3 serait un bon commencement.

De toutes façons, une fois qu'on a implementé un protocole à partir
seulement des RFC, ce n'est pas une mauvaise idée de jetter un oeuil
sur d'autres implémentations et de comparer avec ce qu'on a fait.


ou pourquoi tu ne pourrais pas lire une implémentation en
source libre, pour apprendre comment on fait?


Oui mais non.
Si je veux apprendre à faire un kernel, me baser sur le code _actuel_ de
FreeBSD ou Linux serait... décourageant. Ca aurait été interessant d'en
suivre l'évolution depuis Minix, mais on est loin de Minix...
Les projets en source libre existants se sont compliqué avec le temps.
Un "débutant" ne peut pas prendre le train en marche simplement.



--
__Pascal Bourguignon__ http://www.informatimago.com/


Publicité
Suivre les réponses
Poster une réponse
Anonyme