- FS_GET Anfrage an Server mit Payload = identifier der Datei (SHA1(filename) modulo 2^n)
- Server Antwortet mit einer Nachricht,
- die im Header die selbe UUID (MSB sowie LSB) enthält, sowie einen um 1 erhöhten Counter
- den FileDescriptor als Payload enthält
- aus dem FileDescriptor musst du nun im wesentlichen die Anzahl der Chunks bestimmen, damit du für jeden Chunk den jeweiligen Identifier mit (SHA1(filename:ChunkNr) modulo 2^n) bestimmen kannst.
Wenn du nun wie oben eine neue FS_GET Anfrage an den Server schickt, aber mit dem
Chunk Identifier als Payload, antwortet der Server mit einer Nachricht
- die im Header die selbe UUID (MSB sowie LSB) enthält, sowie einen um 1 erhöhten Counter
- den Chunk als Payload enthält
=> Die Chunks musst du nun wie schon im Post oben erwähnt zu einer Datei zusammenbauen, d.h. die Chunks in der richtigen Reihenfolge in eine Datei schreiben, und der Datei den ggb. filename geben.
Falls du das ganze in Java implementierst:
java.net.ServerSocket,java.net.Socket, java.io.InputStream /OutputStream zum Senden & Empfangen von Nachrichten
java.io.FileOutputStream zum Datei anlegen und byte daten reinschreiben
java.nio.ByteBuffer => geniale Sache um aus den rohen Bytedaten (die du dem Server schicken musst / die du vom Server empfängst) deine ints, longs usw. zu extrahieren - und umgekehrt deine ints, longs usw. in rohe Bytedaten zu konvertieren