mirror of
https://github.com/skywind3000/kcp.git
synced 2025-03-14 09:00:06 +08:00
update documents
This commit is contained in:
parent
d757d5ab4c
commit
23a8bda708
46
README.md
46
README.md
@ -112,61 +112,51 @@ TCP是为流量设计的(每秒内可以传输多少KB的数据),讲究的
|
||||
kcp->rx_minrto = 10;
|
||||
```
|
||||
|
||||
# 更多内容
|
||||
|
||||
# 文档索引
|
||||
|
||||
协议的使用和配置都是很简单的,大部分情况看完上面的内容基本可以使用了。如果你需要进一步进行精细的控制,比如改变 KCP的内存分配器,或者你需要更有效的大规模调度 KCP链接(比如 3500个以上),或者如何更好的同 TCP结合,那么可以继续延伸阅读:
|
||||
|
||||
- [Wiki Home](https://github.com/skywind3000/kcp/wiki)
|
||||
- [KCP 最佳实践](https://github.com/skywind3000/kcp/wiki/KCP-Best-Practice)
|
||||
- [同现有TCP服务器集成](https://github.com/skywind3000/kcp/wiki/Cooperate-With-Tcp-Server)
|
||||
- [传输数据加密](https://github.com/skywind3000/kcp/wiki/Network-Encryption)
|
||||
- [应用层流量控制](https://github.com/skywind3000/kcp/wiki/Flow-Control-for-Users)
|
||||
- [Wiki Home](https://github.com/skywind3000/kcp/wiki)
|
||||
- [KCP 最佳实践](https://github.com/skywind3000/kcp/wiki/KCP-Best-Practice)
|
||||
- [同现有TCP服务器集成](https://github.com/skywind3000/kcp/wiki/Cooperate-With-Tcp-Server)
|
||||
- [传输数据加密](https://github.com/skywind3000/kcp/wiki/Network-Encryption)
|
||||
- [应用层流量控制](https://github.com/skywind3000/kcp/wiki/Flow-Control-for-Users)
|
||||
- [性能评测](https://github.com/skywind3000/kcp/wiki/KCP-Benchmark)
|
||||
|
||||
|
||||
# 相关应用
|
||||
|
||||
|
||||
- [dog-tunnel](https://github.com/vzex/dog-tunnel): GO开发的网络隧道,使用 KCP极大的改进了传输速度,并移植了一份 GO版本 KCP
|
||||
- [lua-kcp](https://github.com/linxiaolong/lua-kcp):KCP的 Lua扩展,用于 Lua服务器
|
||||
- [lua-kcp](https://github.com/linxiaolong/lua-kcp):KCP的 Lua扩展,用于 Lua服务器
|
||||
- [asio-kcp](https://github.com/libinzhangyuan/asio_kcp): 使用 KCP的完整 UDP网络库,完整实现了基于 UDP的链接状态管理,会话控制,KCP协议调度等
|
||||
|
||||
# 性能比较
|
||||
# 协议比较
|
||||
|
||||
如果不丢包那么 KCP和 TCP性能差不多,KCP不会有任何优势,但是网络会卡,造成卡的原因就是丢包和抖动,有同学在内网这样好的环境下没有用任何丢包模拟直接跑,跑出来的数据是差不多的,但是放到公网上,放到3G/4G网络情况下,差距就很明显了,公网在高峰期有平均接近10%的丢包,wifi/3g/4g下更糟糕,这正是造成各种网络卡顿的元凶。
|
||||
|
||||
感谢 [asio-kcp](https://github.com/libinzhangyuan/asio_kcp) 的作者 [zhangyuan](https://github.com/libinzhangyuan) 对 KCP 与 enet, udt做过的一次横向评测,结论如下:
|
||||
|
||||
- ASIO-KCP has good performace in wifi and phone network(3G, 4G).
|
||||
- ASIO-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 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.
|
||||
- **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.
|
||||
- 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.
|
||||
|
||||
具体见:[横向比较](https://github.com/libinzhangyuan/reliable_udp_bench_mark/blob/master/bench_mark.md) 和 [这里](https://github.com/skywind3000/kcp/wiki/KCP-Benchmark)。截取一段在网络糟糕时,asio-kcp/enet的延迟数据:
|
||||
具体见:[横向比较](https://github.com/libinzhangyuan/reliable_udp_bench_mark) 和 [评测数据](https://github.com/skywind3000/kcp/wiki/KCP-Benchmark),为犹豫选择的人提供了更多指引。
|
||||
|
||||
```cpp
|
||||
worst network lag happen:
|
||||
asio: 10:51.21
|
||||
291 295 269 268 231 195 249 230 225 204
|
||||
|
||||
enet: 10:51.21
|
||||
1563 1520 1470 1482 1438 1454 1412 1637 1588 1540
|
||||
```
|
||||
|
||||
我当年主要测试了 KCP和 TCP/UDT的比较,扫了一眼 libenet觉得协议实现中规中矩,缺乏很多现代传输协议的技术,所以并没有详细测试。而 asio-kcp的作者同时给出了KCP/enet/udt三者的详细比较,为更多犹豫选择使用那一套的人提供了更多指引。
|
||||
|
||||
|
||||
# 欢迎捐赠
|
||||
|
||||

|
||||
|
||||
欢迎使用支付宝手扫描上面的二维码,对该项目进行捐赠。捐赠款项将用于改进 KCP性能以及
|
||||
后续持续优化。
|
||||
欢迎使用支付宝手扫描上面的二维码,对该项目进行捐赠。捐赠款项将用于持续优化 KCP协议以及完善文档。
|
||||
|
||||
|
||||
欢迎关注
|
||||
|
Loading…
Reference in New Issue
Block a user