关于luasocket的编译和部署

  • lua语言是一门轻量级、可扩展、使用方便的脚本语言,近年来在很多领域得到了广泛的使用,特别是在游戏领域,很多服务器和客户端引擎都选择使用lua来做扩展。同时lua自出生以来受到很多开发者的青睐,并为之开发了很多扩展库,例如lfs、luasql、redis-lua、luasocket、luajson等都得到了广泛的使用。

  • 其中luasocket主要是提供网络方面的扩展,提供了包括tcp、udp、http、ftp、smtp等协议的支持,并且支持跨平台。使用它能够很容易的在lua进行网络程序的开发,本文主要讲解一下如何编译和部署luasocket。

  • 首先,我们需要下载源码。
    • 下载地址:http://files.luaforge.net/releases/luasocket/luasocket
      如果是windows,可以直接下载luasocket-2.0-beta2-win32,里面有编译好的dll文件,使用了是lua5.1。但是如果需要使用luajit,那么则需要下载源码编译。下载luasocket-2.0.2则是源码。
  • 编译luasocket的源码。
    • winddows:解压后里面有vs的工程,打开sln文件,修改一下lua的头文件路径和lib路径,然后可以直接编译。产生socket.dll和mime.dll。
    • linux:
      1、wget http://pkgs.fedoraproject.org/repo/pkgs/lua-socket/luasocket-2.0.2.tar.gz
      2、tar -zxvf ./luasocket-2.0.2.tar.gz
      3、cd luasocket-2.0.2
      4、修改config文件,添加lua的头文件路径。LUAINC=-Ilua-5.1.1/src
      5、make,会在src目录产生socket.so和mime.so。
  • 部署luasocket,部署其实比较简单,这里说一下如何扩展
    • 首先,需要有lua的运行环境,就是需要能够运行lua。
    • 其次,库文件的存放有规则,soket.dll(so)需要放在宿主程序目录下socket的目录中,并改名为core.dll(so),mime.dll(so)需要放在宿主程序目录下mime的目录中,并改名为core.dll(so)。(注:之所以需要这样,是因为在socket.lua里面加载c库使用了require(socket.core),利用了lua加载库的一个特性,lua加载完库后会检查库里面是否存在luaopen_xxx_xx的入口函数,其中的xx就是路径的名字,比如socket.dll里面的入口函数就是luaopen_socket_core,所以这样加载会默认调用入口函数,后面我会再介绍一下如何手动加载入口函数。)。
    • 再次,将源码包内的lua文件放到自己的脚本目录,并按存放路径require,然后在使用的地方require(module name)或者使用module name调用接口。示例代码如下:
--加载luasocket,这里按照实际路径包含。
require "script.socket.socket"
require "script.socket.ltn12"
require "script.socket.mime"
--调用接口,使用包名(module name)
local socket = require("socket")
socket.connect(...)
  • 介绍一下手动加载入口函数的方法,就是使用用lualib的方式,用代码来加载,示例代码如下:
--入口初始化函数
function luasocket_init()   
    --第一个参数是dll或者so库文件名,第二个参数是入口函数名称
    local open_function, code = package.loadlib("socket", "luaopen_socket_core")
    if open_function then
        return open_function()
    end
    error("luasocket init failed because:%s", code)
end
--调用入口函数
local socket = luasocket_init()

好了,luasocket的编译和部署就讲完了,做完上面这些步骤,就可以用luasocket来编写网络程序了。


首次使用MarkDown编辑器写博客,总体说来效果还可以,比以前的方式要好很多,不过和wiki的语法比起来,还是感觉比较繁琐,最不习惯的就是没有缩进支持,也可能是我没找到,编辑起来怪怪的,希望csdn能够改进吧。

  • 2
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值