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

Entrée/Sortie Java Discussion :

Transfert d'image avec les Sockets UDP : pb avec le caractère carré.


Sujet :

Entrée/Sortie Java

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Février 2010
    Messages
    139
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 139
    Points : 48
    Points
    48
    Par défaut Transfert d'image avec les Sockets UDP : pb avec le caractère carré.
    Bonjour,

    Je développe actuellement un système de transfert de fichiers octets par octets entre deux programmes Java utilisant les sockets UDP. Dans le cas de fichiers de type XML, aucun soucis pour envoyer et reconstituer mon fichier. Cependant, dans le cas de fichiers images, j'ai un souci pour écrire l'un des caractères contenus dans mon fichier. Ce caractère est (un petit carré, correspondant à 0x81 en hexadécimal). Ce caractère est remplacé par le caractère ? (0x3F en hexadécimale). Je ne sais pas par quel biais passer pour pouvoir récupérer l'intégralité de mon image.

    Voici ce qui est en place actuellement :

    1 - dans le programme émetteur :
    - J'ai un DataInputStream pour lire dans mon fichier avec la méthode readInt().
    - J'utilise un ByteBuffer pour écrire un entier dans mon buffer avec la méthode putInt.
    - J'envoie l'array de mon ByteBuffer en invoquant la méthode monByteBuffer.array() (tableau de byte que j'envoie sur le datagramsocket).

    2 - dans le programme récepteur
    - Je récupère les tableau de byte de mon datagramSocket, et je manipule un ByteBuffer auquel j'affecte ce tableau de byte.
    - J'utilise un FileWriter pour écrire dans le fichier créé avec la ligne suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    monFileWriter.write(new String(byteBufferReadData.array());

  2. #2
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 551
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 551
    Points : 21 607
    Points
    21 607
    Par défaut
    Ne raisonne pas en caractères, mais en octets. Cette histoire de petit carré ne veut rien dire. C'est l'octet 0x81 et c'est tout.

    Autrement dit, n'utilise pas de FileWriter mais un FileOutputStream. Et ne crée pas de String à partir d'octets qui ne représentent pas du texte.

    Dans la mesure où 0x81 n'est pas valide seul pour faire un caractère en UTF-8, et n'est mappé à aucun caractère en ISO-8859-1, on peut en déduire que la transformation byte[] -> String, quel que soit l'encodage par défaut utilisé, a remplacé 0x81 par ? parce que de toute façon ça ne veut rien dire.
    Donc, il ne faut pas passer par là. Et puis, c'est intuitivement logique.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Février 2010
    Messages
    139
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 139
    Points : 48
    Points
    48
    Par défaut
    Oui merci, en effet FileOutputstream est plus approprié dans ce cas.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. transfert des fichier avec les socket
    Par riyad25h dans le forum Entrée/Sortie
    Réponses: 3
    Dernier message: 02/04/2013, 23h18
  2. Probleme: Chat avec les sockets en tcp avec du C
    Par mansour67 dans le forum Réseau
    Réponses: 6
    Dernier message: 06/07/2012, 20h26
  3. Réponses: 1
    Dernier message: 09/10/2007, 06h44
  4. Problème d'envoie de text avec les sockets
    Par Coussati dans le forum Web & réseau
    Réponses: 6
    Dernier message: 16/09/2005, 10h26
  5. [Win32] Problème avec les sockets
    Par mickael777 dans le forum MFC
    Réponses: 3
    Dernier message: 12/08/2005, 11h15

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