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