# KCP C#版。
开箱即用。也可以使用Nuget 搜索KCP。
## Feature:
- 异步API标准接口 IKcpIO.cs
- ValueTask Recv(IBufferWriter<byte> writer, object option = null);
- ValueTask Output(IBufferWriter<byte> writer, object option = null);
- 附带一个基本实现。KcpIO.cs
- kcpSegment泛型化,可由用户自定义高性能实现。
- `KcpCore<Segment>` where Segment : IKcpSegment
- `KcpIO<Segment>` : `KcpCore<Segment>`, IKcpIO where Segment : IKcpSegment
- `Kcp<Segment>` : `KcpCore<Segment>` where Segment:IKcpSegment
## 链接:
c: skywind3000 [KCP](https://github.com/skywind3000/kcp)
go: xtaci [kcp-go](https://github.com/xtaci/kcp-go)
## 说明:
- 内部使用了unsafe代码和非托管内存,不会对gc造成压力。
- 支持用户自定义内存管理方式,如果不想使用unsafe模式,可以使用内存池.
- 对于output回调和TryRecv函数。使用RentBuffer回调,从外部分配内存。请参考[IMemoryOwner](https://docs.microsoft.com/en-us/dotnet/standard/memory-and-spans/memory-t-usage-guidelines)用法。
- 支持`Span<byte>`
## 线程安全
简单的说:
不能在线程1调用Recv/Update时,线程2也在调用Recv/Update。函数内部使用大量共享数据结构,如果加锁严重影响性能。
可以在线程1调用Send/Input时,线程2也在调用Send/Input。函数内部有锁。
- 可以在任意多线程同时调用Send 和 Input。
多线程同时发送消息是安全的,可以放心的在异步函数中发送消息。
- 但`不可以`多个线程同时调用Recv 和 Update。
同名方法仅支持一个线程同时调用,否则会导致多线程错误。
## 测试:
[[已修复]~~同一个进程两个Kcp echo测试,至少使用3个线程,否则可能死锁。~~](Image/deadlock.jpg)
在UnitTestProject1路径下执行 dotnet test 可进行多框架测试。(需要安装dotnetcoreSDK)
## 相对C版的一些变化:
| 差异变化 | C版 | C#版 |
| ---------------- | -------------- | ----------------------------------------------------- |
| 数据结构 | | |
| acklist | 数组 | ConcurrentQueue |
| snd_queue | 双向链表 | ConcurrentQueue |
| snd_buf | 双向链表 | LinkedList |
| rcv_buf | 双向链表 | LinkedList |
| rcv_queue | 双向链表 | List |
| -------------- | -------------- | -------------- |
| 回调函数 | | 增加了RentBuffer回调,当KCP需要时可以从外部申请内存。 |
| 多线程 | | 增加了线程安全。 |
| 流模式 | | 由于数据结构变动,移除了流模式。 |
| interval最小间隔 | 10ms | 0ms(在特殊形况下允许CPU满负荷运转) |
| -------------- | -------------- | -------------- |
| API变动 | | |
| | | 增加大小端编码设置。默认小端编码。 |
| | | 增加TryRecv函数,当可以Recv时只peeksize一次。 |
| | ikcp_ack_push | 删除了此函数(已内联) |
| | ikcp_ack_get | 删除了此函数(已内联) |
---
---
# 赞助链接
![支付宝](https://github.com/KumoKyaku/KumoKyaku.github.io/blob/develop/source/_posts/%E5%9B%BE%E5%BA%8A/alipay.png)
没有合适的资源?快使用搜索试试~ 我知道了~
KCP实现,C#开源版
共74个文件
cs:18个
asset:17个
meta:14个
需积分: 5 9 下载量 56 浏览量
2023-04-03
17:20:44
上传
评论
收藏 1.02MB ZIP 举报
温馨提示
KCP实现,C#开源版
资源推荐
资源详情
资源评论
收起资源包目录
KCP-master.zip (74个子文件)
KCP-master
TestClient
Program.cs 1KB
TestClient.csproj 246B
.github
FUNDING.yml 197B
KcpDemo
Program.cs 6KB
KcpDemo.csproj 326B
UnitTestProject1
UnitTest1.cs 15KB
UnitTestProject1.csproj 754B
LICENSE 1KB
TestServer
TestServer.csproj 246B
Program.cs 1KB
ChangeLog.md 3KB
.gitignore 458B
OpenSource.snk 596B
Image
deadlock.jpg 1000KB
Kcp
KcpCore.cs 69KB
FakeKcpIO.cs 2KB
KcpOutputWriter.cs 1KB
KcpSegment.cs 11KB
Utility.cs 3KB
KcpIO.cs 7KB
SegManager.cs 8KB
IKcpInterface.cs 5KB
Kcp.csproj 3KB
KcpTrace.cs 2KB
SimpleKcpClient.cs 2KB
IKcpSegment.cs 3KB
Kcp.cs 10KB
README.md 4KB
UnityIL2CPPTest
ProjectSettings
DynamicsManager.asset 1KB
TimeManager.asset 195B
UnityConnectSettings.asset 853B
Physics2DSettings.asset 1KB
VFXManager.asset 273B
AudioManager.asset 360B
NetworkManager.asset 151B
QualitySettings.asset 5KB
PresetManager.asset 797B
ClusterInputManager.asset 114B
EditorBuildSettings.asset 257B
TagManager.asset 392B
NavMeshAreas.asset 1KB
EditorSettings.asset 622B
GraphicsSettings.asset 2KB
ProjectVersion.txt 28B
InputManager.asset 6KB
ProjectSettings.asset 17KB
Assets
Kcp.dll.mdb.meta 155B
Kcp.xml.meta 158B
kcptest.cs 907B
Program.cs.meta 243B
Scenes
SampleScene.unity 27KB
SampleScene.unity.meta 155B
System.Runtime.CompilerServices.Unsafe.xml 14KB
Kcp.xml 13KB
System.Memory.xml 13KB
System.Buffers.dll.meta 621B
System.Memory.dll.meta 621B
System.Buffers.xml.meta 158B
System.Memory.xml.meta 158B
System.Runtime.CompilerServices.Unsafe.dll.meta 621B
Program.cs 14KB
Kcp.dll 20KB
Scenes.meta 172B
System.Memory.dll 145KB
Kcp.pdb 52KB
System.Runtime.CompilerServices.Unsafe.dll 23KB
Kcp.pdb.meta 155B
Kcp.dll.meta 621B
kcptest.cs.meta 243B
System.Runtime.CompilerServices.Unsafe.xml.meta 158B
System.Buffers.dll 28KB
System.Buffers.xml 3KB
Packages
manifest.json 149B
KCP.sln 3KB
共 74 条
- 1
资源评论
吴彦祖csdn
- 粉丝: 3
- 资源: 3
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 论文(最终)_20240430235101.pdf
- 基于python编写的Keras深度学习框架开发,利用卷积神经网络CNN,快速识别图片并进行分类
- 最全空间计量实证方法(空间杜宾模型和检验以及结果解释文档).txt
- 5uonly.apk
- 蓝桥杯Python组的历年真题
- 2023-04-06-项目笔记 - 第一百十九阶段 - 4.4.2.117全局变量的作用域-117 -2024.04.30
- 2023-04-06-项目笔记 - 第一百十九阶段 - 4.4.2.117全局变量的作用域-117 -2024.04.30
- 前端开发技术实验报告:内含4四实验&实验报告
- Highlight Plus v20.0.1
- 林周瑜-论文.docx
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功