Coder Social home page Coder Social logo

kcp-unity's Introduction

kcp-unity

KCP是一种基于UDP的上层协议,项目地址:KCP – A Fast and Reliable ARQ Protocol

kcp就是在udp上再做了一层封装,来实现TCP的效果并且弥补TCP的一些不足。使用kcp的方式就是和服务器连接一个udp连接,然后再udp的通信过程中,使用kcp库对字节进行处理。然后通过kcp拿到数据包。kcp可以保证你拿到的包,一,不会丢包,二,保证数据包的发送顺序和接收顺序一致。这其实就是tcp的功能。但是kcp的速度比tcp要快的多。

KCP CSharp

unity接入kcp的话,肯定要c#版本的,但是同样是c#版本kcp,也是有区别的,

第一种方式:c#移植版

移植版,就是使用c#语言翻译原版c的kcp库。一般这样实现的库有很多,但是质量参差不齐,有的是完美移植,有的可能会遗留一些问题,比如gc太多等

目前用的还比较多的有:

  • kcp-csharp: kcp的 csharp移植,同时包含一份回话管理,可以连接上面kcp-go的服务端,且和kcp-go的语法相似。
  • kcp-csharp: 新版本 Kcp的 csharp移植。线程安全,运行时无alloc,对gc无压力。

第二种方式:动态库版

动态库版,就是把原版c的kcp库,进行动态库编译,编译为ios,android,pc,linux等平台的库,然后我们使用C#去封装一个udp,然后调用kcp的动态链接库。

这种方式,好处是可以保留原版库的所有特性,不用考虑优化语法的问题了,而且性能比较好。但是坏处就是编译动态库较麻烦,需要针对所有平台...可想而知

unity3d构建kcp跨平台动态链接库

因此本仓库就是基于以上动态链接库实现的,基于ET框架修改而成。 ET框架中网络有自己的封装,包括了server和client。理解起来稍微有点麻烦,所以我把部分逻辑简化,封装了 一个纯client的。其中tcp和kcp均可直接和服务器(go/java)对接

详情链接:https://passion.blog.csdn.net/article/details/112722271

友情链接

skywind3000/kcp

xtaci/kcp-go

注意事项:

go版本的kcp的demo:echo.go中默认使用了加密模式

kcp.ListenWithOptions("127.0.0.1:12345", block, 10, 3)

这种情况下回合C#端的kcp对接不上。造成死活连接不上的问题

解决方法:

1.改成kcp.ListenWithOptions("127.0.0.1:3656", nil, 0, 0)

2.改成kcp.Listen("127.0.0.1:3656")

kcp-unity's People

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.