Salve a tutti. Ho un problema nel trasferire un pacchetto xml attraverso un socket.

Client:
codice:
            StreamResult sr = new StreamResult(out);
            DOMSource ds = new DOMSource(tosend);
            Transformer tf = TransformerFactory.newInstance().newTransformer();
            tf.transform(ds, sr);
dove: out è l'OutputSream del socket, tosend è il pacchetto XML in formato Document.

Server:
codice:
            StreamSource ss = new StreamSource(connection.getInputStream());
            DOMResult dr = new DOMResult(request);
            Transformer tf = TransformerFactory.newInstance().newTransformer();
            tf.transform(ss, dr);
dove: request è il pacchetto ricevuto.

Il problema è che inviando così il server rimane in attesa che lo stream in ingresso si chiuda. Ma:
  • Non posso chiudere "out" perché altrimenti si chiude il socket e mi serve che la connessione rimanga attiva.
  • Non posso inviare un simbolo EOF perché il parser da errore e si blocca.
  • Ho provato a chiudere solo un canale del socket con shutdownOutput() ma invece di chiudersi solo un canale si chiude tutto il socket!


E al momento non mi vengono in mente altre soluzioni. Qualche idea?