Cara, o programa “trava” porque você está fazendo uma chamada síncrona. O seu servidor precisa trabalhar em uma thread para você conseguir continuar executando o sistema.
Ele fica ativo.
[color=darkred]
public void runServer() {
try // set up server to receive connections; process connections
{
server = new ServerSocket(12345, 100); // create ServerSocket
while (true) {
try {
waitForConnection(); // wait for a connection
getStreams(); // get input & output streams
processConnection(); // process connection
} // end try
catch (EOFException eofException) {
displayMessage("\nServer terminated connection");
} // end catch
finally {
closeConnection(); // close connection
counter++;
} // end finally
} // end while
} // end try
catch (IOException ioException) {
ioException.printStackTrace();
} // end catch
} // end method runSe[/color]
Então… é esse o problema… na verdade, o programa não “trava”, ele está simplesmente aguardando o método retornar, o que não acontece. Ou você tem que fazer esse server ser um runnable ou tem que abrir uma thread e no run dela instanciar e rodar o servidor.