TCP erlaubt von Natur aus kein multicast.
UDP schon eher, ist aber fuer filetransfers nicht besonders geeignet. Da muss man letztendlich 'TCP Eigenschaften' nachbilden.
Generell wird multicast benutzt, wenn es um echtzeit geht (zB audio und video streaming), nicht aber um Vollstaendigkeit der Daten. Da ist es nicht so schlimm, wenn einmal ein paar Daten verloren gehen (und das passiert bei UDP im gegensatz zu TCP auch).
Ein generelles Problem bei Multicast sind Transfergeschwindigkeiten: Ein schneller uploader kann nicht einfach mit 100K die Daten multicasten, die downloader wuerden einen Grossteil davon verpassen. Loesen kann man das zB, indem der Uploader auf mehreren multicast groups mit verschiedenen Geschindigkeiten sendet (natuerlich nur dann, wenn in der entsprechenden group auf jemand liest). Der Downloader beginnt dann in der langsamsten Gruppe und wechselt in die naechst-schnellere Gruppe, falls er die Daten ohne Verlust in der aktuellen Gruppe lesen konnte.
EDonkey ist fuer multicast meiner Meinung nach besonders ungeeignet, denn dort werden nur ziemlich kleine Stueckchen requested (100K groessenordnung). Fuer jedes einzelne Ding da nen multicast einzurichten ist nicht praktikabel (wenn ueberhaupt anstaendig realisierbar, denn was macht man zB, wenn jemand ein paar daten will? wartet man 5min, vielleicht kommt ja ein 2ter der genau dieses Teil auch will?). Fuer grosse vollstaendige Files ginge das schon besser: jemand will ne Datei und der Uploader gibt ihm bekannt, wann der Transfer losgeht (zB multicast start in 30min). Alle die sich bis dahin angemeldet haben, koennen dann 'mitdownloaden'.
Tipp: google(multicasting)