All Projects → l42111996 → Java Kcp

l42111996 / Java Kcp

Licence: apache-2.0
基于java的netty实现的可靠udp网络库(kcp算法),包含fec实现,可用于游戏,视频,加速等业务

Programming Languages

java
68154 projects - #9 most used programming language

Projects that are alternatives of or similar to Java Kcp

Kcp Netty
Java implementation of KCP based on Netty
Stars: ✭ 184 (+34.31%)
Mutual labels:  udp, kcp, netty
twjitm-core
采用Netty信息加载实现长连接实时通讯系统,客户端可以值任何场景,支持实时http通讯、webSocket通讯、tcp协议通讯、和udp协议通讯、广播协议等 通过http协议,rpc协议。 采用自定义网络数据包结构, 实现自定义网络栈。
Stars: ✭ 98 (-28.47%)
Mutual labels:  netty, udp
kcp-conn
No description or website provided.
Stars: ✭ 24 (-82.48%)
Mutual labels:  udp, kcp
Winkcp launcher
Windows udp2raw+kcptun 加速tcp流量 简易工具 by 蘭雅sRGB
Stars: ✭ 136 (-0.73%)
Mutual labels:  udp, kcp
Mirror
#1 Open Source Unity Networking Library
Stars: ✭ 2,905 (+2020.44%)
Mutual labels:  udp, kcp
fuso
一款体积小, 快速, 稳定, 高效, 轻量的内网穿透, 端口转发工具 支持多连接,级联代理,传输加密 (A small volume, fast, stable, efficient, and lightweight intranet penetration, port forwarding tool supports multiple connections, cascading proxy, and transmission encryption)
Stars: ✭ 1,132 (+726.28%)
Mutual labels:  udp, kcp
kcp-dotnet
KCP dotNet Core implementation
Stars: ✭ 26 (-81.02%)
Mutual labels:  udp, kcp
netty-raknet
A reliable and high performance RakNet library designed with strict Netty patterns.
Stars: ✭ 24 (-82.48%)
Mutual labels:  netty, udp
Kcp Go
A Crypto-Secure, Production-Grade Reliable-UDP Library for golang with FEC
Stars: ✭ 3,177 (+2218.98%)
Mutual labels:  udp, kcp
Mobileimsdk
一个原创移动端IM通信层框架,轻量级、高度提炼,历经8年、久经考验。可能是市面上唯一同时支持UDP+TCP+WebSocket三种协议的同类开源框架,支持iOS、Android、Java、H5,服务端基于Netty。
Stars: ✭ 3,864 (+2720.44%)
Mutual labels:  udp, netty
Yasio
A multi-platform support c++11 library with focus on asio (asynchronous socket I/O) for any client application.
Stars: ✭ 483 (+252.55%)
Mutual labels:  udp, kcp
Kcp
⚡ KCP - A Fast and Reliable ARQ Protocol
Stars: ✭ 10,473 (+7544.53%)
Mutual labels:  udp, kcp
Kcptun
A Stable & Secure Tunnel based on KCP with N:M multiplexing and FEC. Available for ARM, MIPS, 386 and AMD64。KCPプロトコルに基づく安全なトンネル。KCP 프로토콜을 기반으로 하는 보안 터널입니다。
Stars: ✭ 12,714 (+9180.29%)
Mutual labels:  udp, kcp
kcp erlang
A Reliable-UDP Library for erlang
Stars: ✭ 24 (-82.48%)
Mutual labels:  udp, kcp
Jkcp
kcp for java . 适用于moba,视频加速等需要极速传输场景的应用,c#版本(客户端)请参考:https://github.com/beykery/kcp4sharp
Stars: ✭ 160 (+16.79%)
Mutual labels:  udp, kcp
gost
GO Simple Tunnel - a simple tunnel written in golang
Stars: ✭ 8,395 (+6027.74%)
Mutual labels:  udp, kcp
T Io
解决其它网络框架没有解决的用户痛点,让天下没有难开发的网络程序
Stars: ✭ 1,331 (+871.53%)
Mutual labels:  udp, netty
Reactor Netty
TCP/HTTP/UDP/QUIC client/server with Reactor over Netty
Stars: ✭ 1,743 (+1172.26%)
Mutual labels:  udp, netty
Go Netstat
A netstat implementation written in Go
Stars: ✭ 121 (-11.68%)
Mutual labels:  udp
Cleanstone
Springboot based Minecraft Server
Stars: ✭ 133 (-2.92%)
Mutual labels:  netty

java-Kcp

Powered

README in english

基于netty版本实现的kcp(包含fec功能的实现)

KCP是一个基于udp的快速可靠协议(rudp),能以比 TCP浪费10%-20%的带宽的代价,换取平均延迟降低 30%-40%,且最大延迟降低三倍的传输效果。

maven地址:

<dependency>
  <groupId>com.github.l42111996</groupId>
  <artifactId>kcp-base</artifactId>
  <version>1.5</version>
</dependency>

兼容性:

  1. 兼容c版本kcp
  2. fec基于 https://github.com/Backblaze/JavaReedSolomon 实现
  3. 完美兼容的C#版本,https://github.com/l42111996/csharp-kcp ,快速构建游戏前后端网络库

优化:

  1. 基于事件驱动,充分利用多核
  2. 优化fastack逻辑,降低10%流量
  3. 优化check函数。
  4. 优化集合迭代器。
  5. 包含fec,降低延迟
  6. 附带crc32校验
  7. 使用时间轮,优化大量连接cpu占用
  8. 使用directbuf和对象池,无gc压力
  9. 增加使用conv或者ip+port确定channel唯一性,游戏建议使用conv与tcp配置使用,相关资料
  10. 增加游戏使用时4G切换wifi等出口ip变动不会导致连接断开

使用方法以及参数

  1. server端示例
  2. client端实例
  3. 最佳实践
  4. 大量资料
  5. 兼容c#端,java服务端 , c#客户端
  6. 遇到过的问题
  7. 性能测试结果
  8. 兼容kcp-go,包含fec兼容

已完成测试

  1. 单连接死循环收发包内存检测,性能测试
    配置:mbp 2.3 GHz Intel Core i9 16GRam 单连接 带fec 5W/s qps 单连接 不带fec 9W/s qps
  2. java服务端与c#客户端兼容测试
  3. 3000连接保持使用单核30%cpu
  4. fec结合directbuffer检测对应cpu最佳性能方案
  5. 大量客户端持续的连接,断开,发送消息,内存泄漏排查

TODO

  1. 高并发吞吐量下,rtt稳定性测试
  2. 大量连接同时断开时因为可能大量消息重发导致cpu和带宽暴涨,需要将interval时间增长,稳定后恢复

相关资料

  1. https://github.com/skywind3000/kcp 原版c版本的kcp
  2. https://github.com/xtaci/kcp-go go版本kcp,有大量优化
  3. https://github.com/Backblaze/JavaReedSolomon java版本fec
  4. https://github.com/LMAX-Exchange/disruptor 高性能的线程间消息传递库
  5. https://github.com/JCTools/JCTools 高性能并发库
  6. https://github.com/szhnet/kcp-netty java版本的一个kcp
  7. https://github.com/l42111996/csharp-kcp 基于dotNetty的c#版本kcp,完美兼容

交流

QQ:526167774

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].