C zlib gzfwrite()替代项?

问题描述 投票:0回答:1

我正在为一个类分配作业,该作业涉及使用套接字将.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文件。有什么建议吗?

c linux zlib
1个回答
0
投票

改为使用gzwrite(gz, buffer, buflen)。自远古以来,该功能就一直存在。

© www.soinside.com 2019 - 2024. All rights reserved.