La mia è una tipica classe Java con il main che si mette in ascolto e genera un thread per ogni client che le si connette.
Bene o male il codice è il seguente:

codice:
public class Application {

    public static void main(String args[]) {
        ServerSocket serverSocket = new ServerSocket(9001);
            while ( true )
            {
                // attende una connessione
                Socket clientSocket = serverSocket.accept();

                ApplicationThread applicationThread = new ApplicationThread(clientSocket);
                applicationThread.start();
            }
    }
}
Dopodichè il thread esegue varie azioni con la connessione (scambio di informazioni ecc..).

Grazie!

P.S. ho omesso il try-catch.