11

要么我太累了,要么我瞎了。我想用 Lua 学习网络,因此我必须安装socketlib,所以我可以轻松地要求它,但我不知道我应该“要求”哪些文件。该示例说:

local socket = require("socket")

但正如我所说,我不知道我应该包含哪些文件,如果我使用socket.lua它不起作用并且我得到:No files found.

我从这里得到了库:Lua socket download

或者,还有另一种安装套接字库的方法吗?

4

2 回答 2

14

当您使用 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'
于 2012-04-27T22:52:47.323 回答
2

在你的 linux 系统上使用这个命令:

#luarocks install luasocket

使用下一个命令查看路径 CONFIGURATION

#luarocks 

您需要使用默认的 linux 帐户(请参阅:CONFIGURATION):

$lua 
> socket = require ("socket")

或使用这个:

> socket = require 'socket'
于 2017-12-03T16:39:58.060 回答