diff --git a/examples/login/client.lua b/examples/login/client.lua index 2dfdf25b..4180e7a7 100644 --- a/examples/login/client.lua +++ b/examples/login/client.lua @@ -2,7 +2,10 @@ package.cpath = "luaclib/?.so" local socket = require "clientsocket" local crypt = require "crypt" -local bit32 = require "bit32" + +if _VERSION ~= "Lua 5.3" then + error "Use lua 5.3" +end local fd = assert(socket.connect("127.0.0.1", 8001)) @@ -93,26 +96,14 @@ print("login ok, subid=", subid) local function send_request(v, session) local size = #v + 4 - local package = string.char(bit32.extract(size,8,8)).. - string.char(bit32.extract(size,0,8)).. - v.. - string.char(bit32.extract(session,24,8)).. - string.char(bit32.extract(session,16,8)).. - string.char(bit32.extract(session,8,8)).. - string.char(bit32.extract(session,0,8)) - + local package = string.pack(">I2", size)..v..string.pack(">I4", session) socket.send(fd, package) return v, session end local function recv_response(v) - local content = v:sub(1,-6) - local ok = v:sub(-5,-5):byte() - local session = 0 - for i=-4,-1 do - local c = v:byte(i) - session = session + bit32.lshift(c,(-1-i) * 8) - end + local size = #v - 5 + local content, ok, session = string.unpack("c"..tostring(size).."B>I4", v) return ok ~=0 , content, session end @@ -132,11 +123,7 @@ end local readpackage = unpack_f(unpack_package) local function send_package(fd, pack) - local size = #pack - local package = string.char(bit32.extract(size,8,8)).. - string.char(bit32.extract(size,0,8)).. - pack - + local package = string.pack(">s2", pack) socket.send(fd, package) end