如何使用ffi存储luasocket数据?

问题描述

我想使用 ffi 将 luasocket 返回的 tcp 客户端对象存储在结构中。 我试图像这样将变量存储在结构中:

ffi = require 'ffi'
socket = require("socket")

ffi.cdef[[
    
    typedef struct {
        void *Tcp;
    } ClientData;

    void* malloc(size_t);                   
    void free(void*);
]]


local Tcp = socket.bind("*",12345)

local ptr = ffi.C.malloc(ffi.sizeof("void*"))

while true do

    local NewClient,Error = Tcp:accept()

    if NewClient ~= nil then

        local ClientData = ffi.cast("ClientData(&)",ptr)
        ClientData.Tcp = NewClient

        ClientData.Tcp:send("Hello World\n")
    end

end

但我会接受这个错误

test2.lua:30: 'void *' has no member named 'send'

谁能帮帮我? 文档说 lua 用户数据可以存储在 c 中的 void* 中。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)