Outils pour utilisateurs

Outils du site


udpraw

Lancer ces 2 programmes dans 2 terminaux séparés:

udpraw_emi.py
#!/usr/bin/python3
# -*- coding: utf-8 -* 
#Bertrand Vandeportaele 2021
 
#struct — Interpret strings as packed binary data
#https://docs.python.org/2/library/struct.html
#https://stackoverflow.com/questions/37093485/how-to-interpret-4-bytes-as-a-32-bit-float-using-python/37093610
 
import struct
#https://waytolearnx.com/2020/06/socket-udp-client-serveur-avec-python.html
import socket
import time
 
destIP='127.0.0.1' 
portOut=9999
 
numero=1
val1=3.14159;
val2=1.23456;
val3=8.654231;
addrPort = (destIP, portOut)
bufferSize = 1024
# Créer un socket UDP coté client
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
while True:
    #<I pour unsigned int sur 32bits et  <f pour flottant 32 bits
    list1=struct.pack('<I',numero )+struct.pack('<f',val1 )+struct.pack('<f',val2 )+struct.pack('<f',val3 ) #encodage
    #valreconstruite=struct.unpack('<Ifff', bytearray(list1)) #test de décodage
    #for i in range(4):
    #    print(valreconstruite[i])
    #    print(type(valreconstruite[i]))    
    # Envoyer au serveur à l'aide du socket UDP créé
    s.sendto(list1, addrPort)
    numero=numero+1
    val1=val1+0.3;
    val2=val2;
    val3=val1+val2;
    time.sleep(0.1);
udpraw_rec.py
#!/usr/bin/python3
# -*- coding: utf-8 -* 
#Bertrand Vandeportaele 2021
import struct
import socket
 
destIP='127.0.0.1' 
 
portOut=9999
 
# Créer une socket datagramme
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
# Lier à l'adresse IP et le port
s.bind((destIP, portOut))
print("Serveur UDP à l'écoute")
# Écoutez les datagrammes entrants
while(True):
    addr = s.recvfrom(1024)
    #message = addr[0]
    aa= bytearray(addr[0])
    valreconstruite=struct.unpack('<Ifff', aa) #décodage
    for i in range(4):
        print(valreconstruite[i])
        print(type(valreconstruite[i]))
    address = addr[1]    
    clientMsg = "Message du client: {}".format(valreconstruite)
    clientIP  = "Adresse IP du client: {}".format(address)
    print(clientMsg)
    print(clientIP)
udpraw.txt · Dernière modification : 2021/10/28 11:17 de bvandepo