skynet使用json收发数据

skynet api

常用的api

skynet.newservice
skynet.fork
skynet.start
skynet.dispatch


socket.listen
socket.start
socket.read,write(require "socket") !!!
socket.recv,send(require "client.socket")

cjson.decode
cjson.encode

main.lua

--[[
常用的api

skynet.newservice
skynet.fork
skynet.start
skynet.dispatch


socket.listen
socket.start
socket.read,write(require "socket") !!!
socket.recv,send(require "client.socket")

cjson.decode
cjson.encode
]]

local skynet = require "skynet"
local socket = require "skynet.socket"

local function accept(clientfd, addr)
    skynet.newservice("agent", clientfd, addr)
end

skynet.start(function ()
    local listenfd = socket.listen("0.0.0.0", 8888)
    skynet.error("listen on 0.0.0.0, 8888")
    socket.start(listenfd, accept)
end)

agent.lua

local skynet = require "skynet"
local socket = require "skynet.socket"
local cjson = require "cjson"


local clientfd, addr=...
clientfd = tonumber(clientfd)

-- 打包发送一个数据包,加上大端2字节的头部
local function send_package(fd, pack)
	local package = string.pack(">s2", pack)
	socket.write(fd, package)
end

-- 解析数据包  返回值第一个为完整的包,第二个为剩余的
local function unpack_package(text)
    if text == nil then 
        return nil, text
    end
	local size = #text
	

你可能感兴趣的:(Lua)