cocos2d-Lua10网络Http&Socket编程
来源:互联网 发布:excel 按钮 切换数据 编辑:程序博客网 时间:2024/05/24 04:16
复习:
1。实现CocosLua项目的打包
1.1 安装sdk
1.2 安装ndk
1.3 安装ant
1.4 安装adt
1.5 进入命令提示符
python setup.py
1.6 重启命令提示符
cocos new -p xx.cc.cc -l lua - d d: test
1.7 在eclipse导入项目
1.8 设置项目的平台
1.9 拷贝 lib 到项目src目录
1.10 进入命令提示符
cocos compile -p android
生成.so
1.11 打包apk
------------------------------------------------------------
实现C语言函数
C++类的注册
lua中调用
学习:
网络编程:
客户端 服务器
ios
android
1.短连接
通过Http协议访问网络服务器
客户端--------------〉
request
login.php
解释执行
<-------------
response
1场景跳转
0
2.长连接
Socket协议
创建
绑定端口
侦听
连接服务器
接受请求
《-------》
双向通讯
关闭
---------------------------------------------------------
1。搭建Web服务器
定义服务器访问的接口
1.1 接口URL
http://ip:port/login.php
1.2 参数说明
us char 用户名
ps char 密码
1.3 返回值
0 登陆失败
1 登陆成功
1.4 在浏览器中进行测试
2。通过cocosLua访问服务器
--1创建网络连接对象
local xhr = cc.XMLHttpRequest:new()
xhr.responseType = cc.XMLHTTPREQUEST_RESPONSE_STRING
local url=
"http://172.16.94.224/login.php?us="..
tfUser:getStringValue() .."&ps="..
tfPass:getStringValue()
print(url)
--2指定URL
xhr:open("GET",url)
--3定义回调函数
local function onReadyStateChange()
local statusString = "Http Status Code:"..xhr.statusText
local res=xhr.response
print("从服务器获取数据:"..res)
if tonumber(res)==1 then
local sc=require("ScoketScene")
cc.Director:getInstance():replaceScene(sc:create())
end
end
--4.绑定回调
xhr:registerScriptHandler(onReadyStateChange)
xhr:send() --5发送请求
-----------------------------------------------------------------------------
服务器 客户端
创建create
绑定端口bind
开始侦听 listener
创建create
连接Connect
接受请求
《------------》
发送 接收
关闭 关闭
--------------------------------------------------------------------------
print("onEnter")
local socket = require("socket") --1。请求Socket对象
print(tostring(socket))
local host = "127.0.0.1"
local port = 8867--19730
local c = socket.tcp() --2.创建Socket对象
local n,receive_status = c:connect(host, port)--3连接服务器
c:settimeout(0)
print("connect return:",n,e)
c:send("Hello")
local function tcpSocketgetMsg()
local response, receive_status=c:receive()
end
local node=cc.Node:create()
self:addChild(node)
node:scheduleUpdateWithPriorityLua(tcpSocketgetMsg,0)
GameScene.lua
--请求文件
require("Cocos2d")
require("CocoStudio")
require("json")
--定义类的继承
local GameScene=class("GameScene",function ()
return cc.Scene:create()
end)
--添加create方法
function GameScene:create()
local scene=GameScene.new()
scene:addChild(scene:init())
local function sceneEnent(E)
if E=="enter" then
scene:onEnter()
end
end
scene:registerScriptHandler(sceneEnent)
return scene
end
--构造方法
function GameScene:ctor()
self.winsize=cc.Director:getInstance():getWinSize()
end
--初始化场景
function GameScene:init()
local layer=cc.Layer:create()
--添加ui
--local root=ccs.GUIReader:getInstance():widgetFromJsonFile("DemoLogin/DemoLogin.json")
--layer:addChild(root)
return layer
end
function GameScene:onEnter()
print("onEnter")
local function logic(t)
g_count=g_count+1
if g_count<100 then return
else
--1联网设置URL
local url=string.format("http://192.168.254.176/getmsg.php?msgid=%d",g_now_messId)
--print(url)
--2.创建XMLHttpRequest对象
local xhr = cc.XMLHttpRequest:new()
g_conn=xhr
-- xhr.responseType = cc.XMLHTTPREQUEST_RESPONSE_STRING
xhr.responseType=cc.XMLHTTPREQUEST_RESPONSE_JSON
xhr:open("GET", url)
--3.定义回调函数
local function onReadyStateChange()
local statusString = "Http Status Code:"..xhr.statusText
--获取服务器返回的数据
print("返回信息:"..xhr.response)
local output = json.decode(xhr.response,1)
for index=1,#output["result"] do
local msg=tostring(output["result"][index]["uname"]).." say:"..tostring(output["result"][index]["say"])
-- print(...)
if tonumber(output["result"][index]["chatid"])>g_now_messId then
g_now_messId=tonumber(output["result"][index]["chatid"])
end
-- --显示这句话在屏幕
local lab=cc.Label:createWithTTF(msg,"fonts/Marker Felt.ttf",28)
lab:setPosition(200,30*(index))
local act1=cc.DelayTime:create(index)
local act2=cc.MoveBy:create(2,cc.p(0,20))
local act3=cc.FadeOut:create(2)
local function kill(obj)
obj:removeFromParent()
print("kill")
end
local actsw={act2,act3}
local act4=cc.CallFunc:create(kill)
local acts={
act1,--延时
cc.Spawn:create(actsw), --移动
act4 --消除
}
self:addChild(lab)
local act=cc.Sequence:create(acts)
lab:runAction(act)
end
end
--4.绑定回调函数
xhr:registerScriptHandler(onReadyStateChange)
xhr:send() --向服务器发送请求
print("网络开始连接,请等待")
g_count=0
end
end
self:scheduleUpdateWithPriorityLua(logic,0)
end
return GameScene
LoginScene.lua
--请求文件
require("Cocos2d")
require("CocoStudio")
--定义类的继承
local LoginScene=class("LoginScene",function ()
return cc.Scene:create()
end)
--添加create方法
function LoginScene:create()
local scene=LoginScene.new()
scene:addChild(scene:init())
return scene
end
--构造方法
function LoginScene:ctor()
self.winsize=cc.Director:getInstance():getWinSize()
end
--初始化场景
function LoginScene:init()
local layer=cc.Layer:create()
--添加ui
local root=ccs.GUIReader:getInstance():widgetFromJsonFile("DemoLogin/DemoLogin.json")
layer:addChild(root)
local btLogin=root:getChildByTag(14)
local txtuser=root:getChildByTag(8)
local txtpass=root:getChildByTag(9)
local function btclick(obj,evt)
print(string.format("s%d",evt))
if evt==2 then
--1联网设置URL
local url=string.format("http://192.168.254.176/CheckLogin.php?uname=%s&upass=%s",
txtuser:getStringValue(),
txtpass:getStringValue())
--print(url)
--2.创建XMLHttpRequest对象
local xhr = cc.XMLHttpRequest:new()
g_conn=xhr
xhr.responseType = cc.XMLHTTPREQUEST_RESPONSE_STRING
xhr:open("GET", url)
--3.定义回调函数
local function onReadyStateChange()
local statusString = "Http Status Code:"..xhr.statusText
--获取服务器返回的数据
print("返回信息:"..xhr.response)
g_now_userid=tonumber(xhr.response)
if g_now_userid>0 then
local scene=require("GameScene")
local gs=scene:create()
cc.Director:getInstance():replaceScene(gs)
end
end
--4.绑定回调函数
xhr:registerScriptHandler(onReadyStateChange)
xhr:send() --向服务器发送请求
print("网络开始连接,请等待")
end
end
btLogin:addTouchEventListener(btclick)
return layer
end
return LoginScene
SocketScene.lua
--请求文件
require("Cocos2d")
require("CocoStudio")
require("json")
--定义类的继承
local ScoketScene=class("ScoketScene",function ()
return cc.Scene:create()
end)
--添加create方法
function ScoketScene:create()
local scene=ScoketScene.new()
scene:addChild(scene:init())
local function sceneEnent(E)
if E=="enter" then
scene:onEnter()
end
end
scene:registerScriptHandler(sceneEnent)
return scene
end
--构造方法
function ScoketScene:ctor()
self.winsize=cc.Director:getInstance():getWinSize()
end
--初始化场景
function ScoketScene:init()
local layer=cc.Layer:create()
--添加ui
--local root=ccs.GUIReader:getInstance():widgetFromJsonFile("DemoLogin/DemoLogin.json")
--layer:addChild(root)
return layer
end
function ScoketScene:onEnter()
print("onEnter")
local socket = require("socket")
print(tostring(socket))
local host = "192.168.254.118"
local port = 8888--19730
local c = socket.tcp()
local n,receive_status = c:connect(host, port)
c:settimeout(0)
print("connect return:",n,e)
c:send("Hello")
local function tcpSocketgetMsg()
print("receive1")
local response, receive_status=c:receive()
print("receive2")
print("receive return:",response or "nil" ,receive_status or "nil")
-- print("receive:"..response)
if response ==nil then return end
--显示这句话在屏幕
local lab=cc.Label:createWithTTF(response,"fonts/Marker Felt.ttf",28)
lab:setPosition(200,30)
local act1=cc.DelayTime:create(0)
local act2=cc.MoveBy:create(2,cc.p(0,20))
local act3=cc.FadeOut:create(2)
local function kill(obj)
obj:removeFromParent()
print("kill")
end
local actsw={act2,act3}
local act4=cc.CallFunc:create(kill)
local acts={
act1,--延时
cc.Spawn:create(actsw), --移动
act4 --消除
}
self:addChild(lab)
local act=cc.Sequence:create(acts)
lab:runAction(act)
end
local node=cc.Node:create()
self:addChild(node)
node:scheduleUpdateWithPriorityLua(tcpSocketgetMsg,0)
end
return ScoketScene
- cocos2d-Lua10网络Http&Socket编程
- ios网络编程(http、socket)
- Android 网络编程 Socket Http
- ios网络编程(http、socket)
- ios网络编程(http、socket)
- ios网络编程(http、socket)
- ios网络编程(http、socket)
- ios网络编程(http、socket)
- ios网络编程(http、socket)
- ios网络编程(http、socket)
- ios网络编程(http、socket)
- ios网络编程(http、socket)
- iOS网络编程(http、socket)
- Android 网络编程 Socket Http
- Cocos2d-x3.8.1网络编程(Socket)
- Cocos2d-x3.8.1网络编程(HTTP)
- Cocos2d-x 之 Http 网络编程
- Android网络编程之Socket&Http
- 官方文档Coroutines的应用场景
- jump game I // II
- Socket TCP聊天通讯
- UIButton Custom
- LeetCodet题解--23. Merge k Sorted Lists(合并K个已排序的链表)
- cocos2d-Lua10网络Http&Socket编程
- 一个简单的progressbar
- 汇编,浮点运算符,fldpi,fmul等指令说明。
- 利用微信平台作为飞利浦手机产品客服渠道的可行性调查
- 解决requirejs某文件加载超时问题
- 1、MongoDB的安装
- linux之NAND FLASH驱动程序
- android学习之xml解析
- BZOJ 3140: [Hnoi2013]消毒