使用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 *'没有名为'send'的成员

有人可以帮帮我吗?文档中说lua userdata可以存储在void*中。

点赞