请配合源码食用——。——“”。
1,使用
- ikcp_create(IUINT32 conv, void *user);通过使用这个函数创建tcp链接,参数conv用来确认两端通信,即发送端和接收端的conv要一致;参数user则是上层用来区分这个链接属于谁。
- ikcp_update(ikcpcb *kcp, IUINT32 current);上层负责通过轮询的方式定期调用(官方文档说每10ms-100ms调用1次),用来进行把缓冲区数据发送出去,或者进行重传,应答对方请求等,真正发送数据函数,参数current为当前时间戳,单位ms。
- int ikcp_send(ikcpcb *kcp, const char *buffer, int len);上层把要发送的数据通过这个接口上报到缓冲区。
- ikcp_input(ikcpcb *kcp, const char *data, long size);当上层收到数据后通个这个接口把数据输入给kcp,以便给kcp解析和对发送缓冲区进行处理,因为从recvfrom收到消息后,这个消息并不是纯粹的消息,里面有kcp头协议,有可能是对端发来的ack或者询问信息的等。
- ikcp_recv(ikcpcb *kcp, char *buffer, int len);上层通过这个接口把消息取出来,这个时候取到的消息就是纯粹的发送端发送的消息。
- ikcp_release(ikcpcb *kcp);销毁kcp链接
- int (*output)(const char *buf, int len, struct IKCPCB *kcp, void *user);这个是函数指针,指向真正发送函数如sendto的地方,需要自己赋值。</