排序:
默认
按更新时间
按访问量

skynet lua层消息的执行顺序

前几篇讲解了服务之间互相发送消息,消息的挂起,恢复,fork等等,感觉还是有点搞不清他们之间是怎么协作的,例如fork产生的协程什么时候被调用,如果有多个fork又怎么被调用.这篇试着讲解一下.首先要明白的是,一般所有的lua层函数都是以协程的方式被执行的,包括fork产生的函数.除非你在skyn...

2018-04-15 17:12:30

阅读数:34

评论数:0

skynet 定时器sleep与fork

在前面的几篇中定时器其实我们已经应用过了,入口函数就是靠定时器驱动的,只不过他的定时为0.参见skynet lua业务逻辑的启动--skynet.start() .在后面的服务与服务交互中,为了保证在A服务call B服时,B服务已经启动,我们特意在A服务call前执行了一个无意义的循环.这节中的...

2018-04-03 20:15:56

阅读数:36

评论数:0

skynet call的实现--服务与服务的交互

在实现业务逻辑的过程中,各个逻辑一般会抽象成一个服务,例如游戏中的登录服务,访问数据库服务,创建房间服务等等.服务与服务之间肯定是要通信和交互的,例如登录的时候要请求数据库验证.skynet是怎么实现两个服务的通信和交互的呢?为了突出主干,我简化了lua服务代码,A服务调用B服务:A服务代码(bo...

2018-04-02 17:07:22

阅读数:31

评论数:0

skynet lua业务逻辑的启动--skynet.start()

上两篇skynet主体流程, skynet怎么启动lua文件介绍了skynet代码的主体流程,还有怎么启动lua逻辑.我们知道skynet业务逻辑都是在lua里写的,这样大大提高了开发效率,而且使热更新成为可能,究竟lua层是怎么保证逻辑正常运行,一个服务在lua层的表现形式又是怎么样的呢?这篇将...

2018-04-02 11:09:50

阅读数:33

评论数:0

lua 和C交互相关函数

1 堆栈相关1.1int   (lua_gettop) (lua_State *L);用于返回栈中元素的个数,同时也是栈顶元素的索引,因为栈底是1,所以栈中有多少个元素,栈顶索引就是多少;2.2 void  (lua_settop) (lua_State *L, int idx);把栈索引idx...

2018-03-22 11:19:14

阅读数:47

评论数:0

skynet加载配置文件

看了skynet加载配置的地方,竟然发现好多知识点,记录下.skynet的配置文件是通过命令行传入到进程的,这个比较明了. 仔细读了一下这块代码,发现有不少细节,而且,有些lua函数竟然很少用过,下面就这块代码分析一下.int main(int argc, char *argv[]) { con...

2018-05-22 17:17:39

阅读数:7

评论数:0

skynet sproto协议剖析(四)

这篇分析数据通过sproto协议的打包和解包.有了前面的铺垫,分析打包和解包较为得简单.在实际传输数据的时候我们都是根据协议名传输数据, 即protocol数组中的某个元素.所以在打包时我们必须知道是在打包哪个协议,解包的时候就知道了对应的是哪条协议了, 这个信息要写入打包之后数据的头部.其实sp...

2018-05-15 11:36:48

阅读数:5

评论数:0

skynet sproto协议剖析(三)

前两篇讲了sproto协议二进制文件的格式,这篇讲如何通过二进制文件构造协议以及打包和解包协议.关于二进制文件的生成请看这篇文章:skynet sproto 阅读笔记之一 协议的生成通过前两篇的分析我们知道了sproto协议的格式,主要分为两部分,sproto_type和protocol数组.构造...

2018-05-11 12:19:00

阅读数:15

评论数:0

skynet sproto协议剖析(二)

这篇试着对着代码分析一下sproto协议.一个典型的sproto协议长如下的样子:.package { type 0 : integer session 1 : integer } .Info { money 0 : integer sex 1 : ...

2018-05-10 21:33:42

阅读数:10

评论数:0

skynet sproto协议剖析(一)

前几天领导叫我分析一下skynet的sproto协议,说是要把HTML5项目和现有的skynet项目协议对接起来,意义非常重大,他自己写了开头,没有时间弄了,叫我继续搞.接到指示之后,马不停蹄的查资料,看源代码,连休息的时候也在想着这个事情.经过2,3个完整工作时间(每天饱满8小时以上),终于做出...

2018-05-08 11:33:09

阅读数:22

评论数:0

UDP协议解惑

由于平时UDP协议接触的少,最近在梳理网络编程知识的时候,发现好多之前没有深入了解过的问题,有的甚至颠覆了以前的网络编程知识.以下是几个很重要的知识点.1 UDP的无连接学过网络编程的朋友都知道,TCP是有连接的,而UDP协议是无连接的.那么这个连接究竟指的什么?从编程的角度来说,连接指的是套接字...

2018-04-27 22:37:51

阅读数:7

评论数:0

http服务器究竟做了什么(四)

这篇开始讲服务器的代码.为了让初学者更好的理解http服务器的基本原理,抓住主干,排除其他干扰,我这里用了最轻量级的http服务器tinyhttp,总共代码只有500行左右.麻雀虽小,五脏俱全. tinyhttp实现了http服务器的基本功能.首先,初学者要懂基本的socket编程,知道socke...

2018-04-24 22:25:53

阅读数:8

评论数:0

http服务器究竟做了什么(三)

本节内容将通过一些示例来说明CGI程序.前面讲过CGI程序可以用任何语言编写,考虑到便捷性,这里用python来展示CGI程序.首先搭建服务器.我这里用了最轻量级的http服务器tinyhttp,总共代码只有500行左右,后面的服务器代码分析也是基于这个.在他的htdocs里添加一个test.cg...

2018-04-23 11:55:55

阅读数:30

评论数:0

匿名管道为什么可以在父子进程间通信

网上关于匿名管道的用法已经非常多了,这里就不再过多的介绍,只关注本篇的主题.匿名管道创建函数pipe()系统调用底层的实现就相当于一个特殊的文件系统,每次调用的时候创建一个inode关联着两个file,一个用于读,一个用于写,从而实现数据的单向流动.一个管道实际上就是一个无形(只存在于内存中)的文...

2018-04-20 19:52:14

阅读数:66

评论数:0

http服务器究竟做了什么(二)

上篇http服务器究竟做了什么(一)提到http服务器会有接口让第三方程序来接入,从而实现业务分离的作用.接口肯定有接口的规范,例如我国家用插座输出电压规范是220v,厂商都是根据这个规范来生产家电的.那么http服务器接口的规范是什么呢?他有有个专有名词:Common Gateway Inter...

2018-04-20 11:34:29

阅读数:43

评论数:0

skynet watchdog和gate

skynet lua层的基础讲解的差不多了.就剩下网络这一块了.网络这块比前面的复杂,也是skynet框架的精华所在,所以放在后面慢慢讲解.今天看了服务器与客户端交互常见的watchdog和gate模块,相当于封装了socket api的调用,程序只需要写发送和接收的逻辑即可,很是方便.下面是我花...

2018-04-19 21:05:21

阅读数:45

评论数:0

http服务器究竟做了什么(一)

本篇文章旨在从服务器后台开发的角度剖析一个简单的http服务器的运行原理.我们知道浏览器是http(s)的客户端,目的是连接远程的http服务器,然后服务器返回浏览器数据.浏览器接收数据解析数据之后展现出来.我们看到的外在表现就是,浏览器访问一个url,然后就得到相应的web页面.同样我们知道,浏...

2018-04-18 21:09:55

阅读数:23

评论数:0

lua的元表

接触lua一年多,是要把lua的高级特性总结一下了.先说说元表吧.元表是什么?为什么要有元表?学过C++的童鞋应该知道操作符重载.例如,自定义一个复数类,可以让他的两个实例相加减等等.同理,lua的元表也可以让两个表相加减,但是他使用了更简单的语法.lua的元表是为了扩展lua的特性,使他的功能更...

2018-04-17 21:23:38

阅读数:9

评论数:0

以太网数据帧结构以及大小限制

 以太网数据帧结构           以太网是目前最流行的一种局域网组网技术(其他常见局域网组网技术还有令牌环局域网、无线局域网、ATM局域网),以太网技术的正式标准是IEEE 802.3标准,它规定了在以太网中传输的数据帧结构,如下图所示。                    1、前导码/帧...

2018-04-09 21:47:58

阅读数:37

评论数:0

skynet怎么启动lua文件

上篇skynet主体流程介绍了skynet整体的流程,skynet究竟是怎么启动lua代码的,我们还不知道.这篇详细说下bootstrap我们先看下bootstrap的流程:a) 加载snlua模块,并创建一个模块实例,在这里会创建一个lua虚拟机b) 启动一个新的skynet环境上下文skyne...

2018-03-29 11:38:12

阅读数:45

评论数:0

提示
确定要删除当前文章?
取消 删除
关闭
关闭