这段代码的作用是将接收到的数据 s 添加到 mNetRecvStream 中,并解析其中的完整包。具体流程如下:
1. 首先,通过 while 循环判断 mNetRecvStream 中剩余的字节数是否足够存放 s。如果不足,则扩容 mNetRecvStream,直到能够存放 s。
2. 将 s 复制到 mNetRecvStream 的末尾,并更新 mNetRecvIdx。
3. 通过 while 循环,从 mNetRecvStream 中解析出完整的包。具体做法是:先读取两个字节,得到包体长度 Len;然后判断 mNetRecvStream 中剩余的字节数是否足够读取一个完整的包(即长度为 Len 的字节数组);如果不足,则退出循环等待下一次接收;否则,将长度为 Len 的字节数组复制到 Buff 中,并将其添加到 mData 列表中。
需要注意的是,这里使用了 NetBitConverter.EndianBitConverter.LittleEndian.ToUInt16 方法来读取两个字节并转换为 ushort 类型的数据 Len。如果你的情况不同,请自行调整代码。