Home

Awesome

KCP C#版

开箱即用。也可以使用 Nuget 搜索。

Nuget

Feature:

链接:

c: skywind3000 KCP
go: xtaci kcp-go

说明:

线程安全

简单的说:
不能在线程1调用Recv/Update时,线程2也在调用Recv/Update。函数内部使用大量共享数据结构,如果加锁严重影响性能。
可以在线程1调用Send/Input时,线程2也在调用Send/Input。函数内部有锁。

测试:

在UnitTestProject1路径下执行 dotnet test 可进行多框架测试。(需要安装dotnetcoreSDK)

相对C版的一些变化:

差异变化C版C#版
数据结构
acklist数组ConcurrentQueue
snd_queue双向链表ConcurrentQueue
snd_buf双向链表LinkedList
rcv_buf双向链表LinkedList
rcv_queue双向链表List
------------------------------------------
回调函数增加了RentBuffer回调,当KCP需要时可以从外部申请内存。
多线程增加了线程安全。
流模式由于数据结构变动,流模式不会填充当前未发送的最末的数据包。
interval最小间隔10ms0ms(在特殊形况下允许CPU满负荷运转)
------------------------------------------
API变动
增加大小端编码设置。默认小端编码。
增加TryRecv函数,当可以Recv时只peeksize一次。
ikcp_ack_push删除了此函数(已内联)
ikcp_ack_get删除了此函数(已内联)