package clientserver; import java.io.IOException; import java.net.ServerSocket; import java.net.Socket; public abstract class AbstractServer { ServerSocket ss; public AbstractServer(int portNumber) throws IOException { ss = new ServerSocket(portNumber); } public void start() { acceptClients(); if (this instanceof Runnable) (new Thread((Runnable) this)).start(); } void acceptClients() { (new Thread() { public void run() { try { while (true) { Communicator comm = createClientHandler(ss.accept()); comm.start(); } } catch (IOException e) { e.printStackTrace(); } } }).start(); } protected abstract Communicator createClientHandler(Socket socket) throws IOException; }