每一个 KCP 用户都需要调用ikcp_create创建一个 kcp 控制块ikcpcb。ikcpcb结构用来实现整个 KCP 协议。 struct IKCPCB { IUINT32 conv; // 标识会话 IUINT32 mtu; // 最大传输单元,默认数据为1400,最小为50 IUINT32 mss; // 最大分片大小,不大于mtu IUINT32 state; // 连接状态(0xffffffff表示断开...
// 初始化 kcp 对象,conv 为一个表示会话编号的整数。// 和 tcp 的 conv 一样,通信双方需保证 conv 相同,相互的数据包才能够被认可,user 是一个给回调函数的指针。ikcpcb*kcp=ikcp_create(conv,user) 2)读取一个下层协议的数据包: 代码语言:javascript ...
ikcpcb *kcp = ikcp_create(conv, user) 2)读取一个下层协议的数据包: // 收到一个下层协议的数据包(比如 UDP 包)时需要调用: ikcp_input(kcp, received_udp_packet, received_udp_size); 3)将 KCP 数据还原成发送端发送的 buffer 数据给应用层: int ikcp_recv(ikcpcb *kcp, char *buffer, int ...
struct IKCPSEG{struct IQUEUEHEAD node; // 用来串接多个 KCP segment,即前向后向指针IUINT32 conv; // 会话编号IUINT32 cmd; // 报文类型IUINT32 frg; // 分片IUINT32 wnd; // 可用接收窗口大小(接收窗口大小-接收队列大小)IUINT32 ts; // 发送时刻的时间戳IUINT32 sn; // 分片 segment 的序号...
核心的几个函数是ikcp_create、ikcp_update、ikcp_flush、ikcp_input、ikcp_recv、ikcp_send,其中ikcp_create只是创建kcp对象,比较简单,ikcp_update是需要定期调用的,根据外部传入的时钟current决定是否调用ikcp_flush。 ikcp_flush主要是调用ikcp_output来发送一些数据,这个ikcp_output其实是调用的kcp对象的output...
通过ikcp_recv中读取recv_queue中的数据,应用层真正接收到数据kcp使用方式创建KCP 对象: ikcpcb *kcp = ikcp_create(conv, user); 通过会话id(conv id)建立连接,客户端与服务端协商好 设置发送回调函数(如 UDP 的 send 函数): kcp->output = udp_output; 真正发送数据需要调用sendto 循环调用update ...
// 初始化 kcp对象,conv为一个表示会话编号的整数,和tcp的 conv一样,通信双 // 方需保证 conv相同,相互的数据包才能够被认可,user是一个给回调函数的指针 ikcpcb *kcp = ikcp_create(conv, user); 设置传输回调函数(如UDP的send函数): // KCP的下层协议输出函数,KCP需要发送数据时会调用它 // buf/len...
ikcpcb *kcp = ikcp_create(conv, user); 设置传输回调函数(如UDP的send函数): // KCP的下层协议输出函数,KCP需要发送数据时会调用它 // buf/len 表示缓存和长度 // user指针为 kcp对象创建时传入的值,用于区别多个 KCP对象 int udp_output(const char *buf, int len, ikcpcb *kcp, void *user) ...
ikcpcb *kcp = ikcp_create(conv, user); 2. 设置传输回调函数(如UDP的send函数): // KCP的下层协议输出函数,KCP需要发送数据时会调用它 // buf/len 表示缓存和长度 // user指针为 kcp对象创建时传入的值,用于区别多个 KCP对象 int udp_output(const char *buf, int len, ikcpcb *kcp, void *user...
// 初始化 kcp 对象,conv 为一个表示会话编号的整数。// 和 tcp 的 conv 一样,通信双方需保证 conv 相同,相互的数据包才能够被认可,user 是一个给回调函数的指针。ikcpcb *kcp = ikcp_create(conv, user); 2)设置回调函数: // KCP 下层协议的输出函数,KCP 需要发送数据时会调用它。// buf/len 表示...