设为首页 加入收藏

TOP

Lua加入socket库支持
2014-11-24 02:01:50 来源: 作者: 【 】 浏览:0
Tags:Lua 加入 socket 支持

最近做一个项目使用了lua脚本解析器,集成了lua脚本解析器以后,加入了自己想加入的扩展函数库,如果不想继续开发或者够用的话,那个项目的调研也就到此结束了,算是浅尝则止吧。


但是后来又来了一些新的需求了,需要进行一些socket的通信,但是socket的通信编写起来就稍微有点麻烦了,所以就找了找lua扩展库,当然是开源的,发现关于socket扩展库早在几年前就已经发布了,并且几年都木有更新,估计写好也好以后,也没有什么好更新的。


http://luaforge.net/projects/


其中socket的项目名字叫做luasocket。


这个时候需要做的就是将socket.so.2.0.2 这个文件拷贝到已经编译好的lua解析器的目录下,执行./lua


这个命令,进入命令中以后,执行require("socket")这个命令,如果如下图一样的话,那么so就成功加载了。


当然至少需要将socket.so.2.0.2 修改为socket.so 这个名字



看到上面绿色的部分了吧


但是一般事情不会 这样顺利的,因为我前面不是已经说过了么 socket库编写好了以后几年都木有更新了,所以里面用的接口都是很早的lua解析器的接口,虽然socket 是fpic编译成so库,不会出现链接错误,但是lua解析在加载该so库的时候require却不含糊,少任何一个函数都会出现错误,但是知道原理以后,基本上修改起来就比较简单了。


并且要能够加载so库,在编译lua解析器的时候也不能使用 make ansi 这个编译方法,而是需要需要使用 make linux这样的编译方法。


这篇博文或者google 百度一下估计都能够解决,我唯一没有解决的是使用eclipse的cdt编译出来的出现一些莫名其妙的错误,估计还是跟ansi c编译有关,但是暂时没有找到解决方法,不过问题也不大。


这个是加入socket库的方法,而我不想每次都调用require这种方法,反正这个库也很小,所以我修改了makefile文件,将socket直接集成到了lua解析器里面了,变成了lua解析器中的基础库了


运行效果如下:



命令执行的是 ./androidlua sockettest.lua


脚本其实是下载一个百度首页的,看到http 200 OK了吧 嗯那就对了


附件没有包含源码,不是我不厚道,是公司开发的项目不方便公开,但是里面有可在ubuntu 13.04下执行的linux程序和 android 命令行下执行的程序,要是有技术交流的朋友可以给我留言。


推荐阅读


】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇用Python写一个FUSE(用户态文件.. 下一篇Java事务处理

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: