我正在构建一个网络应用程序,需要能够从正常的网络流量切换到zlib压缩流,即中流.我对这个问题的看法涉及布尔开关,当打开时会导致网络代码通过我可以IEnumerable<byte>输入的类传递所有数据,然后拉出解压缩的流,将其传递给现有的协议解析代码.
我看过的事情:
我非常喜欢和所有托管的解决方案,但是让我们拥有它......在.NET中是否存在这个库的任何其他实现,可能更适合我想要做的事情,或者我应该采用ZLib. NET并建立起来作为一个开始?
PS:
乔恩要求更多细节,所以在这里.
我正在尝试实施MCCP 2.这涉及在网络流中发送的信号,并且该信号之后的所有内容都是zlib压缩数据流.在上面的链接中,它们与它们的含义完全相同.无论如何,要清楚,我正在接收这个(客户端,而不是服务器),我已经从网络流中读出了一堆数据,并且切换将在此中间(在所有至少可能),所以任何解决方案都需要能够在接管NetworkStream之前将一些额外的数据输入其中(或者我手动输入其余的数据).
我正在尝试安装python库并在下载egg文件后收到此错误.
Downloading http://pypi.python.org/packages/2.5/s/setuptools/setuptools-0.6c7-py2.5.egg
Traceback (most recent call last):
File "setup.py", line 10, in <module>
use_setuptools(min_version=min_version)
File "/Users/tylo/Downloads/Archives/simplejson-2.0.9/ez_setup.py", line 88, in use_setuptools
import setuptools; setuptools.bootstrap_install_from = egg
zipimport.ZipImportError: can't decompress data; zlib not available
Run Code Online (Sandbox Code Playgroud)
我做了一些研究,发现zlib内置于OS X中.
这可能会出错?
我在linux上有一个DMD + Tango软件包.请告诉我一步一步的信息,例如,如何在D中使用外部库zlib.我编译了zlib.
我有一个像这样的文件树:
myzlib
??? include
? ??? zconf.h
? ??? zlib.h
??? lib
??? libz.a
Run Code Online (Sandbox Code Playgroud)
我接到了import tango.io.compress.ZlibStream;电话myfile.d.
这些是我的问题:
dmd/lib目录吗?dmd/bin/dmd.conf文件吗?dmdcompiler(dmd myfile.d -Llibz.a)或其他东西(也许,使用绝对路径)?我从未尝试过使用任何其他语言的外部库.请帮我.
我的C程序使用一些zlib函数(比如gzopen,gzread).我已经zlib.h在我的程序中包含了头文件,并-lz在编译时添加了选项,但我仍然得到一个错误,即gz函数有未定义的引用.我正在使用kubuntu 11.10并安装了以下软件包:libgh-zlib-dev,zlib1g-dbg,zlib1g和zlib1g-dev.
我试过改变连接命令的位置,但没有运气.这是我现在拥有的那个:
CFLAGS = -Wall -pthread -lm -lz -std = c99-Wextra
我需要在极端压缩级别使用zlib压缩Node.js中的缓冲区.输出的标题应为78 DA.除非我遗漏了什么,否则Node.js文档并没有真正描述如何使用zlib.Deflate类.它不接受任何参数.
我正在使用Gzip commpression和Zlib commpression加速我的网站
我使用下面的代码
ob_start("ob_gzhandler");
在所有页面和包含的公共文件中
lib.output_compression = On
Run Code Online (Sandbox Code Playgroud)
但在此之后,我得到了错误
"Warning: ob_start() [ref.outcontrol]: output handler 'ob_gzhandler' conflicts with 'zlib output compression' in E:\xampp\htdocs\projects\trunk\index.php on line 2"
Run Code Online (Sandbox Code Playgroud)
任何人都可以告诉我它有什么问题吗?
我有一个bigfile.gz.gz很大的文件.我想在运行中解压缩它.理想情况下,这就是我的想法:
$in = fopen('compress.zlib://compress.zlib://bigfile.gz.gz', 'rb');
while (!feof($in))
print fread($in, 4096);
fclose($in);
Run Code Online (Sandbox Code Playgroud)
但是,compress.zlib://不能用那种方式链接:
PHP Warning: fopen(): cannot represent a stream of type ZLIB as a File Descriptor in gztest.php on line 1
Run Code Online (Sandbox Code Playgroud)
所以,我想我会结合起来gzopen(),并compress.zlib://一起:
$in = gzopen('compress.zlib://bigfile.gz.gz', 'rb');
while (!gzeof($in))
print gzread($in, 4096);
gzclose($in);
Run Code Online (Sandbox Code Playgroud)
但是,这只会解压缩一级gzip.
我尝试了其他10种方法,遗憾的gzopen()是,php://memory如果它已被写入使用,则无法使用fwrite().并且stream_filter_append(… zlib.inflate …)无法读取gzip压缩文件.
这是我能想到的最好的,但它会产生两个系统进程,这会带来不必要的开销:
$in = popen('zcat bigfile.gz.gz | gunzip', 'rb');
while (!feof($in))
print fread($in, 4096);
fclose($in);
Run Code Online (Sandbox Code Playgroud)
有人可以提出更好的建议吗?
我正在尝试在解压缩时读取gzip压缩文件的一部分,这样我就可以解析头部内容而无需读取不必要的字节.我之前使用过这个工作,fs.read()同时传递选项只读取前500个字节,然后zlib.gunzip()在从二进制数据解析头部之前使用解压缩内容.
这个工作正常,直到节点v5.0.0修补了一个错误,以确保zlib在截断的输入上引发错误(https://github.com/nodejs/node/pull/2595).
现在我从zlib收到以下错误.
Error: unexpected end of file
Run Code Online (Sandbox Code Playgroud)
如何知道我在截断输入而不抛出错误的情况下解压缩这个部分文件.我认为使用流可能更容易,所以我写了以下内容.
var readStream = fs.createReadStream(file.path, {start: 0, end: 500});
var gunzip = zlib.createGunzip();
readStream.pipe(gunzip)
.on('data', function(chunk) {
console.log(parseBinaryHeader(chunk));
console.log('got %d bytes of data', chunk.length);
})
.on('error', function (err) {
console.log(err);
})
.on('end', function() {
console.log('end');
});
Run Code Online (Sandbox Code Playgroud)
我的parseBinaryHeader()函数返回正确的标题内容,所以我知道它是解压缩但它仍然在输入结束时抛出错误.我可以添加错误监听器来处理错误,并且不做任何事情,但这似乎并不理想.
有任何想法吗?
操作系统: MacOS 10.14 Beta
目标:通过PYENV安装Python 3.7.0
当试图通过pyenv安装python 3.7.0我得到这个错误,我该如何解决这个问题?
Last 10 log lines:
File "/private/tmp/python-build.20180704152803.38921/Python-3.7.0/Lib/ensurepip/__main__.py", line 5, in <module>
sys.exit(ensurepip._main())
File "/private/tmp/python-build.20180704152803.38921/Python-3.7.0/Lib/ensurepip/__init__.py", line 204, in _main
default_pip=args.default_pip,
File "/private/tmp/python-build.20180704152803.38921/Python-3.7.0/Lib/ensurepip/__init__.py", line 117, in _bootstrap
return _run_pip(args + [p[0] for p in _PROJECTS], additional_paths)
File "/private/tmp/python-build.20180704152803.38921/Python-3.7.0/Lib/ensurepip/__init__.py", line 27, in _run_pip
import pip._internal
zipimport.ZipImportError: can't decompress data; zlib not available
make: *** [install] Error 1
Run Code Online (Sandbox Code Playgroud)
尝试修复的步骤:
1)重新安装XCODE
2)重新安装XCODE命令行工具
3)读取堆栈溢出上的类似错误
替代问题:
1) zlib应该预先安装,我可能会遇到什么样的问题?
2)将python手动安装到pyenv中的另一种方法是什么?pynev也可以识别?
我正在尝试在Windows上使用zlib支持构建boost库。我需要使用Intel C ++编译器,因为我需要它具有的某些功能。我已经能够使用Visual Studio编译器通过zlib支持来构建boost,但是由于某些原因,当我使用Intel编译器时boost无法识别zlib。
使用Visual Studio编译器,通过这篇文章,我可以在Windows上使用zlib和bzip2支持来增强构建。但是,我需要使用Intel编译器进行构建,因为Visual Studio生成的库似乎不兼容。最初我对此有一些问题,但是这篇文章可以帮助我克服一些最初的不兼容问题。
我无法将两者成功结合。
我尝试使用以下命令使用Intel编译器构建具有zlib支持的boost库:
.\b2.exe -j7 --build-type=complete address-model=64 architecture=x86 -s BZIP2_BINARY=libbz2 -s BZIP2_INCLUDE=C:\lib\GnuWin32\src\bzip2\1.0.5\bzip2-1.0.5 -s BZIP2_LIBPATH=C:\lib\GnuWin32\src\bzip2\1.0.5\
bzip2-1.0.5 -s ZLIB_BINARY=zlib -s ZLIB_INCLUDE=C:\lib\zlib-1.2.11-Self\zlib-1.2.11 -s ZLIB_LIBPATH=C:\lib\zlib-1.2.11-Self\zlib-1.2.11 threading=multi link=static,shared runtime-link=shared --toolset=intel --debug --user-
config=intel-user-config.jam
Run Code Online (Sandbox Code Playgroud)
我的问题:它构建了库,但是没有zlib支持。我得到以下输出:
testing module modules...
testing module assert...
testing module errors...
testing module sequence...
testing module numbers...
testing module string...
testing module regex...
C:/local/boost_1_69_0 - Copy/tools/build/src/tools\intel-win.jam:48: Unescaped special character in argument ([0-9]+).*
C:/local/boost_1_69_0 - …Run Code Online (Sandbox Code Playgroud)