本文为自己的理解,不代表完全正确,如有错误还请批评。
KCP的一些概念性东西这里就不介绍了,感兴趣的同学可以自行谷歌,本文主要分析KCP的源码。
Command
Segment
KCP包头结构
Property
消息发送时: buffer -> snd_queue -> snd_buf
消息接收时:rcv_buf -> rcv_queue -> buffer
所以这里的两个queue只是一个Temp Container,作为变换的中间站。
这里的output就是KCP发送消息时的回调。
Constructor
这个就是UDP的构造
一些重要的函数
KCP函数的调用顺序:Input()-->Recv()-->Update()-->Flush()
Input()
该函数主要功能是处理接收到的数据
首先先解析数据,得到segment的sn,una等数据包头信息。
之后根据una清除掉snd_buf中已经确认接收到的segment(una即表示该seg之前数据包均已收到)