Merge branch 'skywind3000:master' into master

This commit is contained in:
wxlonstar 2022-05-02 22:52:18 +08:00 committed by GitHub
commit ff8eb12d13
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 17 additions and 11 deletions

View File

@ -4,8 +4,8 @@ KCP - A Fast and Reliable ARQ Protocol
[![Powered][2]][1] [![Build Status][4]][5]
[1]: https://github.com/skywind3000/kcp
[2]: http://skywind3000.github.io/word/images/kcp.svg
[3]: https://raw.githubusercontent.com/skywind3000/kcp/master/kcp.svg
[2]: https://github.com/skywind3000/kcp/raw/master/kcp.svg
[2]: https://github.com/skywind3000/kcp/raw/master/kcp.svg
[4]: https://api.travis-ci.org/skywind3000/kcp.svg?branch=master
[5]: https://travis-ci.org/skywind3000/kcp
@ -157,14 +157,17 @@ Both the use and configuration of the protocol is very simple, in most cases, af
- [v2ray](https://www.v2ray.com)Well-known proxy software, Shadowsocks replacement, integrated with kcp protocol after 1.17, using UDP transmission, no data packet features.
- [HP-Socket](https://github.com/ldcsaa/HP-Socket): High Performance TCP/UDP/HTTP Communication Component.
- [frp](https://github.com/fatedier/frp): A fast reverse proxy to help you expose a local server behind a NAT or firewall to the internet.
- [asio-kcp](https://github.com/libinzhangyuan/asio_kcp): Use the complete UDP network library of KCP, complete implementation of UDP-based link state management, session control and KCP protocol scheduling, etc.
- [asio-kcp](https://github.com/libinzhangyuan/asio_kcp): Use the complete UDP network library of KCP, complete implementation of UDP-based link state management, session control and KCP protocol scheduling, etc.
- [kcp-cpp](https://github.com/Unit-X/kcp-cpp): Multi-platform (Windows, MacOS, Linux) C++ implementation of KCP as a simple library in your application. Contains socket handling and helper functions for all platforms.
- [kcp-java](https://github.com/hkspirt/kcp-java)Implementation of Java version of KCP protocol.
- [kcp-netty](https://github.com/szhnet/kcp-netty)Java implementation of KCP based on Netty.
- [java-kcp](https://github.com/l42111996/java-Kcp): JAVA version KCP, based on netty implementation (including fec function)
- [csharp-kcp](https://github.com/l42111996/csharp-kcp): csharp version KCP, based on dotNetty implementation (including fec function)
- [kcp-go](https://github.com/xtaci/kcp-go): High-security GO language implementation of kcp, including simple implementation of UDP session management, as a base library for subsequent development.
- [kcp-csharp](https://github.com/limpo1989/kcp-csharp): The csharp migration of kcp, containing the session management, which can access the above kcp-go server.
- [kcp2k](https://github.com/vis2k/kcp2k/): Line-by-line translation to C#, with optional Server/Client on top.
- [kcp-rs](https://github.com/en/kcp-rs): The rust migration of KCP
- [kcp-rust-native](https://github.com/b23r0/kcp-rust-native)KCP bindings for Rust
- [lua-kcp](https://github.com/linxiaolong/lua-kcp): Lua extension of KCP, applicable for Lua server
- [node-kcp](https://github.com/leenjewel/node-kcp): KCP interface for node-js
- [nysocks](https://github.com/oyyd/nysocks): Nysocks provides proxy services base on libuv and kcp for nodejs users. Both SOCKS5 and ss protocols are supported in the client.
@ -194,7 +197,7 @@ For specifics please refer to: [Reliable Udp Benchmark](https://github.com/libin
MMO Engine [SpatialOS](https://improbable.io/spatialOS) has a benchmark report on KCP/TCP/RakNet:
![](https://raw.githubusercontent.com/skywind3000/kcp/master/images/spatialos-50.png)
![](images/spatialos-50.png)
for more details, please see the report itself:

View File

@ -1,13 +1,13 @@
KCP - A Fast and Reliable ARQ Protocol
======================================
[![Powered][2]][1] [![Build Status][4]][5]
[![Powered][3]][1] [![Build Status][4]][5]
[![Backers on Open Collective](https://opencollective.com/kcp/backers/badge.svg)](#backers)
[![Sponsors on Open Collective](https://opencollective.com/kcp/sponsors/badge.svg)](#sponsors)
[1]: https://github.com/skywind3000/kcp
[2]: http://skywind3000.github.io/word/images/kcp.svg
[3]: https://raw.githubusercontent.com/skywind3000/kcp/master/kcp.svg
[2]: https://github.com/skywind3000/kcp/raw/master/kcp.svg
[3]: https://github.com/skywind3000/kcp/raw/master/kcp.svg
[4]: https://api.travis-ci.org/skywind3000/kcp.svg?branch=master
[5]: https://travis-ci.org/skywind3000/kcp
@ -15,7 +15,7 @@ KCP - A Fast and Reliable ARQ Protocol
# 简介
KCP是一个快速可靠协议能以比 TCP浪费10%-20%的带宽的代价,换取平均延迟降低 30%-40%且最大延迟降低三倍的传输效果。纯算法实现并不负责底层协议如UDP的收发需要使用者自己定义下层数据包的发送方式以 callback的方式提供给 KCP。 连时钟都需要外部传递进来,内部不会有任何一次系统调用。
KCP是一个快速可靠协议能以比 TCP 浪费 10%-20% 的带宽的代价,换取平均延迟降低 30%-40%且最大延迟降低三倍的传输效果。纯算法实现并不负责底层协议如UDP的收发需要使用者自己定义下层数据包的发送方式以 callback的方式提供给 KCP。 连时钟都需要外部传递进来,内部不会有任何一次系统调用。
整个协议只有 ikcp.h, ikcp.c两个源文件可以方便的集成到用户自己的协议栈中。也许你实现了一个P2P或者某个基于 UDP的协议而缺乏一套完善的ARQ可靠协议实现那么简单的拷贝这两个文件到现有项目中稍微编写两行代码即可使用。
@ -160,13 +160,16 @@ vcpkg中的kcp库由Microsoft团队成员和社区贡献者保持最新状态。
- [kcp-java](https://github.com/hkspirt/kcp-java): Java版本 KCP协议实现。
- [kcp-netty](https://github.com/szhnet/kcp-netty): kcp的Java语言实现基于netty。
- [java-kcp](https://github.com/l42111996/java-Kcp): JAVA版本KCP,基于netty实现(包含fec功能)
- [csharp-kcp](https://github.com/l42111996/csharp-kcp): csharp版本KCP,基于dotNetty实现(包含fec功能)
- [csharp-kcp](https://github.com/l42111996/csharp-kcp): csharp版本KCP,基于dotNetty实现(包含fec功能)
- [kcp-cpp](https://github.com/Unit-X/kcp-cpp): KCP 的多平台Windows、MacOS、LinuxC++ 实现作为应用程序中的简单库。包含适用于所有平台的套接字处理和辅助函数。
- [kcp-go](https://github.com/xtaci/kcp-go): 高安全性的kcp的 GO语言实现包含 UDP会话管理的简单实现可以作为后续开发的基础库。
- [kcp-csharp](https://github.com/limpo1989/kcp-csharp): kcp的 csharp移植同时包含一份回话管理可以连接上面kcp-go的服务端。
- [kcp-csharp](https://github.com/KumoKyaku/KCP): 新版本 Kcp的 csharp移植。线程安全运行时无alloc对gc无压力。
- [kcp2k](https://github.com/vis2k/kcp2k/): Line-by-line translation to C#, with optional Server/Client on top.
- [kcp-rs](https://github.com/en/kcp-rs): KCP的 rust移植
- [kcp-rust](https://github.com/Matrix-Zhang/kcp):新版本 KCP的 rust 移植
- [tokio-kcp](https://github.com/Matrix-Zhang/tokio_kcp)rust tokio 的 kcp 集成
- [kcp-rust-native](https://github.com/b23r0/kcp-rust-native)rust 的 kcp bindings
- [lua-kcp](https://github.com/linxiaolong/lua-kcp): KCP的 Lua扩展用于 Lua服务器
- [node-kcp](https://github.com/leenjewel/node-kcp): node-js 的 KCP 接口
- [nysocks](https://github.com/oyyd/nysocks): 基于libuv实现的[node-addon](https://nodejs.org/api/addons.html)提供nodejs版本的代理服务客户端接入支持SOCKS5和ss两种协议
@ -210,7 +213,7 @@ vcpkg中的kcp库由Microsoft团队成员和社区贡献者保持最新状态。
大型多人游戏服务端引擎 [SpatialOS](https://improbable.io/spatialOS) 在集成 KCP 协议后做了同 TCP/RakNet 的评测:
![](https://raw.githubusercontent.com/skywind3000/kcp/master/images/spatialos-50.png)
![](https://github.com/skywind3000/kcp/raw/master/images/spatialos-50.png)
对比了在服务端刷新率为 60 Hz 同时维护 50 个角色时的响应时间,详细对比报告见:

2
test.h
View File

@ -88,7 +88,7 @@ class DelayPacket
{
public:
virtual ~DelayPacket() {
if (_ptr) delete _ptr;
if (_ptr) delete[] _ptr;
_ptr = NULL;
}