Je suis plutôt novice dans la programmation des réseaux. J'ai du matériel où je reçois normalement 2 messages groupés via un flux UDP (j'ai donc écrit un faux serveur pour simuler le matériel).
J'ai créé un simple client-serveur où le serveur envoie 2 messages et le client les récupère. Le problème est que lorsque j'imprime les données que je reçois du serveur, elles s'impriment sous la forme de deux messages, mais il n'y a aucun moyen de récupérer un seul des messages. J'ai essayé tout ce à quoi je peux penser. Je pense que la réponse est très simple.
Par exemple :
print(self.data)
sorties :
b'#message1,765,0,77.5,allgood,2096,183412.000'
b'#message2,654,0,76.5,allgood,2096,183411.000'
print(self.data.decode().split(',')[0])
sorties :
#message1
#message2
ce que je veux que la sortie soit :
#message1
Alors comment puis-je seulement choisir #message1
? Toute aide serait très appréciée. J'ai collé mon code ci-dessous :
fakeServer.py :
import socket
import time
UDP_IP = "127.0.0.1"
UDP_PORT = 5005
MESSAGE1 = "#message1,765,0,77.5,allgood,2096,183412.000"
MESSAGE2 = "#message2,654,0,76.5,allgood,2096,183411.000"
print ("UDP target IP:", UDP_IP)
print ("UDP target port:", UDP_PORT)
print ("message1:", MESSAGE1)
print ("message2:", MESSAGE2)
while True:
sock = socket.socket(socket.AF_INET, # Internet
socket.SOCK_DGRAM) # UDP
sock.sendto(MESSAGE1.encode('utf-8'), (UDP_IP, UDP_PORT))
sock.sendto(MESSAGE2.encode('utf-8'), (UDP_IP, UDP_PORT))
time.sleep(3)
fakeClient.py
import socket
from tspiMessages import *
import io
class Client():
def __init__(self):
self.client()
def client(self):
server_address = ('', 5005)
sock = socket.socket(socket.AF_INET, # Internet
socket.SOCK_DGRAM) # UDP
sock.bind(server_address)
try:
while True:
self.data, addr = sock.recvfrom(1024) # buffer size is 1024 bytes
self.data1 = self.data.decode().split(',')#[0]
print(self.data)
finally:
sock.close()
if __name__ == '__main__':
client = Client()