备忘录

来源:互联网 发布:python ctrl c 编辑:程序博客网 时间:2024/06/11 04:21

local sproto = require "src.app.sproto"
local proto = require "src.app.scenes.proto"

local host = sproto.new(proto.s2c):host "package"
local request = host:attach(sproto.new(proto.c2s))

function SocketTcpTestScene:init()

self.host = host
self.request =  request


self.socket_ = socket
end


--_VERSION = 5.1
function pack_msg(str)
if _VERSION ~= "Lua 5.3" then 
local len = string.len(str)
local leninfo = string.pack("bb",math.floor(len/256),len%256)
return string.pack("A",leninfo .. str)
else
return string.pack(">s2",str)
end
end


function SocketTcpTestScene:dispatch_package(package)
    local t, arg1, arg2 = self.host:dispatch(package)
   -- print("---------------------------------------------->",t, arg1, arg2)
    if t == "REQUEST" then
        local name, result = arg1, arg2
        print("[skynet_client] [server_push_msg], name = ", name)
        print(result)
        if result then
            local cb = self.cb_listeners[name]
            if cb then
                cb(result)
            else
                assert(false, 'not found listen callback for name = ' .. name)
            end
        end


    elseif t == "RESPONSE" then
        local session, result = arg1, arg2
        print("[skynet_client] [server_response], session = ", session)
        if type(result) == "table" then
       for k , v in pairs(result) do 
        print("劲爆---劲爆----------劲爆----------k = ",k,"---v = ",v)
       end
   end
       -- print(result)
        if result then
            if cb then
                cb(result)
                self.cb_requests[session] = nil
            else
               assert(false, "no request found for session = " .. session)
            end
        end        
    else
        assert(false, "[skynet_client] unkown package not fund type")
    end
end


--_VERSION = 5.1
function unpack_msg(text)


local size = #text
if size < 2 then
return nil, text
end
local s = text:byte(1) * 256 + text:byte(2)
if size < s+2 then
return nil, text
end


return text:sub(3,2+s), text:sub(3+s)
end


local session  = 0
function SocketTcpTestScene:send_request1(name, args)
session = session + 1
local str = request(name, args, session)
self:send_package(str)
print("Request:", session)
end


function SocketTcpTestScene:send_request(name, args)
local str = request(name, args, session)--把明文数据封装成协议规定的格式
session = session + 1
--print(str)
print(type(str))
dump(str,"request(anme,args,session--------------------->>)",9)


local package = pack_msg(str)--打包成流(字节码)
print(type(package))
dump(package,"package= pack_msg------------------->",9)
self.socket_:send(package)
print(package)
end




function SocketTcpTestScene:send_package(pack)


local package = string.pack(">P", pack)
self.socket_.send(self.fd,package)
end


function SocketTcpTestScene:ConnectTest()
self.fd = self.socket_:connect("192.168.204.128", 8888, true)
end






function SocketTcpTestScene:SendDataTest()
self.socket_:send("风格")
end


function SocketTcpTestScene:CloseTest()
if self.socket_.isConnected then
self.socket_:close()
end
end


function SocketTcpTestScene:tcpData(event)
dump(type(event.data),"event.type---------------->",9)
dump(string.len(event.data),"event.len---------------->",9)
local data , sz= unpack_msg(event.data)
--print( data , sz)
--local data = host:dispatch(data)
local tt = self:dispatch_package(data)
--print("SocketTCP receive data:" .. tt)

end

----------------------------------------------------------------------------------------------------

cal core = require "sproto.core"
local proto = require ("src.app.scenes.proto")
local Socket = require("src.app.socketTcpTest")
local sproto = require "src.app.sproto"
--local test = require("src.app.scenes.test")




local MainScene = class("MainScene", function()
    return display.newScene("MainScene")
end)


function MainScene:ctor()


local host = sproto.new(proto.s2c):host "package"
local request = host:attach(sproto.new(proto.c2s))


    cc.ui.UILabel.new({
            UILabelType = 2, text = "Hello, World", size = 64})
        :align(display.CENTER, display.cx, display.cy)
        :addTo(self)


    local socket = Socket.new()
    socket:ConnectTest()




   --display
   cc.ui.UIPushButton.new("test.png" ,{scale9 = true})




        :onButtonClicked(function(event)
          -- print("test clicked")
          socket:send_request("set", { what = "quick", value = "cocos" })
         -- socket:SendDataTest()
          --send_request("set", { what = "hello", value = "world" })
        end)
      :pos(300,300)
        :addTo(self)


          --display
   cc.ui.UIPushButton.new("test.png" ,{scale9 = true})




        :onButtonClicked(function(event)
          --  print("test clicked")
          --socket:send_request("get", { what = "quick"})
           socket:send_request("say", { what = "eiya",value = "eneneneen"})
         -- socket:SendDataTest()
            --send_request("set", { what = "hello", value = "world" })
        end)
        :pos(300,200)
        :addTo(self)






--send_request("handshake")




end