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

Réseau C Discussion :

Client travaillant sur une image


Sujet :

Réseau C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2011
    Messages
    756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Haute Garonne (Midi Pyrénées)

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

    Informations forums :
    Inscription : Août 2011
    Messages : 756
    Par défaut Client travaillant sur une image
    Salutation, j'ai une petite à question à vous poser

    j'ai une petite appli à faire de type client qui doit être capable d'envoyer sur un serveur des requêtes de type put pour mettre un fichier sur le serveur et get pour en récupérer.


    Je ne pense pas que ce soit bien compliqué, mais j'ai tout de même une interrogation vis à vis d'un fichier image.

    Je me vois mal lire ce fichier image comme je lis un fichier texte à coup de read.

    J'imagine qu'il y a des fonctions spéciales pour lire des fichiers images, mais ici je ne pourrais pas utiliser ça, puisque du point de vue du client il n'aura aucun moyen de savoir s'il envoie ou reçoit un fichier texte ou image. Donc en gros, je dois utiliser une série de fonctions qui me permettra de lire et écrire peut importe le type de mon fichier. Et ça, je ne vois absolument pas comment faire...

    Merci d'avance pour les infos que vous pourrez me donner là dessus

  2. #2
    Expert éminent

    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    5 202
    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 202
    Par défaut
    En fait, ca marche pareil. Un fichier est une suite de charactères.
    C'est parce que le programme les interprète comme du texte que les octets 0x48454C4C4F21 signifient "hello".
    Si le programme s'imagine que ce sont des composantes RGB par pixels, (en 8 bits par couleurs), ces mêmes octets désignent deux pixels, le premier (#48454C) étant un gris sombre très légèrement bleuté, le second (#4C4F21) étant un brun sombre.

    Et dans ton cas, tu ne veux rien interpréter du tout. Tu disposes d'une socket et d'un fichier, c'est à dire deux flux d'octets. A toi de copier l'un dans l'autre.
    Regarde du coté des sockets, ou mieux encore de libcurl, qui est une bibliothèque spécialisée dans ces problèmes d'envoi/réception.

    En l'occurence, libcurl (et curl) fournit toute l'infrastructure pour écrire des requetes FTP, HTTP, etc

  3. #3
    Membre éprouvé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2011
    Messages
    756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Haute Garonne (Midi Pyrénées)

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

    Informations forums :
    Inscription : Août 2011
    Messages : 756
    Par défaut
    Bah je comprends pas alors,

    Voici la fonction que j'utilise sur un fichier texte, elle fonctionne comme il faut dans le cas d'un fichier texte.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    void affiche_fichier(int socket, int taille)
    {
        int k;
        if ( taille >0 )
        {
            char buffer[taille];
            for (k = 0; k < taille;k++)
            {
                read(socket, &buffer[k], 1);
            }   
            buffer[taille] = '\0';
            printf("%s",buffer);
        } 
    }
    Je me sers de ça directement pour écrire dans un fichier en ayant pris soin de faire un dup de mon fichier à la place de l'écran.

    Bref, pour n'importe quel fichier texte c'est ok.


    Si j'envoie un fichier test.png. Que j'essaye de l'écrire dans un fichier res.png...quand j'essaye d'ouvrir res, on me signale qu'il est impossible de charger l'image res.png

    Si j'examine directement le retour affiché; ça correspond à ça

    �PNG
    
    Du coup, je suis persuadé qu'il y a un problème de types ou je ne sais quoi; mais je ne sais pas comment y remédier.

  4. #4
    Expert éminent

    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    5 202
    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 202
    Par défaut
    Tu sais que le PNG est un format compressé, et qu'il n'est pas affichable comme du texte?

  5. #5
    Membre éprouvé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2011
    Messages
    756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Haute Garonne (Midi Pyrénées)

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

    Informations forums :
    Inscription : Août 2011
    Messages : 756
    Par défaut
    Compressé que veux tu dire par là ? C'est quelque chose de propre au format png ou c'est pareil pour toutes les images ?

    Dans tous les cas, puisque avec mon read je suis obligé de lire des char, il faut bien que ces char je les fasse correspondre à l'image derrière lorsque je veux faire une copie locale du fichier que je lis sur le serveur.

Discussions similaires

  1. [Débutant] Travailler sur une liste d'images
    Par medsyorick dans le forum Images
    Réponses: 1
    Dernier message: 17/07/2013, 17h13
  2. Réponses: 6
    Dernier message: 15/11/2007, 12h31
  3. Réponses: 1
    Dernier message: 06/07/2006, 12h11
  4. Réponses: 8
    Dernier message: 09/11/2005, 16h24
  5. Comment mettre un label sur une image
    Par dug dans le forum MFC
    Réponses: 3
    Dernier message: 07/04/2004, 10h40

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