Solaris上のJavaサーバーに.Net/C#クライアントを書き込んでいます。
Javaサーバーは、抽出する必要のあるGzip形式でRawバイトデータを書き込んでいますが、適切なバッファーサイズでデータを読み取るのに問題があります。決定論的に不完全または完全ではないメッセージを読みましたが、どのような場合でも2番目のメッセージを読むことができません。DataAvailableプロパティを持つNetworkStreamクラスを使用してバイトを読み取っています。
私の推測では、それはリトル/ビッグエンディアンの問題に関連している可能性があります。データをビッグエンディアンからリトルエンディアンに変更するには、特別な変換を使用する必要がありますか?gzipヘッダーを使用して必要なバイトを読み取る必要がありますか?
以前は非圧縮プロトコルで同じサーバーを使用していましたが、以前はReadLine関数でStreamReaderを使用しても問題はありませんでしたが、そのプロトコルは純粋にテキストベースでした。
編集:残念ながら、リモートサーバーとプロトコルが指定されているため、選択の余地はありません。エンディアンはGZip形式の一部ですか、それともそれに応じてヘッダーを変換するだけで済みますか?非圧縮データは、区切り文字として改行を含む純粋なUTF8エンコード文字列です。