我正在为一个类分配作业,该作业涉及使用套接字将.gz二进制数据从服务器发送到客户端。在客户端,它接收流并将其存储到未签名的char缓冲区中。如何将压缩后的数据写入客户端的新.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);
但是在生成的.gz上调用gunzip
失败,因为file test.gz
输出test.gz: data
;因为它无法识别为.gz文件。
我认为gzprintf()也不起作用,因为它期望以null结尾的字符串,并且我具有二进制数据。理想情况下,我只想从服务器发送.gz并将该信息写入客户端上的新.gz文件。有什么建议吗?
改为使用gzwrite(gz, buffer, buflen)
。自远古以来,该功能就一直存在。