Witam.
Mam do napisania jako projekt na studia System ściągania i udostępniania plików torrent. Może on pracować jako host2host (H2H),
multihost (MH). Powinien zawierać on:

Wymiana list udostępnianych plików między hostami - chcemy wiedzieć gdzie (na jakim hoście) jakie pliki się znajdują, wraz z ich sumami kontrolnymi MD5 – wersje (H2H, MH, TCP) (2 pkt.).
Przesyłanie plików typu PULL – ściągamy z wybranego hosta plik o zadanej nazwie - wersje (H2H, MH, TCP).
Przesyłanie plików typu PUSH – wrzucamy na wybrany host pliku o zadanej nazwie – wersje (H2H, MH, TCP).
Wznawianie transmisji pliku w przypadku jej przerwania lub rozłączenia – wersje (H2H, MH, TCP).
Ściąganie tego samego pliku (ale różnych jego części) z wielu hostów jednocześnie – wersja (MH, TCP).
Dodatkowo aplikacja powinna pracować pod nadzorem protokołu UDP.

Moje pytanie jest takie, czy ktoś wykonywał kiedyś może coś podobnego? Tak żeby polecić coś do poczytania, obejrzenia czy cokolwiek.
Z góry dziękuję
Pozdrawiam

dodam, że nie można korzystać z dodatkowych bibliotek komunikacyjnych