将 Lua 代码转换为C++
Convert Lua code to C++
我目前有这段代码:
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查找特定数据包,否则我会坚持使用队列,它可以非常快。
相关文章:
- 防止主数据类型C++的隐式转换
- 模板参数替换失败,并且未完成隐式转换
- 努力将整数转换为链表。不知道我在这里做错了什么
- HEX值到wchar_t字符(UTF-8)的转换
- lambda参数转换为constexpr技巧,然后获取带链接的数组
- 将 Qvector<uint8_t> 转换为 QString
- 如何在cuSparse中使用cusparseXcoo2csr从coo转换为csc
- 有关插入适配器的错误。[错误]请求从 'back_insert_iterator<vector<>>' 类型转换为非标量类型
- 在c++中使用nlohmann从类到json的转换
- 从"int*"强制转换为"unsigned int"会丢失精度错误
- 将Integer转换为4字节的unsined字符矢量(按大端字节顺序)
- 处理小于cpu数据总线的数据类型.(c++转换为机器代码)
- 如何使用OpenCV将RBG图像转换为HSV,并将H、S和V值保存为C++中的3个独立图像
- 复制列表初始化的隐式转换的等级是多少
- 正在将指针转换为范围
- 如何防止 c++ 在从浮点型转换为双精度型(不适用于 IO)时添加额外的小数?
- 将"打开的CV图像"中的"颜色"转换为整数格式
- 是否可以从int转换为enum类类型
- 了解 GLM- openGL 中的相机转换
- 将无符号char*转换为std::istream*C++