Per il progetto universitario leggere alcuni tutorial sulle prese. Credo che questo sia ciò che il tuo professore si aspetta da te. Prendiamo ad esempio il seguente: http://www.oracle.com/technetwork/java/socket-140484.html
Esistono 2 soluzioni generali: server completo e senza server. In caso di soluzioni basate su server, tutti i client devono essere preconfigurati con l'indirizzo IP del server. Il server apre il socket del server e inizia l'ascolto. Quindi, ogni client si connette al server e ai registri. La registrazione è molto semplice: il server ha solo bisogno dell'IP del client. Ora il server contiene un elenco di client connessi e invia l'elenco a ciascun client. Per fare l'app peer2peer, anche ciascun client apre il socket del server. Quando il client A desidera connettersi al client B, si connette semplicemente al socket.
È possibile implementare una soluzione server-less. In questo caso è necessario un meccanismo di rilevamento basato per esempio sulla trasmissione.
Spero che questo aiuti. In bocca al lupo.
Ti suggerisco di dare un'occhiata a una delle tante implementazioni open source della condivisione di file peer-to-peer e usarli come modello (o semplicemente usarli così come sono) –