要么我太累了,要么我瞎了。我想用 Lua 学习网络,因此我必须安装socket
lib,所以我可以轻松地要求它,但我不知道我应该“要求”哪些文件。该示例说:
local socket = require("socket")
但正如我所说,我不知道我应该包含哪些文件,如果我使用socket.lua
它不起作用并且我得到:No files found
.
我从这里得到了库:Lua socket download
或者,还有另一种安装套接字库的方法吗?
要么我太累了,要么我瞎了。我想用 Lua 学习网络,因此我必须安装socket
lib,所以我可以轻松地要求它,但我不知道我应该“要求”哪些文件。该示例说:
local socket = require("socket")
但正如我所说,我不知道我应该包含哪些文件,如果我使用socket.lua
它不起作用并且我得到:No files found
.
我从这里得到了库:Lua socket download
或者,还有另一种安装套接字库的方法吗?
当您使用 Lua 加载模块时,require
使用包路径来确定在哪里查找模块。查看 Lua 手册的模块部分。具体来说,关于package.path
和的部分package.cpath
。
package.path:require 用于搜索 Lua 加载器(.lua 模块)
的路径 package.cpath:require 用于搜索 C 加载器(.so/.dll 模块)的路径
您可以检查当前路径是什么:
print(package.path..'\n'..package.cpath)
如果您将 LuaSocket 安装到当前包路径中的某个位置,Lua 应该能够找到并加载它。
或者,您可以在调用之前修改包路径require
。例如,如果您为项目创建一个文件夹并将 LuaSocket 库提取到libs
项目文件夹中的一个子文件夹中:
Project
|
> libs
|
> lua
|
> socket
> socket
> mime
您可以在套接字库之前设置相对于您的项目的包路径(在 Linux 上替代require
) :/?.dll
/?.so
package.path = package.path..';./libs/lua/?.lua'
package.cpath = package.cpath..';./libs/socket/?.dll;./libs/mime/?.dll'
local socket = require 'socket'
在你的 linux 系统上使用这个命令:
#luarocks install luasocket
使用下一个命令查看路径 CONFIGURATION
#luarocks
您需要使用默认的 linux 帐户(请参阅:CONFIGURATION):
$lua
> socket = require ("socket")
或使用这个:
> socket = require 'socket'