花了两三天时间来学习luasocket,调试通过,运行正常,于是发文分享。
说明:文中的代码其实都是伪代码,只表明了思路,我并没有把调试通过的代码直接放上来。
准备工作
如何加载
luasocket官方文档http://w3.impa.br/~diego/software/luasocket/introduction.html,说的是使用require('socket');
不过经过测试,其实在cocos2d-x中,应该使用require('socket.core');才可以。
实际使用时我用的是local socket = require('socket.core');
版本
socket._VERSION取得的值是“LuaSocket 3.0-rc1”,这比luasocket官方网站的版本(2.0.2)还要新。不过一圈实验下来,官方文档所描述的接口也都可用,没有体会到哪里有变化。
正题
1. 首先是创建socket,这使用socket.tcp()即可。
local clientSocket = socket.tcp();
clientSocket:settimeout(0);
注意我刚创建了socket就立刻设置timeout为0。这样一来,当我调用connect连接服务器的时候就不会导致整个游戏卡住了。
由于手机是作为游戏客户端,所以socket主要就是connect、send、receive这三个函数,外加select。至于bind、accept,这些是用在服务端的,我并没有花心思去体会。
2. 连接服务器。