Я пытаюсь написать серверный код (отправитель) для отправки файла .gz(GZIP) как часть ответа HTTP GET.
Для этого мне нужно использовать решение на основе C++. Я использую подход ниже.
Я пытаюсь написать серверный код (отправитель) для отправки файла .gz(GZIP) как часть ответа HTTP GET. Для этого мне нужно использовать решение на основе C++. Я использую подход ниже. [code]constexpr std::size_t chunk_size = 1024 * 1024; // 1 MB chunk size
// Function to read a chunk of data from a file std::vector readChunk(std::ifstream& file, size_t chunkSize) { std::vector buffer(chunkSize); file.read(buffer.data(), chunkSize); buffer.resize(file.gcount()); return buffer; } // Function to send a chunk of data void send_chunk(tcp::socket& socket, const std::vector& chunk, std::size_t total_size) { http::response res; res.result(http::status::ok); res.set(http::field::content_type, "application/octet-stream"); res.set(http::field::content_length, std::to_string(total_size)); res.body() = std::string(chunk.data(), chunk.size()); res.prepare_payload(); res.set(http::field::content_length, std::to_string(total_size)); http::write(socket, res); }
// Function to send the file in chunks void send_file_in_chunks(tcp::socket& socket, const std::string& filename, std::size_t file_size) { std::ifstream file(filename, std::ios::binary); if (!file.is_open()) { std::cerr