Trecho da apostila FJ-11

Estou concluindo meus estudos em cima da apostila FJ-11 da caelum e econtrei um problema na parte de sockets!
Ai vai o codigo:

public class Main {

		public static void main(String[] args) throws IOException {
			ServerSocket servidor = new ServerSocket(12341);
			System.out.println("Porta 12341 aberta!");

			
			System.out.println("Nova conexão com o cliente " +
								cliente.getInetAddress().getHostAddress()
								);

			Scanner s = new Scanner(cliente.getInputStream());
			while (s.hasNextLine()) {
				System.out.println(s.nextLine());
			}

			s.close();
			servidor.close();
			cliente.close();
		}

}

Simplesmente ele trava nessa atribuição:



			Socket cliente = servidor.accept();

Não lança nenhuma exceção e não gera nenhum erro na compilação. Simplesmente fica parado! E tenho quase certeza disso, porque se tento executar o programa 2 vezes, ele lança uma exceção dizendo que a porta já está aberta, isto quer dizer que o programa nem chegou em


			s.close();
			servidor.close();
			cliente.close();

Certo ??

Ele fica parado até que a aplicação cliente se conecte a ela usando a porta 12341. Vai ficar parado mesmo.