Ciao,
innanzitutto un saluto a tutti, essendo questo il mio primo messaggio.
Ho il seguente problema:
ho un sistema che genera del testo in formato xml e lo invia attraverso connessione ethernet a un altro sistema, che deve ricevere, parserizzare, interpretare il messaggio e rispondere con altro testo, sempre in formato xml.
Premetto che io sono piuttosto nuovo sia di formato xml che di socket, quindi potrei fare domande banali o ignorare passaggi che probabilmente molti di voi danno per scontati.
Quello che devo sviluppare è il sistema (un server) che riceve il testo xml, elabora e risponde. Volevo fare un paio di applicazioni di prova prima di sviluppare la parte più corposa: una invia il testo in formato xml, l'altra riceve, parserizza e fa qualcosa (magari stampa a video i vari campi).
Però sono un po' piantato perchè non so come muovermi. Ho già fatto due applicazioni "sceme" per provare i socket:
- Nella prima, un thread prende da tastiera dei caratteri (un char[256], per provare) e manda attraverso un socket (con la send(SOCKET s, const char *buf, int len, int flags)) il testo a un altro thread, che riceve con la recv(SOCKET s, char *buf, int len, int flags). Poi, molto stupidamente, stampa a video il messaggio ricevuto.
- Nella seconda applicazione, ho un file di testo in formato xml, che apro ed analizzo usando la libreria System.xml.dll. In particolare, apro il file creando su di esso un oggetto XmlTextReader ed usando poi le sue funzioni e membri (Read(), NodeType(), ecc...) per parserizzare il contenuto del file.
Però, l'applicazione che devo sviluppare è un po' diversa. Dal client arriva il testo in formato xml, tutto in una volta, non linea per linea. Quindi non ho un file cui legare il mio XmlTextReader. Come faccio ad analizzare il buf[] che mi arriverà attraverso il socket? Oppure devo cambiare qualcosa, magari prendere il testo che arriva, salvarlo in un file e poi usare l'XmlTextReader su quel file (mi sembra un po' macchinoso, però)? Oppure sbaglio proprio approccio?
Per completezza, uso Visual Studio 2012. Inoltre, non ho accesso nè possibilità di modificare il client finale. Posso fare un po' quello che voglio finchè faccio delle applicazioni di prova, ma il client finale, sul quale non posso intervenire, invierà a ogni ciclo il testo in formato xml via ethernet (usando il protocollo UDP/IP, tra l'altro, ma penso che per questo basti settare opportunamente le proprietà dei socket), per cui eventuali azioni tipo cambiare il formato del file, mandare una linea alla volta, eccetera non mi sono permesse.
grazie mille in anticipo per il supporto