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

Qt Discussion :

Encodage d'int sur une socket


Sujet :

Qt

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    214
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 214
    Par défaut Encodage d'int sur une socket
    Slt, j'ecris un client réseau en C++ avec Qt et un serveur en C#. Quand j'envoie en Qt un int qui vaut 20, à la reception le serveur reçoit un enorme chiffre. D'où le problème peut-il venir ? Encodage des ints mais comment régler ça ?

    merci d'avance !

  2. #2
    yan
    yan est déconnecté
    Rédacteur
    Avatar de yan
    Homme Profil pro
    Ingénieur expert
    Inscrit en
    Mars 2004
    Messages
    10 035
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur expert
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2004
    Messages : 10 035
    Par défaut
    Salut,
    je suppose que c'est la même question que sur un autre site.

    A mon avis c'est un problème d'endian
    http://fr.wikipedia.org/wiki/Petit-boutiste
    http://www.gamedev.net/reference/art...rticle2091.asp

    Qt va normalement fournir les donnée dans un endian préçis. La machine récepteur devra convertir la memoire reçu dans son endian.

    En gros c'est swapper les point fort et les point faible

    exemple pour un float 32 bits

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    float FloatSwap( float f )
    {
      union
      {
        float f;
        unsigned char b[4];
      } dat1, dat2;
     
      dat1.f = f;
      dat2.b[0] = dat1.b[3];
      dat2.b[1] = dat1.b[2];
      dat2.b[2] = dat1.b[1];
      dat2.b[3] = dat1.b[0];
      return dat2.f;
    }

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    214
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 214
    Par défaut
    Effectivement, ça marche !

    Merci beaucoup !

    A bientôt !

  4. #4
    Membre expérimenté Avatar de MacPro
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    367
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Novembre 2007
    Messages : 367
    Par défaut
    Salut, tu peux trouver plus de choses là dessus en jetant un coup d'oeil sur les macros Q_BIG_ENDIAN, Q_BYTE_ORDER, Q_LITTLE_ENDIAN.


    Après, y'a des fonctions utiles (qui commencent souvent par un petit 'q') comme qFromBigEndian, qToLittleEndian, qToBigEndian.

    Voir aussi QSysInfo::Endian ...

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    214
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 214
    Par défaut
    Merci pour les infos !

    A bientôt !

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

Discussions similaires

  1. Encodage des string sur une socket
    Par barbug dans le forum Qt
    Réponses: 17
    Dernier message: 15/02/2009, 14h17
  2. création d'un thread a la reception d'un message sur une socket
    Par jesus144 dans le forum Programmation et administration système
    Réponses: 1
    Dernier message: 05/03/2007, 17h27
  3. Réponses: 3
    Dernier message: 20/10/2006, 19h50
  4. Comment définir un timeout sur une socket PHP ?
    Par N3odyme dans le forum Langage
    Réponses: 7
    Dernier message: 07/05/2006, 23h04
  5. [visual c++] connaitre le debit sur une socket
    Par khayyam90 dans le forum MFC
    Réponses: 4
    Dernier message: 25/10/2005, 16h12

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