Skynet is a lightweight online game framework which can be used in many other fields.Skynet 是一个轻量级的网络游戏框架,可以在其他许多领域使用。本篇用于记录Skynet的下载编译和运行过程
本人环境为基于CentOS下的教程,如果使用其他版本请自行参考
框架地址
https://github.com/cloudwu/skynet
自己码云搬运的链接(如果github连不上的话)
https://gitee.com/Nicer_feng/skynet
安装过程
git clone https://github.com/cloudwu/skynet.git
连不上可以用我搬运的
git clone https://gitee.com/Nicer_feng/skynet.git
安装必要工具
yum install gcc #用于编译源码
yum install autoconf #用于编译源码
yum install readline-devel #编译lua会用到
编译源码
[root@feng1 study]# cd skynet/
[root@feng1 skynet]# make linux
运行Skynet服务器
make linux
安装时候如果报错,说明gcc版本有点低了,可以参考这篇升级一下gcc版本再编译
In file included from lstring.c:23:0:
../../skynet-src/atomic.h:25:23: fatal error: stdatomic.h: No such file or directory
#include <stdatomic.h>
^
compilation terminated.
编译成功后再次运行
[root@feng1 skynet]# ./skynet
Need a config file. Please read skynet wiki : https://github.com/cloudwu/skynet/wiki/Config
usage: skynet configfilename
[root@feng1 skynet]#
直接启动则提示我们需要指定一份配置文件,在"./skynet/example"下有一个config文件是KV数据库的配置文件,我们带上这个配置文件再启动一次skynet
[root@feng1 skynet]# ./skynet examples/config
[:01000002] LAUNCH snlua bootstrap
[:01000003] LAUNCH snlua launcher
[:01000004] LAUNCH snlua cmaster
[:01000004] master listen socket 0.0.0.0:2013
[:01000005] LAUNCH snlua cslave
[:01000005] slave connect to master 127.0.0.1:2013
[:01000004] connect from 127.0.0.1:56484 4
[:01000006] LAUNCH harbor 1 16777221
[:01000004] Harbor 1 (fd=4) report 127.0.0.1:2526
[:01000005] Waiting for 0 harbors
[:01000005] Shakehand ready
[:01000007] LAUNCH snlua datacenterd
[:01000008] LAUNCH snlua service_mgr
[:01000009] LAUNCH snlua main
[:01000009] Server start
[:0100000a] LAUNCH snlua protoloader
[:0100000b] LAUNCH snlua console
[:0100000c] LAUNCH snlua debug_console 8000
[:0100000c] Start debug console at 127.0.0.1:8000
[:0100000d] LAUNCH snlua simpledb
[:0100000e] LAUNCH snlua watchdog
[:0100000f] LAUNCH snlua gate
[:0100000f] Listen on 0.0.0.0:8888
[:0100000f] lua call [100000e to :100000f : 3 msgsz = 36] error :
........
[:01000009] KILL self
[:01000002] KILL self
启动报错
但是我这边启动的时候出了点意外
可以看到是在监听8888端口后报的错,回忆了一下发现我服务器是运行了宝塔的,怎么能不报错呢?
找了一下发现这个8888是在./skynet/examples/main.lua中配置的,顺手改个9999试试看
再次启动,舒服了
启动服务端以后我们再启动一个客户端(CS模型不在多说了),Skynet下也有客户端的例子,在examples/client.lua中
启动客户端
lua exaples/clinet.lua
如果上面这个报错表示可能服务器没有安装lua环境、或者lua版本小于5.3,我们可以换一个命令启动如下
./3rd/lua/lua examples/client.lua
启动以后,打印表示每5秒会回复心跳包
在./skynet/examples/client.lua文件中可以看到如果我们回复hello,服务器会返回world
往服务端发消息
输入hello返回
服务端打印