IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C Discussion :

Téléchargement de fichier par socket


Sujet :

C

  1. #1
    Membre à l'essai
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2011
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2011
    Messages : 17
    Points : 10
    Points
    10
    Par défaut Téléchargement de fichier par socket
    Bonjour,

    Je débute en C, j'ai appris ces derniers jours les bases pour ce langage de programmation.

    Je désire à présent faire un programme qui télécharge un fichier sur un serveur distant, tout cela via socket TCP.

    J'ai réussi à trouver un exemple de socket qui crée un mini chat sur console. Seulement je n'arrive pas à voir comment envoyer un fichier avec ce principe.

    Je ne désire pas utiliser de bibliothèque comme libcurl, mais rester sur les librairies natives du C afin qu'il n'y ai pas de soucis de compatibilité (je désire exporter mon programme sous Android par la suite)

    Quelqu'un aurait une solution ?

    Merci d'avance,

    Azuken

  2. #2
    Membre émérite
    Avatar de imperio
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2010
    Messages
    851
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2010
    Messages : 851
    Points : 2 293
    Points
    2 293
    Par défaut
    Il me semble que la libcurl est portable sur toutes les plateformes justement. Mais bon... Si tu veux telecharger un fichier sur un serveur distant, il faut deja savoir quel protocole il utilise (TCP, HTTP, SSH...). Pour chacun d'entre eux il te faudra regarder leur rfc. Le plus rapide a "recoder" est le http a premiere vue, tu n'auras qu'a utiliser une requete de type get sur le fichier et il te l'enverra (pour plus de details, voir la rfc).

  3. #3
    Expert éminent sénior

    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    5 186
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 5 186
    Points : 17 126
    Points
    17 126
    Par défaut
    Si tu veux récupérer un fichier, il te faut connaitre le protocole utiliser par le serveur, pour savoir comment lui demander le fichier, et savoir interpréter le paquet d'octet que sera sa réponse.

    Curl permet de le faire, et doit certainement exister pour android.

    Ton code sera probablement moins portable si tu l'écris toi-même, parce que tu va devoir ouvrir des sockets, ce qui n'est pas portable quand on procède par les appels systèmes ou les en-têtes propriétaires (qu'ils appartiennent à un os ou un autre).

    La plupart des libs courantes sont portables, parce que des codeurs ont fait le travail de portage sur les différentes plateformes.

    Pour revenir à ton problème, un réseau est exactement comme un chat.
    Tu peux taper sur ton clavier, et lire à l'écran. Le serveur aussi.

    Ton programme se résume à la bonne traduction de :
    Cher monsieur ip:port,
    J'aimerai que vous m'envoyez le fichier (/)chemin/vers/le/fichier.
    Dans l'attente de votre réponse.
    Monsieur mon_ip:mon_port.
    Si ip:port parle le français administratif, (le bon protocole), et qu'il a compris ta requete, tu auras
    Cher monsieur mon_ip:mon_port,
    Vous trouverez si joint votre demande.
    Merci d'avoir recours à notre demande
    Monsieur ip:port.
    sinon, tu auras:
    Citation Envoyé par erreur de requete
    Cher monsieur mon_ip:mon_port,
    Vous trouverez si joint votre demande.
    Merci d'avoir recours à notre demande
    Monsieur ip:port.
    ou encore:
    Citation Envoyé par erreur de protocole
    Shahai mon_ip:mon_port,
    Alren dos algenor scp.
    Lidienn ip:port.
    (oui, cette langue existe, non, tu n'en trouveras pas de traduction, parce que j'en suis l'auteur, et que je n'ai pas encore fait de publication.)

    Autrement dit: poignée de main, requete & réponse, fermeture de session. Sachant que certains protocole considère la fermeture de session comme automatique, que la poignée de main est incluse dans la paire requête&réponse.
    Mes principes de bases du codeur qui veut pouvoir dormir:
    • Une variable de moins est une source d'erreur en moins.
    • Un pointeur de moins est une montagne d'erreurs en moins.
    • Un copier-coller, ça doit se justifier... Deux, c'est un de trop.
    • jamais signifie "sauf si j'ai passé trois jours à prouver que je peux".
    • La plus sotte des questions est celle qu'on ne pose pas.
    Pour faire des graphes, essayez yEd.
    le ter nel est le titre porté par un de mes personnages de jeu de rôle

  4. #4
    Membre à l'essai
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2011
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2011
    Messages : 17
    Points : 10
    Points
    10
    Par défaut
    En ce qui concerne le protocole à utiliser, cela m'importe peu, je peux utiliser du FTP comme du TCP ou encore HTTP.

    J'ai recherché rapidement et d'autre personnes utilisent apparemment cURL avec Android. Je vais donc me pencher sur cette solution, qui a l'air plus facilement réalisable.

    Les solutions FTP et HTTP sont sûrement plus simples que les socket... ?

    Merci pour l'explication leternel, c'était très explicite

  5. #5
    Membre émérite
    Avatar de imperio
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2010
    Messages
    851
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2010
    Messages : 851
    Points : 2 293
    Points
    2 293
    Par défaut
    Le FTP et le HTTP sont des protocoles reseaux, ce qui signifie qu'il y a besoin des sockets. Pour le protocole a utiliser, ca ne depend malheureusement pas de toi mais du serveur.

Discussions similaires

  1. [Configuration] Téléchargement de fichier par HTTP
    Par Thierry8 dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 11
    Dernier message: 06/06/2006, 23h30
  2. Réponses: 3
    Dernier message: 06/03/2006, 11h36
  3. Téléchargement de fichiers par HTTP / FTP
    Par Gladiator dans le forum Serveurs (Apache, IIS,...)
    Réponses: 2
    Dernier message: 07/12/2005, 12h28
  4. Transfert de fichiers par sockets
    Par Kaori dans le forum C++
    Réponses: 19
    Dernier message: 26/01/2005, 14h58
  5. [Débutant] Envoi de fichier par socket
    Par zapho dans le forum Entrée/Sortie
    Réponses: 13
    Dernier message: 26/05/2004, 19h58

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo