将 Lua 代码转换为C++

Convert Lua code to C++

本文关键字:C++ 转换 代码 Lua      更新时间:2023-10-16

我目前有这段代码:

PACKETS = {};
function AddPacket(data)
    local id = data.ID;
    PACKETS[id] = {
    data.IP,
    data.PORT,
    data.PACKET,
    data.SOURCEIP,
    data.SOURCEPORT,
    data.PPMS};
end
function RemovePacket(id)
    PACKETS[id] = nil;
end
function LoopedThread()
    for k,v in pairs(PACKETS) do
        for i=1, v.PPMS do
            SendPacket(v.IP, v.PORT, v.PACKET, v.SOURCEIP, v.SOURCEPORT);
        end
    end
    Sleep(1);
end
这是在lua中完成的

,但是我需要在C++中完成此操作。我有点困惑,因为我在尝试制作它时无法让它工作,如果有人可以帮助我甚至让我开始,谢谢。

我已经对套接字进行了编码。

你不能将Lua与C/C++集成吗?这种语言是为了与 C/C++ 轻松集成而构建的,这在游戏开发中非常普遍。我建议您使用luabind.这是boost::python库的Lua版本。链接: vhttp://www.rasterbar.com/products/luabind.html

您是否熟悉 C++ 中的标准模板库?它可能有一堆容器类型,可以帮助您完成正在尝试的操作。

对我来说,看起来您正在做的事情是通过实现包含成员变量"IP"、"PORT"等的"数据包"结构或类来完成的。

然后,如果您想存储它们并通过它们的 ID 访问它们,您可以创建一个从 ID 号映射到数据包的 stl::map。

或者,与数据包一样,您最终可能希望以先进先出的方式存储它们,这可以通过 stl::queue 来完成。 在队列中,它们以您放入它们的相同顺序出现,因此,如果您将数据包 1、2 和 3 排队,然后访问其中两个,您将按该顺序获得数据包 1 和 2,并且 3 仍将留待以后使用。

我的C++很生疏,但我正在考虑这样的事情:

struct Packet {
    char* ip;
    short port;
    // ... etc ...
}
stl::queue<Packet> packet_buffer;
void AddPacket(const Packet& packet_in) {
    packet_buffer.push(packet_in);
}
void RemoveLastPacket() {
    packet_buffer.pop();
}
void LoopedThread() {
    while (!packet_buffer.empty()) {
        SendPacket(packet_buffer.front());
        RemoveLastPacket();
    }
}

你可以用地图做类似的事情,但它会更慢,效率更低。除非您真的需要根据其ID查找特定数据包,否则我会坚持使用队列,它可以非常快。