Allora, premettendo che non ho mai affrontato l'argomento, ma partendo da "idee", io procederei in questo modo.
Considerando "esterna" la parte di visualizzazione del desktop (sarà un modulo che secondo me dovrai sviluppare "a parte"), mi occuperei prima della comunicazione in rete e lo scambio delle risorse/dati. quindi mi preoccuperei della gestione di queste "cosuccie" tramite una comunicazione a pacchetti, quindi partirei da datagramPacket e tutto quello che li riguarda. una volta fatta una comunicazione "funzionante e facilmente gestibile" di questo aspetto, mi preoccuperei di come gestire "il desktop" e quindi proiettarlo via rete verrà in un secondo momento.
Quindi direi che io affronterei il progetto in questo modo:
1- gestione della comunicazione a pacchetti con un server che gestisce "BENE" il tutto
2- cattura delle immagini a video e relativa compressione con codifica/decodifica
3- scambio dei dati