サーバーがあり、別のサーバーからデータを受信しています。このデータは 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 関数をどのように変更すればよいですか。