Was ich nicht verstehe ist, das der „server“ beim abschicken
der Formulardaten „POST / HTTP/1.1“ ausgibt, dann kommt
„Closed port XXX“
und er beendet sich selbst. Ich vermute der Browser kappt die
Verbindung…
Vorschläge willkommen… 
Na dann wollen wir mal…
try {
sock = new ServerSocket(socketnumber);
} catch (IOException ex) { System.out.println("Socket
creation failed");}
wenn du hier einen neuen try-catch-block anfängst und der erste schon fehlgeschlagen ist …
try {
Socket connection = sock.accept();
/\* BufferedWriter out = new BufferedWriter(new
OutputStreamWriter(connection.getOutputStream()));
Das /* ist hoffentlich ein Copy-paste Fehler… ?
(…)
out.flush();\*/
Die ausklammerung wird den Browser ein bisschen verwirren…
BufferedReader in = new BufferedReader(new
InputStreamReader(connection.getInputStream()));
String s;
while (!in.ready()) {
das ist schlecht denn laut def. von ready:
„An InputStreamReader is ready if its input buffer is not empty, or if bytes are available to be read from the underlying byte stream.“
„available from underlying byte Stream“ heist in dem Fall im klartext: der Browser hat schon was geschickt.
besser wäre einfach so, ohne „kontrolle“ readLine() aufzurufen, also so:
BufferedReader in = new BufferedReader(new
InputStreamReader(connection.getInputStream()));
try {
while (true){
String s = in.readLine();
System.out.println ("Browser answer : "+s);
if (s.contains ("quit")({
throw new Exception ("User will nicht mehr");
} else {
//Daten in s verarbeiten oder speichern bis die Form komplett ist.
}
}
} catch (Exception E){
//Hier kommt man an wenn entweder "quit" geschickt wurde,
//oder der Browser aufgelegt hat.
}
der Thread bleibt dann solange in readyLine bis der Browser eine Zeile komplette geschickt hat, ganz ohne „sleep“ und busy-waiting. (das while(true) kann man noch ein bisserl verfeinern, hängt aber von deinem „Problem“ ab)
cu