在使用ByteArray:getPack() 是出现错误

:0: too many results to unpack

stack traceback:

: in function ‘unpack’

: in function ‘getPack’

:53: in function ‘send2Socket’

求教 我的pack比较大

输出的时候有提示:log too long, max size is 16.00KB, actual size is 112.76KB

输出的时候有提示:log too long, max size is 16.00KB, actual size is 112.76KB

这已经很明确了吧。

不能发送大数据吗

这个类是为socket通信设计的,我从来就没有考虑用它发送过大数据。

我们的游戏中,每条数据是用字节做单位的,最大也不会超过10K。100K以上的数据我实在是没有考虑过。

以前有网友提到用 ByteArray:toString() 来显示几百K的数据,说player会崩溃。这个我只能说,这么大的数据量print出来,作为人类的我很难看懂。

这个错误并非 ByteArray 报的,而是lpack这个库报的。这是个C库。

哈哈 看来我想办法 分包或者 优化一下包的大小吧

function ByteArray:getPack(__offset, __length)
__offset = __offset or 1
__length = __length or #self._buf
local __t = {}
for i=__offset,__length do
__t#__t+1] = string.byte(self._buf*)
end
local __fmt = self:_getLC(“b”…#__t)
print(“fmt:”, __fmt)
local __s = string.pack(__fmt, unpack(__t))
return __s
end

我定位到这里 可以正常拿到__t 他是一个序列化的数组,只是有4w多个数据 unpack的时候 报错
*

ok 解决了 谢谢大家

我详细测一下提个pr

请问你是怎么解决的?分包了?

— Begin quote from ____

引用第7楼chayic于2014-07-08 18:10发表的 :
ok 解决了 谢谢大家 http://www.cocoachina.com/bbs/job.php?action=topost&tid=213295&pid=998612

— End quote

解决方法是?

attempt to index field ‘ByteArray’ (a nil value)有知道怎么用的么这个ByteArray