Я довольно новичок во всем сетевом программировании. У меня есть какое-то оборудование, где я обычно получаю 2 связанных сообщения через поток UDP (поэтому я написал поддельный сервер для имитации оборудования)
Я создал простой клиент-сервер, где сервер отправляет 2 сообщения, а клиент выбирает их вверх. Моя проблема заключается в том, что, когда я распечатываю данные, полученные от сервера, они распечатываются как 2 сообщения, но невозможно получить только одно из них. Я перепробовал все, что мог придумать. Я чувствую, что ответ очень прост.
Например:
print(self.data)
выходы:
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])
выходы:
#message1
#message2
что я хочу, чтобы вывод был:
#message1
Так как я могу выбрать только #message1
? Любая помощь приветствуется. Я вставляю свой код ниже:
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()