Merge remote-tracking branch 'remotes/origin/master'

This commit is contained in:
skywind3000 2020-03-26 19:29:51 +08:00
commit 700e2a8161
3 changed files with 16 additions and 9 deletions

View File

@ -213,15 +213,6 @@ vcpkg中的kcp库由Microsoft团队成员和社区贡献者保持最新状态。
- [Kcp a new low latency secure network stack](https://improbable.io/blog/kcp-a-new-low-latency-secure-network-stack) - [Kcp a new low latency secure network stack](https://improbable.io/blog/kcp-a-new-low-latency-secure-network-stack)
# 关于作者
我叫林伟笔名韦易笑写程序很多年喜欢研究解决程序中的一些瓶颈问题早年喜欢游戏开发照着《VGA编程》来做游戏图形读 Michael Abrash 的《图形程序开发人员指南》做软渲染器,喜欢摆弄一些能够榨干 CPU 能够运行更快的代码,参加工作后,兴趣转移到服务端和网络相关的技术。
2007 年时做了几个传统游戏后开始研究快速动作游戏的同步问题,期间写过不少文章,算是国内比较早研究同步问题的人,然而发现不管怎么解决同步都需要在网络传输方面有所突破,后来离开游戏转行互联网后也发现不少领域有这方面的需求,于是开始花时间在网络传输这个领域上,尝试基于 UDP 实现一些保守的可靠协议,反照 BSD Lite 4.4 的代码实现一些类 TCP 协议,觉得比较有意思,又接着实现一些 P2P 和动态路由网相关的玩具。KCP 协议诞生于 2011 年,基本算是自己传输方面做的几个玩具中的一个。
Kcptun 的作者 xtaci 是我的大学同学,我俩都是学通信的,经常在一起研究如何进行传输优化。
喜欢本项目欢迎关注我的:[twitter](https://twitter.com/skywind3000) 和 [zhihu](https://www.zhihu.com/people/skywind3000)。
# 关于协议 # 关于协议
@ -234,6 +225,18 @@ Kcptun 的作者 xtaci 是我的大学同学,我俩都是学通信的,经常
For more information, please see the [Success Stories](https://github.com/skywind3000/kcp/wiki/Success-Stories). For more information, please see the [Success Stories](https://github.com/skywind3000/kcp/wiki/Success-Stories).
# 关于作者
作者:林伟 (skywind3000)
欢迎关注我的:[twitter](https://twitter.com/skywind3000) 和 [zhihu](https://www.zhihu.com/people/skywind3000)。
我在多年的开发经历中一直都喜欢研究解决程序中的一些瓶颈问题早年喜欢游戏开发照着《VGA编程》来做游戏图形读 Michael Abrash 的《图形程序开发人员指南》做软渲染器,爱好摆弄一些能够榨干 CPU 能够运行更快的代码,参加工作后,兴趣转移到服务端和网络相关的技术。
2007 年时做了几个传统游戏后开始研究快速动作游戏的同步问题,期间写过不少文章,算是国内比较早研究同步问题的人,然而发现不管怎么解决同步都需要在网络传输方面有所突破,后来离开游戏转行互联网后也发现不少领域有这方面的需求,于是开始花时间在网络传输这个领域上,尝试基于 UDP 实现一些保守的可靠协议,反照 BSD Lite 4.4 的代码实现一些类 TCP 协议,觉得比较有意思,又接着实现一些 P2P 和动态路由网相关的玩具。KCP 协议诞生于 2011 年,基本算是自己传输方面做的几个玩具中的一个。
Kcptun 的作者 xtaci 是我的大学同学,我俩都是学通信的,经常在一起研究如何进行传输优化。
# 欢迎捐赠 # 欢迎捐赠
![欢迎使用支付宝对该项目进行捐赠](images/donation.png) ![欢迎使用支付宝对该项目进行捐赠](images/donation.png)

BIN
benchmark.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 165 KiB

4
ikcp.c
View File

@ -882,7 +882,11 @@ int ikcp_input(ikcpcb *kcp, const char *data, long size)
if (kcp->incr < mss) kcp->incr = mss; if (kcp->incr < mss) kcp->incr = mss;
kcp->incr += (mss * mss) / kcp->incr + (mss / 16); kcp->incr += (mss * mss) / kcp->incr + (mss / 16);
if ((kcp->cwnd + 1) * mss <= kcp->incr) { if ((kcp->cwnd + 1) * mss <= kcp->incr) {
#if 1
kcp->cwnd = (kcp->incr + mss - 1) / ((mss > 0)? mss : 1);
#else
kcp->cwnd++; kcp->cwnd++;
#endif
} }
} }
if (kcp->cwnd > kcp->rmt_wnd) { if (kcp->cwnd > kcp->rmt_wnd) {