Envoyer une trame d'octets via Ethernet (Conversion)
Bonjour,
J'ai fait un code qui à pour but d'envoyer une trame en hexadécimal en utilisant Ethernet entre client serveur: voici mon code:
Serveur:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36
| import socket
import sys
import time
global msg_recu
def Demande_Trame():
global msg_recu
message_1='Demande de resultat de comptage'
print(message_1)
message_1=message_1.encode('UTF-8')
connexion_avec_RPI.send(message_1)
msg_recu=connexion_avec_RPI.recv(1024).decode('UTF-8')
print('Réponse : ',msg_recu)
print('Element 1 : ', msg_recu[0])
Demarrer=input('Cliquez sur 1 pour demarrer : ')
if Demarrer == '1':
port = 10005
host = 'localhost'
while 1:
time.sleep(5)
connexion_principale=socket.socket(socket.AF_INET, socket.SOCK_STREAM)
try:
connexion_principale.bind((host,port))
except socket.error:
print("La liaison a echouee !")
sys.exit()
print("SAE en attente...sur le port {}\n".format(port))
connexion_principale.listen(5)
connexion_avec_RPI,info_connexion=connexion_principale.accept()
Demande_Trame() |
Client:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
| import socket
import sys
def x():
while 1:
try:
hote = 'localhost'
port = 10005
Connexion_SAE=socket.socket(socket.AF_INET, socket.SOCK_STREAM)
Connexion_SAE.connect((hote,port))
print("connexion avec l SAE sur le port {}\n".format(port))
#---------------------------------------------------------------
msg_recu=Connexion_SAE.recv(1024).decode('UTF-8')
print(msg_recu)
trame=str([0x7E, 0x02, 0x73])
trame=trame.encode('UTF-8')
Connexion_SAE.send(trame)
except:
print('Connexion ...')
x() |
Vous pouvez voir que j'ai fais des boucles pour faire tout marcher en automatique, donc le serveur demande la trame le client reçoit son message et lui envoi celle-ci et le serveur la reçoit et puis l'affiche ! jusque la tout est bon, mais quand je veux utiliser les données de cette trame ! c-à-d quand je veux récupéré le 1er élément de la trame, il m'affiche le crochet "[" donc il comprend cette trame comme une chaîne de caractère !
je sais que c'est un problème de conversion, mais après plusieurs essais avec de nombreux exemple trouver sur internet, j'ai toujours la même chose ! ou bien des erreurs, donc j'ai préféré rester sur mon 1er code qui marche, et puis posé une question pour avoir de bonne proposition et ne pas me perdre.
:roll: Donc ma question est : comment envoyer une trame d'octets par Ethernet et l'affichée en tant que telle? des indications sur les conversions?
Voici l'affichage de l'exécution du serveur:
Code:
1 2 3 4 5
| SAE en attente...sur le port 10005
Demande de resultat de comptage
Réponse : [126, 2, 115]
Element 1 : [ # Donc c'est ça le souci (moi je veux avoir le 126 et non le "[" |
Je vous remercie