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:
Client:
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
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()
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 !
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
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()
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.
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:
Je vous remercie
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 "["
Partager