Domanda

Sto Scrivendo un client C # / .Net su un server Java su Solaris.

Il server Java è scrittura byte di dati grezzi in un formato Gziped che ho bisogno di estrarre, ma sto avendo difficoltà a leggere i dati nelle dimensioni del buffer di destra. Ho letto il messaggio non-deterministicly incompleta o completa e non riesco a leggere il secondo messaggio, in ogni caso. Sto leggendo i byte che utilizzano la classe NetworkStream con la proprietà DataAvailable.

La mia ipotesi è che potrebbe essere correlato a un piccolo grande problema / endian. Ho bisogno di usare una conversione speciale di modificare i dati da grande in little endian? Ho bisogno di leggere i byte necessari utilizzando l'intestazione gzip?

Ho usato per utilizzare lo stesso server con un protocollo non compresso prima e aveva nessun problema utilizzando uno StreamReader con la funzione ReadLine prima, ma quel protocollo era puramente basato su testo.

Edit: Purtroppo non ho altra scelta, come il server remoto e il protocollo è dato. È la parte endiness del formato gzip o devo solo bisogno di convertire l'intestazione di conseguenza? I dati non compressi sono puri stringhe UTF8-encoded con interruzioni di riga come delimitatori.

È stato utile?

Soluzione

Il formato GZIP non è complessa. E 'disponibile in tutto il suo splendore in un semplice, accessibile documento di specifica, IETF RFC 1952 .

Il formato GZIP specifica il bit-ordine per i byte. Non è regolabile con una bandiera per endianness. Il produttore di un flusso GZIP è responsabile conforme alla specifica al riguardo, e un consumatore di un flusso GZIP, altrettanto.

Se fossi debug di questo, vorrei guardare il byte su entrambe le estremità del filo e verificare che i byte che vanno in sono le stesse che i byte che esce. Questo è sufficiente a mettere da parte le questioni endian.

Se non si dispone di successo la trasmissione di un bytestream GZIP, prova a trasmettere i dati di prova - 16 byte di 0xFF, seguiti da 16 byte di 0xAA, ecc ecc e poi, verificare che questo sia i dati provenienti fuori dall'altra parte.

Mi dispiace, non so cosa si intende per ho letto il messaggio non-deterministicly incompleta o completa e non in grado di leggere il secondo messaggio, in ogni caso. Secondo messaggio? Che secondo messaggio? L'endianness non dovrebbe influenzare la quantità di dati ricevuti.

Ci si sente a me che non si ha fiducia che state trasmettendo dati con successo. Vorrei suggerire di verificare che prima di lavorare su temi e problemi endian formato gzip.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top