skynet:socket 测试

一、demo

1、目录准备
  • 新建 server 目录,将 skynet 目录拷贝到 server 目录下;
  • 在 skynet 目录同级新建 game 目录;
  • 在 game 目录中新建3个文件,config、main.lua 和 service_gate.lua,其中 log 目录是存放日志文件,最终目录结构如下:
    在这里插入图片描述
2、文件 service_gate.lua 内容
/* 引入框架 */
local skynet = require "skynet"
local socket = require "skynet.socket"

function accept(id, addr)
    print("accept connect from addr: " .. addr .. " id: " .. id)
    socket.start(id)
    while true do
        local msg = socket.read(id)
        if msg then
            print(msg)
            socket.write(id, "msg from server")
        else
            socket.close(id)
            return
        end
    end
end

skynet.start(function()
    local listen_id = socket.listen("0.0.0.0", 8888)
    socket.start(listen_id , accept)
end)
3、文件 main 内容
local skynet = require "skynet"


skynet.start(function()
	    skynet.newservice("service_gate") /* 启动服务:service_gate */
	        skynet.exit()
	end)

4、文件 config 内容
-- 非配置项,单纯的定义一个了根目录变量,方便后面目录的配置和修改
root="./"

-- 必须配置,skynet 启动的第一个服务以及其启动参数
bootstrap = "snlua bootstrap"

-- 必须配置,工作线程数,不要多余 cpu 核数
thread = 1

-- 必须配置,用 C 编写的服务模块的位置
cpath = root.."cservice/?.so"

-- skynet_error的输出文件,默认为nil表示标准输出
logger = "../game/log/game.log"

-- 当你运行时为一个服务打开 log 时,这个服务所有的输入消息都会被记录在这个目录下,文件名为服务地址
logpath = "../game/log"

-- 0表示单节点模式,1-255 间的任意整数表示多节点模式
harbor = 0

-- lua 脚本所在的位置
luaservice = root.."service/?.lua;"..root.."../game/?.lua"

-- 启动脚本,必须在luaservice指定的路径中,默认为 main.lua
start = "main"

二、启动 skynet

在 server/skynet 目录下执行命令:./skynet …/game/config
检查日志文件:server/game/log/game.log,skynet 启动是否出错。

  • 问题一:skynet Can’t launch logger service
    原因:在skynet根目录以外的地方执行 skynet,从而导致相关模块找不到。

三、测试

socket 测试工具采用:sokit。
在这里插入图片描述
tcp 连接 skynet 后,一次发送四个数据包。检查 skynet 进程输出:
在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值