L'argomento è molto vasto...
Prima di tutto la trasmissione multicast avviene solo tramite UDP...slcuni protocolli possono utilizzare connessioni TCP, ma non in multicast...
Ci sono molti protocolli già assodati...come PIM, RTP/RTCP, PGM, PGMCC...sinceramente non ho mai realizzato niente di questo tipo...ma se ti devo dare un indizio: la primitiva setsockopt serve per aggiungersi/togliersi da un gruppo multicast...
Ogni gruppo multicast è identificato da un indirizzo multicast i cui primi 4 bit sono 1110... In realtà un indirizzo mutlicast non è formato dal solo indirizzo del gruppo, ma nei protocolli più moderni è l'unione di <IP sorgente, IP multicast>....
struct ip_mreq ipm;
ipm.imr_multiaddr <--- indirizzo multicast
ipm.imr_interface <--- interfaccia sulla quale si lavora (anche INADDR_ANY)
setsockopt(s, IPPROTO_IP, IP_ADD_MEMBERSHIP, &ipm, sizeof(ipm));
oppure per togliersi:
setsockopt(s, IPPROTO_IP, IP_DROP_MEMBERSHIP, &ipm, sizeof(ipm));
Dai un'occhiata qui:
http://howtos.linux.com/howtos/Multi...WTO.shtml#toc7