我正在使用Ubuntu Trusty自带的lua-socket 3.0rc1.3和lua 5.1。我想要监听一个Unix域套接字,但我能找到的唯一示例代码是这个。
问题在于当我尝试
是否有任何关于在Unix域套接字上使用luasocket的最小工作示例?
编辑:从保罗的解决方案中,如果有人感兴趣,这里有一个MWE。
-- send stdin through unix socket
socket = require"socket"
socket.unix = require"socket.unix"
c = assert(socket.unix())
assert(c:connect("/tmp/foo"))
while 1 do
local l = io.read()
assert(c:send(l .. "\n"))
end
问题在于当我尝试
connect()
时,会出现“没有这个文件或目录”的错误 - 那么我该如何首先创建该套接字呢?mkfifo /tmp/foo
被某人推荐后,我得到了一个“连接被拒绝”的错误(我不认为fifo和域套接字是一样的东西?)。是否有任何关于在Unix域套接字上使用luasocket的最小工作示例?
编辑:从保罗的解决方案中,如果有人感兴趣,这里有一个MWE。
libsocket = require "socket"
libunix = require "socket.unix"
socket = assert(libunix())
SOCKET="/tmp/socket"
assert(socket:bind(SOCKET))
assert(socket:listen())
conn = assert(socket:accept())
while 1 do
data=assert(conn:receive())
print("Got line: " .. data)
conn:send("echo: " .. data .. "\n")
if data == "." then conn:close() return end
end