summaryrefslogtreecommitdiff
path: root/jnet/README.md
blob: 28e53ddbced20074e97ef8a1b40f7fa726f9e3fe (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57

socket通信的数据类型
* INT     32
* FLOAT   32
* BOOL    32
* STRING  --
STRING判定右界,以0结尾即可
一个协议定义的例子(最好把协议统一放在一个单独的lua文件里)
-- s2c_package.lua
local INT    = jin.net.dataType.INT 
local FLOAT  = jin.net.dataType.FLOAT
local BOOL   = jin.net.dataType.BOOL
local STRING = jin.net.dataType.STRING
Skill = {
    id = INT, 
    damage = FLOAT, 
    range = FLOAT, 
    description = STRING
}
发的时候
local data, size = jin.net.serialize(Message.Skill, message)
Socket:send(data, size)
收的时候
local data, size = Socket:receive()
local message = jin.net.deserialize(Message.Skill, data, size)

jin.net.dataType = {
    INT = 1,
    FLOAT = 2,
    BOOL = 3,
    STRING = 4
}

jin.net.deserialize = function(prototype, data, size)
    local message = {}
    local i = 1
    for k, t in pairs(prototype) do 
        message[k] = data[i]
        i = i + 1
    end 
    return message
end 

jin.net.serialize = function(prototype, message)
    local data = "" 
    local size = 0
    for i, v in pairs(message) do 
        data, size = jin.bit.write(data, size, v)
    end
    return data, size
end 

-- 解密协议
jin.net.decode = function() 
    local s = jin.bit.grabstring(buffer, size)
end 
]]