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/Web Python Discussion :

[Socket] Envoyer une donnée en hexa


Sujet :

Réseau/Web Python

  1. #1
    Membre actif Avatar de sorry60
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    802
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 802
    Points : 253
    Points
    253
    Par défaut [Socket] Envoyer une donnée en hexa
    Bonjour,

    Je souhaite envoyer la donnée '4toto' via une socket en python. Il s'agit donc d'une chaîne de caractère précédée de sa taille.

    Mais uniquement la chaîne doit être envoyée en étant considérée comme une chaîne, le 4 est un entier.

    Je m'explique mieux...si je fais un simple
    Ce qui est envoyé sera le code_ascii(4) suivi du code ascii(t) etc...
    Alors que moi je veux 4 suivi du code ascii(t) etc...
    En hexa cela donnerait : 04 74 6f 74 6f
    Alors que là j'envoie : 34 74 6f 74 6f (car le code ascii de 4 en hexa = 34)

    Voilà
    merci pour votre aide, j'espere avoir été clair

    Sorry
    Si je pleure encore qu'un jour tu me reviennes,
    C'est que sans toi je suis comme un Roi sans sa Reine.

  2. #2
    Membre éprouvé

    Profil pro
    Inscrit en
    Août 2004
    Messages
    723
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 723
    Points : 923
    Points
    923
    Par défaut
    Avec le module struct tu devrais t'en sortir.

  3. #3
    Membre actif Avatar de sorry60
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    802
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 802
    Points : 253
    Points
    253
    Par défaut
    Oui j'aurais du y penser ! merci !
    Si je pleure encore qu'un jour tu me reviennes,
    C'est que sans toi je suis comme un Roi sans sa Reine.

  4. #4
    Membre actif Avatar de sorry60
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    802
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 802
    Points : 253
    Points
    253
    Par défaut
    Ca ne fonctionne pas encore parfaitement

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ma_socket.sendall(struct.pack('lcccc',4,'t','o','t','o'))
    J'ai capturé le paquet tcp envoyé avec wireshark, et je constate que les données envoyées sont :

    04 00 00 00 74 6f 74 6f
    Et non pas :

    00 00 00 04 74 6f 74 6f
    Une idée ?
    Si je pleure encore qu'un jour tu me reviennes,
    C'est que sans toi je suis comme un Roi sans sa Reine.

  5. #5
    Membre actif Avatar de sorry60
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    802
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 802
    Points : 253
    Points
    253
    Par défaut
    C'est bon !

    Il fallait rajouter un '!' devant le caractère pour qu'il l'interprète dans le sens réseau ( Big-Endian).

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ma_socket.sendall(struct.pack('!lcccc',4,'t','o','t','o'))
    Merci pour votre aide, sujet résolu
    Si je pleure encore qu'un jour tu me reviennes,
    C'est que sans toi je suis comme un Roi sans sa Reine.

  6. #6
    Membre habitué
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    119
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 119
    Points : 139
    Points
    139
    Par défaut
    C'est un probleme de positionnement de l'octet de poids fort (tu veux du big-endian):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    >>> struct.pack("lcccc",4,"t","o","t","o")
    '\x04\x00\x00\x00toto'
    >>> struct.pack("!lcccc",4,"t","o","t","o")
    '\x00\x00\x00\x04toto'
    note: cccc peut etre remplacé par 4s

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

Discussions similaires

  1. [Toutes versions] Envoyer une donnée de cellule dans la cellule d'une autre feuille.
    Par Serghez dans le forum Excel
    Réponses: 4
    Dernier message: 16/03/2010, 20h39
  2. Comment envoyer une trame en hexa
    Par Fr33dom dans le forum VB.NET
    Réponses: 12
    Dernier message: 12/08/2009, 18h03
  3. Socket - Envoye une série de Byte Null à la fin
    Par deejay2221 dans le forum C#
    Réponses: 3
    Dernier message: 30/04/2008, 16h51
  4. Réponses: 13
    Dernier message: 13/09/2006, 21h39
  5. [socket] envoyer des données vers un port com
    Par Slimer dans le forum Entrée/Sortie
    Réponses: 4
    Dernier message: 20/07/2004, 17h35

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