在作为 TCP 客户端运行简单的 Lua 脚本时加载模块时出错

运行以下简单的 Lua 脚本却出错了。我在 Ubuntu 上运行 Lua 5.2。

local host, port = "127.0.0.1", 80
local socket = require("socket")
local tcp = assert(socket.tcp())

tcp:connect(host, port);
--注意下方的换行符
tcp:send("GET / HTTP/1.1\r\n\r\n");

以下是错误信息:

~/learn/lua$ lua te.lua
lua: te.lua:2: module 'socket' not found:
    no field package.preload['socket']
    no file '/usr/local/share/lua/5.2/socket.lua'
    no file '/usr/local/share/lua/5.2/socket/init.lua'
    no file '/usr/local/lib/lua/5.2/socket.lua'
    no file '/usr/local/lib/lua/5.2/socket/init.lua'
    no file '/usr/share/lua/5.2/socket.lua'
    no file '/usr/share/lua/5.2/socket/init.lua'
    no file './socket.lua'
    no file '/usr/local/lib/lua/5.2/socket.so'
    no file '/usr/lib/x86_64-linux-gnu/lua/5.2/socket.so'
    no file '/usr/lib/lua/5.2/socket.so'
    no file '/usr/local/lib/lua/5.2/loadall.so'
    no file './socket.so'
stack traceback:
    [C]: in function 'require'
    te.lua:2: in main chunk
    [C]: in ?

点赞
用户3337677
用户3337677

安装软件包管理器luarocks和套接字包后,问题得以解决。

以下是页面上的命令

$ wget https://luarocks.org/releases/luarocks-2.4.1.tar.gz
$ tar zxpf luarocks-2.4.1.tar.gz
$ cd luarocks-2.4.1
$ ./configure; sudo make bootstrap
$ sudo luarocks install luasocket
$ lua
Lua 5.3.3 版权所有(C) 1994-2016 Lua.org, PUC-Rio
> require "socket"
2016-11-12 17:34:59