cocos2d-x quick3.3 中使用socket

quick3.3中自己封装了一个socket,源代码在framework下的cc目录下有个net目录,里面封装了一个SocketTCP这个Socket提供的方法还比较多具体的自己去看源码,我这里就说几个比较常用的方法;

需要使用这个SocketTCP首先要先声明:可以在MyApp下使用这句代码声明

SocketTCP = require("framework.cc.net.SocketTCP")

声明之后就可以使用了,不声明会报空错误!

之后你就可以在其它lua文件中使用这个SocketTCP了;

接下来配置操作了:

	self.socket = SocketTCP.new("192.168.2.34", 900, false)
	self.socket:connect("192.168.2.34", 900, false)

这样你就已经已经连接到192.168.2.34去了!前面两个参数就不说了,最后那个参数是是否重新连接的意思!具体的可以自己试试,把最后那个参数设置true和false,对比先运行quick再运行服务器的情况你就知道了。

连接上去之后就可以用

<pre name="code" class="plain">self.socket:send(__data)
 发送消息了!这个发送消息不说说说这个接收消息: 

这里接收消息我不明白它为什么这样做,这个消息他是用广播发出的(我习惯叫它广播)在SocketTCP这个类中的ctor()函数里面有一段这样的代码:

cc(self):addComponent("components.behavior.EventProtocol"):exportMethods()


这个就是声明广播的代码,发送广播则是dispatchEvent()

可以看到SocketTCP下的_onConnected方法有这样的一段代码:

self:dispatchEvent({name=SocketTCP.EVENT_DATA, data=(__partial or __body), partial=__partial, body=__body})
这段代码就是发送广播消息的代码!第一个参数为广播的标识符,后面的就不说了,已经说得很清楚了!

接收消息的代可以这样使用:

定义函数接收

self.socket:addEventListener(SocketTCP.EVENT_DATA, handler(self,self.recv))
接收函数:

function socketrecvd:recv( event )
	-- body
	print("socketrecvd")
	for v , k in pairs(event) do
		print(k)
	end
end
这里只是把广播出来的消息接收了然后显示出来!

源码里面还有其他的函数挺有用的!例如_connect这个方法

这个方法它有解释

--- When connect a connected socket server, it will return "already connected"
-- @see: http://lua-users.org/lists/lua-l/2009-10/msg00584.html
自己去看!

还有很多方法,自己去看!


我是在两个类都接收了它返回的数据:

结果如下:


完整代码:

--
-- Author: killer
-- Date: 2015-01-19 23:23:48
--

local socketcon = class("socketcon", function ()
	-- body
	return display.newScene("socketcon")
end)
function socketcon:ctor()
	-- body
	self.socket = SocketTCP.new("192.168.2.34", 900, true)
	self.socket:connect("192.168.2.34", 900, true)
	-- self.socket:send("nihao")
	-- socket接收数据
	self.socket:addEventListener(SocketTCP.EVENT_DATA, handler(self, self.recvData))
	-- display.replaceScene(require("app.socket.socketrecvd").new(self.socket) , "fade" , 0.6)


end

function socketcon:recvData(event)
	-- body
	self.socket:send("nihao")
	print("socketcon")
	for v , k in pairs(event) do
		print(k)
	end

end
function socketcon:onEnter()
	-- body
end
return socketcon


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值