zlib膨胀在erlang中给出数据错误

时间:2016-01-26 08:13:40

标签: erlang zlib

我有一个java客户端,它正在向一个监听TCP的erlang服务器进程发送一些消息.java客户端使用outputstream发送数据。在服务器端我正在使用以下调用来在初始化zlib后解压缩数据

zlib:inflate(ZStream, Data),

其中Data是二进制文件。我在此调用中获取data_error。 在什么条件下我用zlib获取data_error。

2 个答案:

答案 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调度程序。我将在后续版本中对此进行更改。