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

Python Discussion :

Problème socket ethernet (encodage?)


Sujet :

Python

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Mai 2008
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mai 2008
    Messages : 6
    Points : 6
    Points
    6
    Par défaut Problème socket ethernet (encodage?)
    Bonjour à toutes et à tous.

    Je suis relativement nouveau dans la programmation en python et je suis face à un problème (qui au fond ne doit pas être si compliqué) auquel je ne trouve pas de réponses sur le net.

    J'ai deux programmes très simples en python pour dialoguer sur le port ethernet. Voici les deux programmes ci-dessous (je suis sous Python 3.2, Windows XP 32 bits).

    Envoi de données:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    from socket import *
     
    # Set the socket parameters
    host = "localhost"
    port = 21568
    buf = 1024
    addr = (host,port)
    UDPSock = socket(AF_INET,SOCK_DGRAM)
     
    data = 'TEST'
     
    UDPSock.send(bytes( data, 'UTF-8'))

    Réception des données:
    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
    16
    17
    18
     
    from socket import *
     
    host = "localhost"
    port = 21568
    buf = 1024
    addr = (host,port)
    UDPSock = socket(AF_INET,SOCK_DGRAM)
    UDPSock.bind(addr)
     
    while 1:
        data,addr = UDPSock.recvfrom(buf)
        if not data:
            print ("Client has exited!")
            break
        else:
            print ("Received message : ", str(data,'UTF-8'))
    UDPSock.close()
    Le code ci-dessus fonctionne très bien. Le problème vient plutôt de l'étape n°2. En effet, le programme ci-dessus n'a servi que de test, je souhaite maintenant recevoir des messages d'un matériel présent sur le réseau.

    Je reçois bien des données de ce matériel mais ces dernières ne sont pas au bon format!

    Données reçues avec Wireshark (hexa):
    e7 9a 10 69 00 00 1e fa ff 0c 81 fe [...]

    Données reçues dans mon code:
    e7 9a $S 01 00 14 fa ff 87 80 fe { [...]

    Le problème vient, je pense, de l'encodage des données mais quels que soient les tests que j'ai pu effectuer, je ne retombe jamais sur la bonne trame!

    A quelle étape est-ce que je fais quelque chose de mal? Cette histoire d'encodage et décodage (encode/decode, binascii, str, etc...) m'a complètement perdu


    Merci pour votre aide

  2. #2
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 281
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 281
    Points : 36 768
    Points
    36 768
    Par défaut
    Ca affiche quoi lorsque vous affichez les bytes reçus en hexa.
    On devrait avoir la même chose que ce qui passe sous wireshark, postez le nouveau code.
    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Mai 2008
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mai 2008
    Messages : 6
    Points : 6
    Points
    6
    Par défaut
    Merci pour votre aide

    Mon problème est justement de savoir comment avoir les données en hexa.
    Les données reçues (affichées dans le premier message) ressemblent à de l'hexa mais avec des caractères qui n'ont rien à voir avec de l'hexa


    Au niveau de la réception, j'ai essayé de changer la ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    print ("Received message : ", str(data,'UTF-8'))
    par un simple:
    Malheureusement le résultat est toujours différent de Wireshark. (Désolé je n'ai pas le matériel sous la main pour le moment, il m'est donc impossible de poster le résultat obtenu).

  4. #4
    Membre expérimenté
    Homme Profil pro
    Inscrit en
    Mars 2007
    Messages
    941
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2007
    Messages : 941
    Points : 1 384
    Points
    1 384
    Par défaut
    Euh... Ton "matériel sur le réseau" envoie des données encodées en hexa ? Ce serait pas plutôt des chaînes binaires ?
    Essaie ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    print("Received message :", " ".join(hex(c) for c in data))

  5. #5
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Mai 2008
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mai 2008
    Messages : 6
    Points : 6
    Points
    6
    Par défaut
    Merci beaucoup dividee c'était bien cela. (c'était tellement simple )

    Désolé pour le temps de réponse, je n'ai pu tester le code avec le matériel en question que la semaine dernière.

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

Discussions similaires

  1. Problème Socket
    Par karl2mil1 dans le forum C++Builder
    Réponses: 3
    Dernier message: 12/09/2005, 23h35
  2. Problème socket raw ? bizarre :~
    Par MonsieurAk dans le forum Windows
    Réponses: 2
    Dernier message: 12/07/2005, 14h12
  3. [MFC] Problème Socket + Connexion SQL
    Par BananaUltra3C dans le forum MFC
    Réponses: 6
    Dernier message: 20/05/2005, 16h41
  4. [Réseau] Problème socket
    Par neenee dans le forum Entrée/Sortie
    Réponses: 14
    Dernier message: 18/01/2005, 15h26
  5. Problème lors d'encodage dans un Maskedit
    Par panthere6 dans le forum Bases de données
    Réponses: 2
    Dernier message: 08/06/2004, 06h35

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