Du musst die Datei in Stücke zerlegen, entweder in N Teile, oder in X Byte, das ist dir überlassen.
Wenn du einen zentralen Server hast, dann musst der speichern, wer alles diese Datei hat, ggf. anfragen beim Client, und dann die IPs zu dem einen Client schicken, damit dieser sich dann verbinden kann.
Wenn du ohne Server arbeitest, musst du die IPs einzeln durchgehen (IPs musst du natürlich kenen, bzw. von Deiner auf die Anderen schliessen) und versuchen dich auf Port xy zu verbinden; ggf. prüfen, ob es wirklich ein Client für das P2P-Netz ist, z.B. über einen kurzen Befehlsaustausch.
Jeder Client führt für sich eine Liste, welche Dateien er an welche
IP versenden muss. Dann musst du dir einen Ablauf überlegen, wie Daten verschickt werden (z.B. Priorität, Vorrang von kleinen Dateien vor Großen).
Transfer sollte über
TCP erfolgen, um eine gewisse Sicherheit zu gewährleisten.
Die einzelnen Teile sollten natürlich gekennzeichnet werden, damit mann sie identifizieren kann.
Z.B. so:
[Nummer des Dateifragments][Hashwert des Fragments(für Prüfung des Fragments)][Hashwert der gesamten Datei(für Prüfung, wenn der Transfer komplett ist)][Name der Datei][Inhalt des Fragments]
Das ist so ganz grob der Aufbau.