Lua如何从Unix文件套接字中读取数据

我真的很难从现有的Unix文件套接字连接和读取数据。

套接字已存在,模式为+rwx,并应返回一个不带换行符的JSON单行文件。

(在基于Debian的系统上,例如'ncat -U / run / fastd.supernode.sock',我可以轻松地读取套接字)

当我尝试在嵌入式设备TP-Link841v11-ND Mips(OpenWRT / LEDE路由器上的Fastd Socket)上解决它时,主要只有lua(和luasocket)可用。 我走了这么远

$ lua
> socket = require"socket"
> socket.unix = require"socket.unix"
> getme = socket.unix("/var/run/fastd.mesh_vpn.socket")
> print(getme:receive())
stdin:1: calling 'receive' on bad self (unix{client} expected, got userdata)
stack traceback:
    [C]: in function 'receive'
    stdin:1: in main chunk
    [C]: ?

解决方案,对于那些有类似问题的人

(如[https://forum.freifunk.net/t/connect-fastd-socket-on-tp841v11-fastd-statistiken/13499]所述)

(每次想要读取套接字时都需要重新连接)

$ lua
> require "socket"
> require "socket.unix"
> c = socket.unix()
> c:connect("/var/run/fastd.mesh_vpn.socket")
> print(c:receive())
点赞
用户1442917
用户1442917

你缺少了几个命令;有关更详细的信息,请参见此 SO 答案此邮件列表讨论的完整示例。

2016-09-10 06:44:43