public synchronized void start() throws Exception {
		if (thread != null) {
			throw new Exception("ServerSocket already started.");
		}
		
		server = new ServerSocket(port, backlog);
		thread = new Thread(new Runnable() {
			/** run()
			 * 
			 * Accepts connections and adds it to the managed list
			 */
			@Override
			public void run() {
				running = true;
				while(running) {
					try {
						sockets.add(new SocketWrapper(server.accept()));
					} catch (IOException e) { }
				}
			}
		});
		
		thread.start();
	}