Bei der Entwicklung von Peer2Peer Netzwerken, die dazu eingerichtet werden, um große Mengen von Daten zu verarbeiten (Cluster), muss neben der Kommunikation der Knoten auch die Übertragung grosser Datenmengen sicher gestellt werden. Auch bei einfachen Anwendungen, wie (mein lieblingsbeispiel) einem Chat in dem Dateien ausgetauscht werden, sollte das verwendete Protokoll Streaming zur Verfügung stellen, um ein zweites Protokoll für die Dateiübertragung zu vermeiden.
Aus diesem Grund haben wir im TML (The Missing Link) Protokoll auch eine Streaming API implementiert. In Python kann diese mit eigenen von einer Basisklasse abgeleiteten Objekten verwendet werden.
Hier ein Beispiel für eine Funktion, die eine Datei von einem anderen Peer speichert.
Code: Alles auswählen
def save_file(self, afilename, chunksize=1024):
sfile = open(afilename, 'wb')
chunks = int(self.size/chunksize)+1
assert chunks*chunksize >= self.size, "download calculation invalid"
self.seek(0, tml.constants.SO_FROM_BEGINNING)
for c in range(0, chunks):
buffer = self.read(chunksize)
sfile.write(buffer)
sfile.close()