KCP协议 1.3发布,进一步提升性能和稳定性,能够在网络高峰期丢包时保持比 libenet 快三倍的数据传送速率:
KCP has good performace in wifi and phone network(3G, 4G).
Extra using 20% ~ 50% network flow for speed improvement.
The kcp is the first choice for realtime pvp game.
The lag is less than 1 second when network lag happen. 3 times better than enet when lag happen.
The enet is a good choice if your game allow 2 second lag.
UDT is a bad idea. It always sink into badly situation of more than serval seconds lag. And the recovery is not expected.
enet has the problem of lack of doc. And it has lots of functions that you may intrest.
kcp's doc is chinese. Good thing is the function detail which is writen in code is english. And you can use asio_kcp which is a good wrap.
The kcp is a simple thing. You will write more code if you want more feature.
UDT has a perfect doc. UDT may has more bug than others as I feeling.
KCP 是一个快速可靠协议,能以比 TCP浪费10%-20%的带宽的代价,换取平均延迟降低 30%-40%,且最大延迟降低三倍的传输效果。纯算法实现,并不负责底层协议(如UDP) 的收发,需要使用者自己定义下层数据包的发送方式,以 callback的方式提供给 KCP。 连时钟都需要外部传递进来,内部不会有任何一次系统调用。
整个协议只有 ikcp.h, ikcp.c两个源文件,可以方便的集成到用户自己的协议栈中。 也许你实现了一个P2P,或者某个基于 UDP的协议,而缺乏一套完善的ARQ可靠协议实现, 那么简单的拷贝这两个文件到现有项目中,稍微编写两行代码,即可使用。
引用来自“乌龟壳”的评论
感觉ikcp_update这个设计有点奇怪,为什么要用定时器循环调用?可以让系统用epoll监听所有socket,有epoll返回再调用ikcp_update就好了,CPU不会空转。引用来自“韦易笑”的评论
ikcp_check就是干这个事情的方便你计划调用,配合epoll或者实现一套类epoll机制引用来自“乌龟壳”的评论
可能需要实际代码案例才能知道ikcp_check怎么用吧,我只是从一个侧面说:不理解为啥要一定要用某种定时器调用ikcp_update引用来自“乌龟壳”的评论
感觉ikcp_update这个设计有点奇怪,为什么要用定时器循环调用?可以让系统用epoll监听所有socket,有epoll返回再调用ikcp_update就好了,CPU不会空转。引用来自“韦易笑”的评论
ikcp_check就是干这个事情的方便你计划调用,配合epoll或者实现一套类epoll机制引用来自“乌龟壳”的评论
感觉ikcp_update这个设计有点奇怪,为什么要用定时器循环调用?可以让系统用epoll监听所有socket,有epoll返回再调用ikcp_update就好了,CPU不会空转。引用来自“excepiton”的评论
带宽贵啊引用来自“张寒枫”的评论
可以用在物联网通信上,数据包能比TCP更小就完美了