raknet c#和tctcp和udp的区别和特点别

2801人阅读
IOS游戏(3)
网络库(2)
unity3d(2)
unity3d网络(2)
手机游戏(2)
Raknet是一高性能的跨平台的网络库。他主要基于UDP实现,性能很好,可以做服务器。
鉴于unity3d较差的网络支持。本人成功实现了raknet c# for unity3d的使用,服务器使用c++可在linux windows mac 开发运行。
&&相关文章推荐
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:22369次
排名:千里之外
原创:20篇
(1)(1)(1)(1)(2)(2)(1)(2)(2)(1)(1)(1)(2)(3)Featured Video
Want to see the features in action? Watch our video tutorial and see it happen.
RakNet is a cross-platform C++ and C# game networking engine. It is designed to be a high performance, easy to integrate, and complete solution for games and other applications.
Update your users with database driven binary delta patches, or use a simpler version for updates such as user skins or maps.
Call native C and C++ procedures with automatically serialized parameter lists.
Includes audio bindings for Port Audio, FMOD, and DirectSound.
Essential for voice communication or peer to peer applications. Steam and Steamworks servers supported.
Automatically create, destroy, serialize, and transmit your game objects.
Database powered lobby with support for friends, rooms, quick match, ranking, email, and multiple titles.
SHA1, AES128, SYN Cookies, and RSA to prevent and detect network attacks.
Automatic congestion control, message ordering on multiple channels, message coalescence, and splitting and reassembly of packets.unity(15)
在很久以前本人就发现了RAKNET,对比了几款开源网络库,发现RAKNET是一个不错的选择。RAKNET更适用于做游戏开发,但在我的手机点对点视频聊天项目里还是用了RAKNET.使用RAKNET做为中介服务器,手机P2P成功后还是使用RAKNET通讯。效果不错,视频语音不会丢包,很清晰流畅。当然在网络条件不好的情况下,可以设置RAKNET允许丢包,仍然能有不错的效果。
raknet的缺点是不支持组播,在视频更专业的librtp支持组播,但librtp的缺点也很明显,它不支持UDT,而且如果用RAKNET做服务器,在用librtp通讯,它们之间的接口也很占用时间。
废话已经说完,本人从业游戏开发已有四年,根据市场风向,几人合伙打算做一个手机版即时对战的游戏。重用raknet的机会来了。官网上看到raknet支持swig C#,也隐约在网上搜到说是支持unity3d的。这是真的吗?非也,官网上的raknet 它只能转换成windows下的C#接口使用,只要能转到C#,那它肯定就可以在windows下的UNITY使用。但如果换到ios、android、mac下就不能用了,为什么呢,因为它不支持。
还有,unity所说的它自带raknet,经过证实,MasterServer的底层是用raknet实现的,可以用C++ raknet开一个服务器,用MasterServer连接是能收到正确回应的,但MasterServer的底层用的raknet,它只封装提供给我瘊几个简单的接口,然后呢,想使用raknet办法还是有的,那就需要自己修改。
首先了解一下swig是什么,swig是一个代码生成工具,我们需要按照swig格式配置数据就可以生成我们想要的语言代码。
第一步,首先用raknet官网的方法生成C#代码,这个代码就是在windows 下unity直接可用的。可以确信的是raknet C# 所有的接口都是通过RakNet_wrap.cpp暴露出来。然后所有C#对raknet的调用,全部通过RakNetPINVOKE.cs来调用。可以查看RakNet_wrap文件,里面都是按照一种标准封装起来给外面调用,我们可以说这个标准就是swig的标准。对于这个标准,我们不需要知道它是什么,我们只要会按照这个标准修改RakNet_wrap里面的代码就可以。
我来解释在windows上C#使用raknet的过程:首先swig成生一个RakNet_wrap C++文件,然后用编译器把这个文件生成了动态库。然后C# 直接就可以调用这个动态库了。
既然有了源代码,所有问题都好说了,unity ios下调用C++的最简单的一种配置方法就是把C++源码直接拷到Plugins\IOS下,剩下的工作就是unity会生成xcode项目文件,然后我们在编译项目文件就可生成程序。
需要注意,我们要修改RakNet_wrap文件跟对应的RakNetPINVOKE.cs文件,所以用源码作插件的方式更利于我们修改。修改的时候我们直接在xocde上编译,xcode会有相应错误提示,然后我们修正提示,在编译。
直接指出,IOSC# 调用动态库与其它有所不同,必须改成 &[DllImport(&__Internal&, EntryPoint=&funname&)],而安卓MAC需要 [DllImport(&RakNet&, EntryPoint=&funname&)],还有EntryPoint的名称必须要跟直接引用的名称相同,不然也会不能正常调用。
还有一个对unity工具的要求,unity必须是正版,或者破解正版,试用版是不支持插件的,所以也会有问题。
主要问题就这些,接下来我们可以根据提示,修改小小的问题。
https://git.oschina.net/no_this/client
//注意,这个问题本人花了好多时间研究解决,国内外都没有这样的解决方案,转载请注明出处。
//by 王小帅
&&相关文章推荐
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:34440次
排名:千里之外
转载:98篇
(3)(6)(2)(1)(1)(1)(3)(1)(2)(1)(4)(3)(2)(5)(9)(5)(3)(17)(14)(11)(6)unity3d 3.x 使用raknet4_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
unity3d 3.x 使用raknet4
上传于|0|0|暂无简介
阅读已结束,如果下载本文需要使用1下载券
想免费下载本文?
定制HR最喜欢的简历
你可能喜欢}

我要回帖

更多关于 简述tcp和udp的区别 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信