gpt4 book ai didi

sockets - lua-socket : unix domain sockets?

转载 作者:行者123 更新时间:2023-12-03 11:49:30 28 4
gpt4 key购买 nike

我正在使用 lua-socket 3.0rc1.3(Ubuntu Trusty 附带)和 lua 5.1。我正在尝试监听 unix 域套接字,我能找到的唯一示例代码是 this

-- 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

最佳答案

据我了解,您无法使用 mkfifo (或任何命令)创建该套接字,因为它将由(监听)服务器创建。您引用的同一页面上列出了一个示例,但可能很难找到:

sock, err = s:listen([backlog|_32_])
sock, err = s:bind(path)
client_conection, err = s:accept()

基本上,您以与 TCP 相同的方式创建服务器,只是不是绑定(bind)到地址/端口,而是绑定(bind)到路径,然后开始在其上接受新连接。

关于sockets - lua-socket : unix domain sockets?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30240830/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com