首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
您找到你想要的搜索结果了吗?
是的
没有找到

muduo网络库使用心得

上个月看了朋友推荐的mudo网络库,下完代码得知是国内同行的开源作品,甚是敬佩。下了mudo使用手冊和035版的代码看了下结构,感觉是一个比較成熟并且方便使用的网络库。本人手头也有自己的网络库,尽管不敢说是一个多强大的网络库,但毕竟在外网也稳定运营了几年,多组同一时候在线也跑过30w左右,单组server也能跑上w人。做游戏server几年的经验,感觉稳定性才是网游server最核心最重要的环节,效率还在其次,这也是眼下网游server普遍採用分组架构决定的,从运营的角度来看,有时候一组server即使上限能跑上w人,但运营会强制把上限定位几k人,这里面跟游戏玩法还有运营的手段有关系,就不细说了! muduo採用的是基于消息回调机制的reactor模式,这也是眼下网络库经常使用的模式。整个网络库的使用比較方便,仅仅须要关心几个tcp事件:tcp连接,收数据,tcp关闭等,这几个事件分别注冊好回调函数就能够简单使用。具体的用法看 陈硕的muduo网络库使用手冊就能够。 假设要把muduo结合到一般的游戏server里面,则最主要的还须要添�组包和打包,假设是对外通讯则还须要加解密模块。參考的方法例如以下: 第一步,须要定义一个 gameserver这种基类,该类负责做为游戏tcp服务端(无论是网关服务器或者逻辑服务器都等都可能须要使用tcp服务端),所以必须包括tcpserver,并把tcp的接受连接和收数据,关闭连接等事件注冊到tcpserver的回调。 第二步:当tcp连接回调onconnection之后,须要new一个新的logicsession(该logicsession就是负责处理数据组包和加解密,消息队列等的类),能够建立一个tcpconnection指针到logicsession的映射。 当tcp连接回调onmessage之后,依据tcpconnection键值找到logicsession,把数据push到logicsession类 第三步: logicsession收到数据后,须要定义一个消息队列类,比如msgqueqe类,负责把收到的二进制数据解密组包等操作,而且把组好的包存放到消息队列中,以供之后的游戏逻辑使用。 完毕了以上几步之后,能够開始干活了。比如要建立一个游戏网关,则仅仅须要定义一个clientserver类继承gameserver(定义clientserver的原因是由于每一个tcp服务所要做的事情可能都不一样,所以须要依据自身需求实现自己的子类,比如游戏网关肯定是要统计连接人数等,则须要在clientserver中暴露获取logicsession个数的接口),并new一个clientserver传入port,比如port20000,则開始侦听来自20000port的tcp连接,接收到连接数据后,自己主动由logicsession处理并保存到每一个连接自己的消息队列中。假设游戏服务器逻辑是单线程的,则接着仅仅须要启动一个线程遍历全部来自20000port的logicsession,而且把每一个logicsession的消息队列pop出来,而且分发到对应的消息处理模块统一处理。这样就能够完毕一次简单的从客户端到游戏网关的tcp数据收发和处理。

00

TCP与UDP区别

1、TCP面向连接(如打电话要先拨号建立连接);UDP是无连接的,即发送数据之前不需要建立连接 2、TCP提供可靠的服务。也就是说,通过TCP连接传送的数据,无差错,不丢失,不重复,且按序到达;UDP尽最大努力交付,即不保 证可靠交付 3、TCP面向字节流,实际上是TCP把数据看成一连串无结构的字节流;UDP是面向报文的 UDP没有拥塞控制,因此网络出现拥塞不会使源主机的发送速率降低(对实时应用很有用,如IP电话,实时视频会议等) 4、每一条TCP连接只能是点到点的;UDP支持一对一,一对多,多对一和多对多的交互通信 5、TCP首部开销20字节;UDP的首部开销小,只有8个字节 6、TCP的逻辑通信信道是全双工的可靠信道,UDP则是不可靠信道

03

腾讯云专线:面向云原生、可编程化演进

前言     在移动互联网时代,随着短视频、直播、游戏等业务的发展,催生了大量云原生的业务和应用。企业客户通过云下云下组成混合云环境,可以快速进行业务的部署和迭代。在混合云组网中,无论是数据库、分布式缓存、对象存储,还是大数据的存算分离模式,大部分都采用云上云下资源动态分布的系统架构,系统间的调用往往需要毫秒以内的时延。同时因为大数据和AI等业务会产生大量的数据传输,占用大量的网络带宽。因此腾讯云专线面向此场景而产生,提供企业客户大带宽、低时延、高安全上云,实现企业数据中心和腾讯云无感互通。 云专线1.0架

06

我对SD-WAN的再思考(上)

我们周围遍布着各式的网络:有 “七国八制”时代的PSTN[ PSTN:Public Switched Telephone Network,公共交换电话网络],有刚成熟就衰落的ATM[ ATM:Asynchronous Transfer Mode,异步传输模式],有局域网内的霸主802.3[ 802.3:IEEE 802.3,有线以太网标准],有高速廉价的接入PON[ PON:无源光纤网络],有日渐式微的SDH[ SDH:Synchronous Digital Hierarchy,同步数字体系]和传统WDM[ WDM:Wavelength Division Multiplexing,波分复用],有攻城掠地的分组传输和OTN[ OTN:Optical Transport Network,光传送网],有3GPP的蜂窝网络,有中远程的微波和卫星网络,有解决短距无线覆盖的WIFI,有面向物联网的M2M和NBIoT…伴生的协议更是名目繁多,单单解决广域网链路层互通就有PPP、Frame-Relay、HDLC等多种协议;各种技术也是互相取长补短,吸收SDH的OAM和交叉复用的PTN和OTN,提供类似传统传输切片的刚性管道的FlexEthernet[ FlexEthernet:柔性以太网]。

02
领券