Dans ce cas, c'est sûr, le client ne recevra jamais le message et sera bloqué. Le problème est donc ailleurs. Et l'exécutable externe, il est bien appelée, il se termine bien et avec un retour de 0 ? tu as essayé de mettre un System.out.println() de la valeur retournée par waitFor ?