Una possibile implementazione che mi viene in mente è questa:

1) Il sistema di aste è un server (ServerSocket)
2) I clienti sono dei client (Socket)
3) Anche il giudice è un client (Socket), però particolare.

Quando il server riceve una connessione, tramite il protocollo di comunicazione (che è la parte più importante che devi pensare/realizzare) deve capire se si tratta di un cliente o del giudice. Se si tratta di un cliente, seguirà un iter, se si tratta del giudice ne seguirà un altro.

In particolare, se il giudice è solo uno, il server dovrà preoccuparsi di controllare che non vi sia già un giudice collegato. Se non c'è un giudice, quello che è arrivato va bene; se c'è già un giudice, quello arrivato viene "respinto" (gli si manda un messaggio e la sua socket, lato server, verrà chiuda).

Altra implementazione, più "complessa" consiste nel prevedere due diverse ServerSocket nel server: una in ascolto su una porta per i clienti, l'altra in ascolto su una porta diversa per il giudice.


Ciao.