Я работаю над заданием для класса, которое включает в себя отправку двоичных данных .gz с сервера на клиент с использованием сокета. На стороне клиента он получает поток и сохраняет его в неподписанном буфере символов. Как я могу записать эти сжатые данные в новый файл .gz на стороне клиента?
Я не могу использовать gzfwrite (), потому что он был добавлен в 2017 году и старые машины задницы, которые они используют здесь для оценки в моей программе нет недавно обновленной zlib. Любая попытка его использования приводит к «неопределенной ссылке».
Я пытался использовать fopen ():
FILE *gz = fopen("test.gz", "wb"); // create new .gz on client end
fwrite(buffer, 1, buflen, gz); // buffer contains binary data sent from server
fclose(gz);
, но вызов gunzip
для получающегося .gz не удался, так как file test.gz
выходы test.gz: data
; так как он не распознается как файл .gz.
Я не думаю, что gzprintf () тоже будет работать, так как ожидает строку с нулевым окончанием, и у меня есть двоичные данные. В идеале я хотел бы просто отправить .gz с сервера и записать эту информацию в новый файл .gz на клиенте. Есть предложения?