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