LuaSocket
Network support for the Lua language

home · download · installation · introduction · reference


Installation

Here we describe the standard distribution. If the standard doesn't meet your needs, we refer you to the Lua discussion list, where any question about the package scheme will likely already have been answered.

Directory structure

On Unix systems, the standard distribution uses two base directories, one for system dependent files, and another for system independent files. Let's call these directories <CDIR> and <LDIR>, respectively. For example, in my laptp, Lua 5.1 is configured to use '/usr/local/lib/lua/5.1' for <CDIR> and '/usr/local/share/lua/5.1' for <LDIR>. On Windows, <CDIR> usually points to the directory where the Lua executable is found, and <LDIR> points to a lua/ directory inside <CDIR>. (These settings can be overridden by environment variables LUA_PATH and LUA_CPATH. See the Lua documentation for details.) Here is the standard LuaSocket distribution directory structure:

<LDIR>/ltn12.lua
<LDIR>/socket.lua
<CDIR>/socket/core.dll
<LDIR>/socket/http.lua
<LDIR>/socket/tp.lua
<LDIR>/socket/ftp.lua
<LDIR>/socket/smtp.lua
<LDIR>/socket/url.lua
<LDIR>/mime.lua
<CDIR>/mime/core.dll

Naturally, on Unix systems, core.dll would be replaced by core.so.

Alternatively, you can build and install LuaSocket using vcpkg dependency manager:

git clone https://github.com/Microsoft/vcpkg.git
cd vcpkg
./bootstrap-vcpkg.sh
./vcpkg integrate install
./vcpkg install luasocket
The luasocket port in vcpkg is kept up to date by microsoft team members and community contributors. If the version is out of date, please create an issue or pull request on the vcpkg repository.

Using LuaSocket

With the above setup, and an interpreter with shared library support, it should be easy to use LuaSocket. Just fire the interpreter and use the require function to gain access to whatever module you need:

Lua 5.2.2  Copyright (C) 1994-2013 Lua.org, PUC-Rio
> socket = require("socket")
> print(socket._VERSION)
--> LuaSocket 3.0-rc1

Each module loads their dependencies automatically, so you only need to load the modules you directly depend upon:

Lua 5.2.2  Copyright (C) 1994-2013 Lua.org, PUC-Rio
> http = require("socket.http")
> print(http.request("http://www.impa.br/~diego/software/luasocket"))
--> homepage gets dumped to terminal