skynet socket监听连接 demo
来源:互联网 发布:搜索引擎自然排名优化 编辑:程序博客网 时间:2024/05/11 22:41
下载安装
- 源码: https://github.com/cloudwu/skynet
- 编译:https://github.com/cloudwu/skynet/wiki/Build
服务器 demo
新建 server 目录,将 skynet 原来克隆在 server 目录中;为了后面维护和更新方便,在 skynet 目录同级新建 game 目录 和 log 目录;在 game 目录中新建3个文件,config、main.lua 和 service_gate.lua;log 目录是存放日志文件,最终目录结构如下:
server+-- skynet |-- ... +-- ...+-- game |-- config |-- main.lua |-- service_gate.lua +-- log
config 配置说明参考: https://github.com/cloudwu/skynet/wiki/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.luastart = "main"
下面是一个最简单的服务,使用 socket 监听客户端请求,返回一个字符串给客户端,写在 service_gate.lua 中。
local skynet = require "skynet"local socket = require "skynet.socket"function accept(id, addr) print("accept connect from addr: " .. addr .. " id: " .. id) -- 每当 accept 函数获得一个新的 socket id 后,并不会立即收到这个 socket 上的数据。 -- 这是因为,我们有时会希望把这个 socket 的操作权转让给别的服务去处理。 -- 任何一个服务只有在调用 socket.start(id) 之后,才可以收到这个 socket 上的数据。 socket.start(id) while true do -- 读取客户端发过来的数据 local msg = socket.read(id) if msg then print(msg) -- 把一个字符串置入正常的写队列,skynet 框架会在 socket 可写时发送它 socket.write(id, "msg from server") else socket.close(id) return end endendskynet.start(function() local listen_id = socket.listen("0.0.0.0", 8888) -- 接收到客户端连接或发送消息 socket.start(listen_id , accept)end)
启动服务
在配置中指定了启动脚本 main.lua,在其中启动我们上面的这个服务,其内容如下:
local skynet = require "skynet"-- skynet.start(启动函数) 启动服务skynet.start(function() -- skynet.newservice(服务脚本文件名)启动一个新的 lua 服务 skynet.newservice("service_gate") skynet.exit()end)
测试
推荐一个socket测试工具:https://sokit.soft32.com/
填好ip和端口,点击tcp链接,然后在buffer data中随便写点什么,点击send,可以得到如下结果:
阅读全文
0 0
- skynet socket监听连接 demo
- socket连接监听udp包
- Socket编程上篇-----服务器监听与连接
- 【Skynet】socket与多服务
- 【Skynet】Socket源码剖析一
- 【Skynet】Socket源码剖析二
- C# socket长连接使用demo
- Skynet 源码学习 -- Socket Server 和 Skynet_socket
- skynet
- Skynet
- skynet
- Socket监听
- 监听socket
- socket监听
- sockaddr_un实例--监听与连接UNIX域socket
- muduo-源码分析2:注册监听socket和建立连接
- Socket(监听端口或发出一个tcp连接)
- 【Socket编程】Tcp连接中accept生成新socket与监听socket的区别
- MATLAB Camera Calibrator——相机标定
- Maven中-DskipTests和-Dmaven.test.skip=true的区别
- 12月19日云栖精选夜读:开源PaaS工具CloudFoundry落地阿里云
- JMeter学习JDBC测试计划——连接Oracle
- 程序设计入门C语言单元测验
- skynet socket监听连接 demo
- 全局异常处理器
- Android6.0系统简单介绍:棉花糖
- 头像画小圆点
- Angularjs购物车删除清空按钮增减数量等操作
- 《deep learning》读书笔记------第六章
- 计算机会议等级排名
- angularjs简单使用增删查
- win10下VS2013+OpenCV2.4.9环境配置