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

wxWidgets Discussion :

wxSockets : inversion des bits


Sujet :

wxWidgets

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    66
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 66
    Points : 44
    Points
    44
    Par défaut wxSockets : inversion des bits
    Bonsoir,

    Je fais communiquer deux process distants, à travers Internet, à l'aide de wxSockets, et les bits des octets semblent inversés durant la transmission.

    Quand le process client envoie un 1, le process serveur reçoit un 257, etc...

    Est-ce que ce problème est connu ? Est-ce qu'il y a quelque part un paramètre à ajuster pour que l'ordre des bits soit conservé ?

    merci d'avance,

    zorglbug

  2. #2
    Rédacteur
    Avatar de 3DArchi
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    7 634
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 7 634
    Points : 13 017
    Points
    13 017
    Par défaut
    Citation Envoyé par zorglbug Voir le message
    Bonsoir,
    Bonjour et bienvenue,

    Citation Envoyé par zorglbug Voir le message
    Je fais communiquer deux process distants, à travers Internet, à l'aide de wxSockets, et les bits des octets semblent inversés durant la transmission.

    Quand le process client envoie un 1, le process serveur reçoit un 257, etc...

    Est-ce que ce problème est connu ?
    Oui, c'est probablement une erreur de little endian/big endian.

    Citation Envoyé par zorglbug Voir le message
    Est-ce qu'il y a quelque part un paramètre à ajuster pour que l'ordre des bits soit conservé ?
    Pas tout à fait, il faut jouer, dans la logique de wxWidget avec wxINTXX_SWAP_ON_BE, wxINTXX_SWAP_ON_LE, wxINTXX_SWAP_ON_ALWAYS et ::wxIsPlatformLittleEndian

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    66
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 66
    Points : 44
    Points
    44
    Par défaut
    Merci 3DArchi,

    je n'ai pas pu tester les fonctions que tu proposes, parce que ma version de wxWidgets est trop ancienne, et ne les contient pas.

    Je n'ai pas le temps d'installer la dernière version. De plus, on m'a dit que le problème du Big et Little Endian ne concernaient que les mots de 4 octets, mais ne concernaient pas l'ordre des bits au sein d'un octet. Vrai ou faux, je ne sais pas ?

    En plus, 127 n'est pas tout-à-fait ce qu'on obtient en prenant l'octet "1", et en inversant l'ordre des bits. On obtiendrait ainsi 128.

    Ce que m'ont dit aussi des gens qui connaissent un peu les réseaux, c'est qu'à partir du moment où la connection entre les sockets est établie, il ne devrait pas y avoir ce type d'erreur.


    Du coup, je ne sais pas du tout quoi penser.

    Enfin, merci encore pour le coup de main,

    zorglbug

  4. #4
    Rédacteur
    Avatar de 3DArchi
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    7 634
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 7 634
    Points : 13 017
    Points
    13 017
    Par défaut
    On t'a informé de manière un peu rapide sur certains points:
    ->Little Endian/Big Endian intervient dès que tu as 2 octets.
    ->Le problème n'est absolument pas lié au fait que la connection soit établit ou non! C'est lié à la façon de transcrire les données depuis un type natif vers un buffer mémoire et inversement.
    -> Si tu n'as pas la bonne version de wxWidget, tu peux te faire toi même des macros pour ces conversions. Des trucs genre MAKELONG, MAKEWORD, LOWORD, HIWORD, LOBYTE, HIBYTE (on les trouves sous windows).
    -> Si tu as une inversion de bit (donc occurrence dès le premier octet!), alors c'est plus délicat (et beaucoup plus rare): peut-être à tu 2 terminaux (client&serveur) assez différents? Ca se résout comme précédemment. Tu fixes l'ordre dans lequel cela doit transiter dans le réseau, et tu fais les fonctions d'écriture et de lecture des types vers cet ordre.

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    66
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 66
    Points : 44
    Points
    44
    Par défaut
    De retour de congés ...

    Merci pour ton aide 3DArchi.

    Ma liaison par sockets s'est remise à fonctionner normalement. En fait, je ne sais pas très bien ce qui s'est passé, mais le problème peut être considéré comme résolu.

    Encore merci pour l'aide,

    Zorglbug

  6. #6
    Rédacteur
    Avatar de 3DArchi
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    7 634
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 7 634
    Points : 13 017
    Points
    13 017
    Par défaut
    Attention, danger! Un programme qui 'tombe en marche' sans que l'on sache pourquoi c'est 90% de chance pour que le bug réapparaisse au mauvais moment (la veille d'une livraison par exemple) ! Je te conseil d'essayer de continuer à creuser encore un peu !
    Pour ce fil, pense à

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

Discussions similaires

  1. Inverser l'ordre des bits d'un signal
    Par binome-x dans le forum VHDL
    Réponses: 1
    Dernier message: 19/10/2012, 15h09
  2. Inversion des bits d'un caractere
    Par roro8 dans le forum Général Python
    Réponses: 8
    Dernier message: 12/10/2009, 14h14
  3. Ecrire dans un fichier binaire en inversant les poids des bits
    Par zejo63 dans le forum Entrée/Sortie
    Réponses: 1
    Dernier message: 09/07/2007, 15h11
  4. Travailler avec des bits
    Par Vulvulune dans le forum Langage
    Réponses: 5
    Dernier message: 02/03/2003, 19h09
  5. Question : ordre des bits ?
    Par Choupi dans le forum C
    Réponses: 3
    Dernier message: 11/02/2003, 06h22

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