ikcp_send 发送数据时,似乎有长度限制。在 ikcp_send 函数中,有如下的条件判断:
if (count >= (int)IKCP_WND_RCV) return -2;
不明白为什么要增加这个条件判断?我去掉这一行代码后,长度限制没有了,测试下来似乎也是正常的。就算是要增加这个检查,否是应该修改为:
if (count >= (int)kcp->snd_wnd) return -2;
6pp0gazn1#
因为 const IUINT32 IKCP_WND_RCV = 128; //must >= max fragment size而老代码貌似是 count 必须小于 max fragment size有的版本直接是必须小于255 因为KCP使用1个byte 做分片ID。即:如果大于最大分片能力,那么KCP无法发送这么大的包。
1条答案
按热度按时间6pp0gazn1#
因为 const IUINT32 IKCP_WND_RCV = 128; //must >= max fragment size
而老代码貌似是 count 必须小于 max fragment size
有的版本直接是必须小于255 因为KCP使用1个byte 做分片ID。
即:如果大于最大分片能力,那么KCP无法发送这么大的包。