Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1814 connectés 

  FORUM HardWare.fr
  Programmation
  C

  [C]Connexion et récupération de fichier via ftp en C

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[C]Connexion et récupération de fichier via ftp en C

n°1907344
b0b_ChoK
Posté le 21-07-2009 à 17:31:47  profilanswer
 

Bonjour à tous!
 
Je me tourne vers vous car j'ai un problème tout con (enfin j'espère)
 
Voici la scène : je travail sur un projet un peu spécial pour de la robotique. J'ai une machine qui fait du relevé de terrain, qu'on va appelé A, cette machine fonctionne avec un linux allégé mis sur une carte Fox Board. Les programmes sur cette carte ne sont pas un problème, ils créent plusieurs fichiers qui seront stocké dans le robot. Le but est de récupérer les fichiers en question en se connectant au port éthernet de la carte.
La carte a un serveur ftp intégré fonctionnel, pas de soucis.
 
J'aurai donc besoin de faire un programme en C qui tournera lui aussi sous linux, sur une machine un peu spéciale qu'on va appeler B (qui utilise un noyau linux temps réel allégé).
L'idée est de pouvoir branché simplement A à B avec un câble ethernet, la machine B disposant d'une interface avec l'utilisateur devra se connecter à A pour copier les fichiers en local.
 
En gros, c'est juste une connexion ftp avec copie de fichiers. Seulement, je ne sais absolument pas comment on code en c l'équivalent de ce que je pourrais faire facilement en ligne de commande. Or la contrainte est que le programme doit tout faire à partir du C.
 
J'ai cherché un peu et j'ai surtout trouvé des info pour faire un prog client serveur ftp, des genre de filezilla fait maison. Or généralement la partie connexion ftp est noyer dans l'interface, ou pire, c'est codé pour window...
J'ai cru comprendre qu'on pouvait utiliser des socket, bien que je ne connaisse pas trop. J'ai pour A une adresse IP fixe, et je n'ai pas sur B de gestion de nom de domaine.
 
Ce que je voudrais, c'est juste pouvoir me connecté à l'ip XX.XX.XX.XX avec le login x, puis récupérer les fichier a, b, c et d contenu dans le rep z... en C...
 
En espérant être assez claire...
Si quelqu'un a au moins une piste à me donner, merci!

mood
Publicité
Posté le 21-07-2009 à 17:31:47  profilanswer
 

n°1907378
Turkleton
I don't quite understand you
Posté le 21-07-2009 à 18:47:02  profilanswer
 

Whaaa, je vais jamais pouvoir t'aider, mais ça a l'air trippant de bosser là-dessus  :love:  
 
Les entrées/sorties se font comment avec ta carte, c'est surtout ça que je pige pas ? Comment lui passes-tu ne serait-ce qu'une ligne de commande ? Ensuite, est-ce que l'interaction entre les deux machines est déjà programmée en C (ou autre chose mais a priori, tout doit être fait en C) ? Et si oui, comment ? Et ces interactions se font uniquement par le biais d'un câble ethernet ?
 
Le serveur FTP de ta carte, tu es censé lui passer des lignes de commandes seulement ? Je pense (j'espère pour toi surtout) qu'il doit y avoir un moyen de communiquer avec ce serveur FTP en C, sinon faudrait carrément en programmer un sur ta machine B (à moins que tu puisses aussi lancer des prog C depuis ta machine A ?).
 
Sorti de l'informatique, et dès que ça commence à toucher à l'électronique, j'ai du mal (comment fonctionne un ordinateur ? Mais par magie bien sûr !  :D)
 
Ça dépasse largement mes connaissances, mais j'ai hâte que quelques pointures ici viennent y mettre leur nez pour en apprendre un peu plus.


---------------
If you think it could look good, then I guess it should
n°1907379
tpierron
Posté le 21-07-2009 à 18:47:02  profilanswer
 

Bah, si tu n'as pas envie de te farcir la RFC du protocole FTP, tu peux aller voir le code source de wget (qui n'est pas non plus super trivial à lire). Sinon tu as la libcurl (http://curl.haxx.se).

n°1907381
Turkleton
I don't quite understand you
Posté le 21-07-2009 à 18:48:00  profilanswer
 

Haha, j'ai gagné ! (il manque les millisecondes quand même :D)


---------------
If you think it could look good, then I guess it should
n°1907391
b0b_ChoK
Posté le 21-07-2009 à 19:56:54  profilanswer
 

Déjà merci pour votre intérêt!!
 
@Turkleton :
Je te cache pas que c'est bien sympa comme boulot, mais je suis comme toi, informaticien avant tout, j'ai un peu de mal avec l'électronique de pointe mais là ça va, je gère l'ignoble fer à souder et les plaques de test ^^.
 
La carte fox board est configuré via le port ethernet, soit par telnet pour tout ce qui est configuration du linux embarqué (et donc tout ce qui est ligne de commande), et par ftp pour envoyer des programmes et fichiers dessus. Après le système A possèdent une interface simplifié avec un module LCD et 2 boutons relié à la carte via I²C pour le LCD et les I/O standard de la carte pour le reste. Sur la carte j'ai aussi un récepteur GPS branché par USB et un µC relié par série pour tout ce qui est conversion Analogique->Num des capteurs etc... Enfin, c'est info ne sont pas utile au problème mais ça situe mieux le principe.
 
Donc mon système A est autonome en quelques sortes dans son fonctionnement primaire. A la mise sous tension, mon linux lance le programme qui gère tout, et l'utilisateur gére le relevé de terrain avec son interface LCD/bouton. Après le relevé de terrain, le système A est relié à B pour que B récupère les résultats de mesure.
Le système B n'a aucune interface proprement dit. Toutes ses fonctionnalité son activé à l'aide d'un client léger (ici une page web que l'on charge à partir d'un pc standard). L'utilisateur n'a qu'a appuyer sur un bouton pour que B récupère les donnée et fasse les traitements appropriés.
 
Tout doit être fait en C car les performances matériels son limités d'une part, que c'est plus ou moins du temps réel, et surtout que tout l'existant est en C... (et puis j'aime le C ^^)
 
Je pensais utilisé la serveur ftp déjà présent sur la carte A, cela me semblait plus simple à première vue que de refaire tout un protocole de com. Surtout que je suis pas très calé en programmation réseau...
 
J'avais dans un premier temps voulu faire une grosse magouille, ou un script lancé avec un petit system("mom_script" ). Mais je cherche quelques chose d'un peu plus propre...
 
@tpierron :  
Je ne connaissais pas wget, je vais y jeter un oeil. Mais j'ai vu d'autre source dans le même genre. La grosse difficulté reste de dépatouiller ce qui gère effectivement les connexion ftp dans le prog de tout ce qui gère l'interface en ligne de commande. Je regarde ça plus en détail dès demain matin. Je vais pas bosser à la maison sinon y en a une qui a faire voler l'ordi...
Mais je sens que libcurl va devenir mon ami!
 
Merci pour vos réponses.
 
Je reste ouvert à toute proposition en tout cas!

n°1907401
tpierron
Posté le 21-07-2009 à 21:01:12  profilanswer
 

Mouais, je te conseille vivement la libcurl, si comprendre le code source de wget te prends plus que cinq minutes.

n°1907563
jagstang
Pa Capona ಠ_ಠ
Posté le 22-07-2009 à 11:28:49  profilanswer
 

des sockets avec le protocole FTP me semble assez simple...
 
http://www.tcpipguide.com/free/t_F [...] oups-2.htm


---------------
What if I were smiling and running into your arms? Would you see then what I see now?  

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C

  [C]Connexion et récupération de fichier via ftp en C

 

Sujets relatifs
Pattern Java | Probleme ecriture dans fichier texte.Importer plusieurs csv sous access avec fichier .ini
Conversion JPEG -> BMP en C++Tri d'un fichier
[résolu]recherche dans un fichier encodé en utf8Creation de fichier composé de plusieurs autres
gros fichier excel copier et inserer des lignesAide sur traitement du fichier
récupération d'un fichier txt en tableau php 
Plus de sujets relatifs à : [C]Connexion et récupération de fichier via ftp en C


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR