我有一个java客户端,它正在向一个监听TCP的erlang服务器进程发送一些消息.java客户端使用outputstream发送数据。在服务器端我正在使用以下调用来在初始化zlib后解压缩数据
zlib:inflate(ZStream, Data),
其中Data是二进制文件。我在此调用中获取data_error。 在什么条件下我用zlib获取data_error。
答案 0 :(得分:0)
尝试设置0或-15 WindowBits,如果你粘贴更多代码,如zlib:inflateInit调用,Data变量的二进制转储和Java端zlib init,将会有所帮助。
答案 1 :(得分:-1)
如果您使用相对较小的块来传输数据,则可以使用我的ezlib on Github。
性能方面,它比erlang驱动程序快约69%,并且当你有并发会话时效果也更好。
要集成,请像对待任何其他erlang应用程序一样使用rebar。举一个小例子:
StringBin = <<"this is a string compressed with zlib nif library">>,
{ok, DeflateRef} = ezlib:new(?Z_DEFLATE),
{ok, InflateRef} = ezlib:new(?Z_INFLATE),
CompressedBin = ezlib:process(DeflateRef, StringBin),
DecompressedBin = ezlib:process(InflateRef, CompressedBin).
不要用它来压缩大块,因为你可以阻止erlang调度程序。我将在后续版本中对此进行更改。