j'ai établi une communication TCP/IP entre un serveur et un client.
coment faire pour pouvoir stocker des fichiers depuis le client dans le serveur et vice versa?
merci
Version imprimable
j'ai établi une communication TCP/IP entre un serveur et un client.
coment faire pour pouvoir stocker des fichiers depuis le client dans le serveur et vice versa?
merci
Je comprend pas trés bien le sens de ta question car tu est dans un topic de langage C.
le TCP/IP c'est du réseau je pense, il devrait y avoir un forum adapté ?!
pour stocker des fichier, tu peut utiliser un client ftp comme File-Zilla ou autre facon de faire.
@mouss4rs : Je pense qu'il a dû ouvrir un socket TCP/IP et qu'il veut faire passer un fichier dedans.
@toutatattou : Si j'ai bien compris ta question, il faut :
* côté serveur :
* * ouvrir un descripteur de fichier sur le futur fichier (man 2 open)
* * faire des read de ton socket pour récupérer les morceaux de ton fichier
* * faire des write de tes morceaux de fichier récupérés, dans le descripteur de fichier ouvert.
* côté client, c'est l'inverse :
* * se connecter à ton serveur
* * ouvrir le fichier à envoyer fichier et récupérer son descripteur de fichier.
* * faire des read dans ton descripteur de fichier
* * faire des write sur la socket pour envoyer le fichier morceau par morceau
Après, tout dépend des applications, que tu es en train de réaliser, tu voudras certainement établir un protocole de communication précis entre ton client et ton serveur.
bonjour huit six,
oui c'est ce que je veux faire mais je sais pas commander proceder.
je developpe sous Labwindows/cvi.
y-a-t-il des bibliotheque qui peuvent faire cela?
merci
Bonjour, je connais pas labwindows, c'est un edi ?
Concernant la programmation des sockets, le mieux est encore d'aller voir ça par exemple. Mais les sockets c'est très bas niveau. Après tout dépend de tes besoins et de la machine pour laquelle tu code. Suivant le cas, oui il existe des bibliothèques qui permettent l'accès au réseau plus facilement.
Transférer un fichier d'un ordinateur à l'autre est une opération qui semble élémentaire parce que tout le travail est masqué par l'interface du système d'exploitation que tu utilises, mais c'est en fait l'aboutissement d'une chaîne de traitements sophistiqués.
Avec quoi as-tu ouvert ta connexion TCP ? Un socket ou quelque chose de plus évolué ? Montre-nous ton code.
Pour transférer un fichier via TCP, il faut d'abord se connecter sur le bon port, et utiliser le bon protocole de communication, en partant du principe que l'ordinateur-cible sache le faire, et l'accepte.
Autrement dit, tu seras effectivement obligé (en pratique) d'utiliser les services d'une bibliothèque d'assez haut niveau. Maintenant, sans en savoir plus sur ton projet, cela va être difficile de t'aider plus.
Labwindows est un simili-RAD en C, développé par National Instruments. Son principal inconvénient étant de ne supporter QUE le C, et non pas le C et le C++ comme la plupart des compilateurs (ce qui limite parfois son interconnexion avec les autres compilateurs).
Plutôt dédié aux outils de test qu'au code de série, mais facile d'accès même pour des personnes connaissant peu le développement logiciel. Payant, bien sûr.
Pour l'OP : Regarde du côté de cette librairie. Sinon, tu vas devoir implémenter un client FTP à la main... Ce n'est pas horriblement difficile à faire, mais ça demande quand même de bien maîtriser les communications réseau. Autant que tu passes sur une librairie FTP.
@Mak LAK : Merci pour les infos sur labwindows ^^
Sinon, si toutatattou peut gérer le client ET le serveur et qu'il veut implémenter un protocole, je lui aurai plutôt conseillé d'implémenter HTTP/POST qui est plus simple que le FTP, voir de créer son propre protocole qui pourra être encore beaucoup plus simple. En revanche, je suis d'accord, s'il peut utiliser une bibliothèque, faut pas se priver. Par contre, j'aurai plutôt proposé [ame="http://fr.wikipedia.org/wiki/CURL"]libcurl[/ame] qui implémente beaucoup de protocoles de transfert de fichier.
[Edit] Mon lien wikipedia est modifié automatiquement:furax:, je ne voulais pas parler de curl mais de libcurl. La bibliothèque !
[Edit 2] le lien vers le site de libcurl.
De rien ! ;)
Tu n'as hélas pas toujours le choix...
Typiquement, lors de la communication avec une machine Unix, le serveur FTP est souvent disponible "tel quel", sans grosses modifications. En fonction de la distribution, c'est même parfois "aucune". Je passe sur le cas "le client veut tel protocole", où ce n'est carrément même plus négociable.
Il y a certes d'autres protocoles de transfert de fichier, mais qui peuvent être plus lourds à gérer : typiquement, HTTP demande à faire tourner Apache, TFTP n'est pas toujours disponible (client comme serveur), etc.
De plus, pour de l'upload, HTTP n'est pas forcément l'idéal : il est par contre effectivement plus simple à implémenter pour un download.
d'ailleurs, je ne vois pas pourquoi ne pas utiliser le client ftp directement... :roll:
8O
a moins d'avoir des contraintes de temps, me semble plus simple à implanter pour une appli standard (unixoides) que de réimplanter ftp...Code:
1
2
3
4 system ( "ftp send toto ..... > erreurs.log 2>&1" ); fopen ( "erreur.log", "r"); ....
Et en multi-OS, les commandes peuvent être mises dans un fichier de config..
Je n'ai rien contre le fait de re-faire ftp, mais pour beaucoup de cas ça me semble cependant réinventer la roue....
(et souvent en ayant des rayons tordus, car c'est quand même un outil débuggé et assez complet)..
M'enfin, c'est vrai que je suis un vieux crouton qui n'y connais rien :aie:
Cela affiche les erreurs a posteriori, et non pas au moment de l'action, ce n'est pas de la gestion des erreurs au sens strict.
Ce qui peut poser quelques soucis si jamais le client FTP est bloqué sur une action / demande utilisateur : tu n'as par exemple pas de système de progression du téléchargement. De plus, tu seras souvent obligé de générer un fichier de script pour le client pour tout téléchargement un minimum décent (login, password, changement de répertoire distant, etc.), ce qui rajoute pas mal de code au final.
Certes, il n'y a pas forcément besoin de réinventer la roue, mais en se basant sur une librairie FTP, c'est en général aussi simple et rapide à faire qu'un script de pilotage d'un client externe (cf. la classe CFtpConnection des MFC par exemple). L'avantage, c'est que l'on contrôle totalement les affichages d'erreur et que l'on économise la création du fichier de script ainsi que l'analyse de la redirection d'exécution.
héhé, en fait, on discute on discute, mais comme on ne sait pas du tout ce que veut faire toutatattou, on est peut-être carrément à côté de la plaque... :mrgreen:.
Mais moi j'aime bien les discussions à côté de la plaque (re-:mrgreen:).
@souviron: j'ajouterai que dès fois, ni le client ni la bibliothèque ne sont des solutions envisageables. Dans mon cas (je code sur un boîtier embarqué), je dois envoyer des données par le net, pour l'instant je les envois par POST et je ne peux pas utiliser de client car je ne peux mettre qu'un seul programme, et utiliser une lib qui fera vite 1 ou 2Mo est impossible car je n'ai le droit qu'à 500Ko :?, donc je suis obligé de recoder en ne codant que la partie du standard dont j'ai besoin.
@Mac Lak en fait, ce qui me rebute avec ftp, c'est qu'on doit initier 2 connexions et gérer 2 protocoles (telnet et FTP), mais c'est sûr que quand on n'a pas le choix...
Tout à fait d'accord, je disais ça dans le cas où on cherche à implémenter le protocole.;)Citation:
Ce qui peut être transparent avec une librairie, et certaines sont assez légères (cf. lien donné précédemment).
Il semblerait que toutatattou nous aie abandonnés... :pleure: