4

サーバーがあり、別のサーバーからデータを受信して​​います。このデータは zlib で圧縮し、ソケットで 3 番目のサーバーに送信する必要があります。3 番目のサーバーは gzip を使用してデータを解凍します。

私はこの機能を使用します。

std::string compressData(const std::string &data)
{
   using namespace boost::iostreams;
   using namespace std;
   using namespace boost::archive::iterators;

   stringstream zippedOutputStream;
   filtering_ostream filteringStream;
   filteringStream.push(gzip_compressor());
   filteringStream.push(zippedOutputStream);
   stringstream stringStream;
   stringStream << data;
   boost::iostreams::copy(stringStream, filteringStream);

   return zippedOutputStream.str();
}

3 番目のサーバーは、一度に 2 つ以上のピースを受け取ります。gzip でデータを解凍しようとしますが、結果は最初の部分だけです。他のパーツは欠品です。この問題を解決するには、compressData 関数をどのように変更すればよいですか。

4

0 に答える 0