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