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?