D
Ja stimmt schon, der Socket darf erst geschlossen werden, wenn alle Seiten die Kommunikation abgeschlossen haben, logisch. Ich hatte nur die Socket Programmierung unter Unix mit Prozessen im Kopf, da muss der Client Socket vom Server Parent Prozess geschlossen werden, nachdem der Deskriptor an den Child Prozess weitergereicht wurde. Da sonst die Verbindung zweimal existiert, was in Java ja nicht der Fall ist, wofür glaube ich die Speicherverwaltung von threads verantwortlich ist.
Ein EndOfData wäre dann eine Abhängigkeit beim Client, und das darf nciht sein. Der Client soll nur eine Verbindung auf einen bestimmten Port herstellen und SOAP Daten verschicken. Das wars. Keine zusätzlichen Bedingungen an den Client.
Aktuell sieht es so aus, dass der Server Parent nach accept() bei der Threaderzeugung nochmal in einer blockierenden Methode ist (ist ein Packet von org.apache.*) und da erst nach dem timeout wieder rauskommt und den nächsten client annehmen kann. Das scheint wohl das Hauptproblem grad zu sein. Muss man mal sehen, ob alles funktioniert, wenn das behoben ist.