![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
网络
narlon
这个作者很懒,什么都没留下…
展开
-
浅析HTTPS协议
HTTPS主要解决了哪些问题1、与服务器进行通信使用的是明文,内容可能会被窃听(HTTP协议本身并不具备加密功能,所以无法对请求和响应的内容进行加密)2、使用HTTP协议的服务器与客户端都不会验证通信方的身份,可能遭遇伪装。(所谓不验证通信方身份的意思是,比如说服务端,在服务端接收到请求的时候,只要请求的信息正确,服务器并不会去验证,这个请求是否由其对应的客户端发出。并且,服务器会对请求立即做出一...原创 2018-07-14 09:52:42 · 404 阅读 · 0 评论 -
浅谈Socket同步io
先说说阻塞式同步IOSocket要实现通信,最简单的函数是Write和Read。而这两个函数在默认时都是阻塞式的。阻塞式的意思就是调用后会挂起线程,直到达成某一个目标才继续执行。这么做的坏处显而易见,服务器没法快速的和对个客户端同时进行通信了(或者说效率暴低)。首先当然可以用异步io的方式,但这不是我们这段讨论的内容,同步解决的办法有这些。Receive使用多路复用的方法(Se...原创 2018-07-27 20:26:19 · 1265 阅读 · 0 评论 -
序列化在游戏开发中的运用
为什么需要序列化?在服务器内部,大部分数据都是以对象的形式存储的,那么如果可以直接发一个对象发送给客户端或是其他进程来完成通信,既会非常直观方便,也不同意出现不一致等问题。序列化和反序列化直观上就完成了对象->字节流以及字节流->对象的转化过程。一般情况下,以下几种情况下,需要用到序列化跨设备/跨进程,比如服务器和客户端之间的通信,服务器组内部的通信服务器和存储进程...原创 2018-08-12 15:08:21 · 549 阅读 · 0 评论 -
db服务器在游戏服务器组中的作用
db(一般是mysql,或是类似的,比如mariadb)在游戏服务器中,启动了数据落地的作用。游戏服务器可以直接和db建立访问连接操作数据,或者通过一个中间人(DbServer)来完成这个工作。本文,我们以独立DbServer来分析带来的好处,以及遇到的问题。下文提到的一些优势,如果不单独封装一个db服务器(通过一个存储模块的方式来实现)也可能可以做到。但如果有一个独立的db服务器时,更容易把...原创 2018-08-19 09:35:26 · 3158 阅读 · 0 评论 -
如何封装一个服务器的网络库
为什么需要封装隐藏TCP数据黏连 隐藏TCP参数(超时时间,连接等待时间) 方便支持高级功能(心跳,重连,统计,加密,压缩,错误日志) 让对象关系更加明确(而不是一个Socket打遍天下无敌手)绝对不应该封装的内容序列化,这不应该归网络库来管,很容易把两者耦合起来,设计时必须要考虑 服务器架构网络的代码。比如,服务器组之间的数据通信,用来建立起服务器网络的握手或是服务器组内部的消...原创 2018-09-11 16:28:00 · 393 阅读 · 0 评论 -
pickle, flatbuffer与protobuffer对比
测试方法网上的一些性能测试都比较久远了,还是自己动手丰衣足食吧。测试环境python3.7.1 + protobuffer3.7.1 + flatbuffer1.10.0测试方式,对一个样本对象,压缩/解压 1000次。这个对象其实是flatbuffer的官方样例。// Example IDL file for our monster's schema.namespace...原创 2019-04-16 20:07:44 · 3060 阅读 · 0 评论 -
C#使用protobuf简述
编译依赖项首先,创建一个C#4.5以上project,因为最新的protobuf依赖于C#5.0的语言特性。然后,我们通过nuget,为项目添加对protobuf的引用,搜索protobuf就可以开始安装了。安装完成后,可以编译一次工程,在bin/debug目录下就可以拿到Google.Protobuf.dll了。然后,我们就可以卸磨杀驴了,在nuget里卸载掉这个安装项(因为,我...原创 2019-04-19 14:25:20 · 1524 阅读 · 0 评论