2017-03-20 3 views
2

Ich schreibe Code für ein System, das über Wifi kommuniziert, das aus einem Android-Gerät besteht, das UDP-Pakete über einen Router an einen Raspberry Pi sendet. Die zu sendenden Informationen sind sehr zeitkritisch, und um die Leistung zu verbessern, versuche ich, Python-Code für den Pi zu schreiben, um alte Pakete zu ignorieren, wenn es einen jüngeren im Puffer gibt (die Daten zeigen den Zustand einer Steuerschnittstelle an) - Die älteren Daten sind nutzlos. Da der Pi eine begrenzte Verarbeitungsleistung hat, möchte ich vermeiden, zusätzliche Arbeit an alten Daten zu leisten. Der Code ist zur Zeit wie folgt:Ignorieren alter UDP-Pakete Python

import time 
import socket 

#This section of code creates the socket and shows that it is running 
UDP_IP = '' 
UDP_PORT = 2016 
sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) 
sock.bind((UDP_IP, UDP_PORT)) 

while(1): 
    data, addr = sock.recvfrom(1024) #receives UDP packets, buffer size is 1024 bytes 
    # do time critical stuff with data 

ich mit SOCK_DGRAM weiß, dass, wenn ich die Puffergröße 8 (die Anzahl von Bytes in den Daten gesendet in) erhält es nur in 8 Bytes bringen und den Rest verwerfen - Würde dies mein Ziel erreichen, oder würde dies die ältesten 8 Bytes einbringen oder ein anderes Verhalten haben?

Vielen Dank für Ihre Hilfe!

Antwort

0

"würde dies die ältesten 8 Bytes einbringen?" Ja, da die Warteschlange als FIFO implementiert ist, wird eine, die früher gesendet wird, auf dem vorderen Teil der Warteschlange, so dass früher verlassen. Eine Möglichkeit, dieses Problem zu beheben, besteht darin, sich ein sogenanntes Protokoll zu erstellen, das die Zeit anfügt, in der Daten im Client für das gesendete Paket erstellt werden. Auf diese Weise können Sie Pakete ignorieren, die aufgrund Ihrer eigenen Kriterien veraltet sind. auf der clinet:

from datetime import datetime 
packet = b'{}:some data'.format(datetime.now()) 
+0

Ich dachte, dass das der Fall war. Ich werde diese Lösung versuchen. Danke für Ihre Hilfe! –

Verwandte Themen