-3

私は現在このコードを持っています:

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++で実行する必要があります。誰かが私を助けてくれたり、私を始めさせたりすることができれば、それを作ろうとするとうまくいかないので、私は少し混乱しています、ありがとう。

私はすでにソケットをコーディングしています。

4

2 に答える 2

1

Lua を C/C++ と統合することはできませんか? この言語は、C/C++ と簡単に統合できるように構築されており、ゲーム開発では非常に一般的な方法です。を使用することをお勧めしますluabind。Lua版のboost::pythonライブラリです。リンク: vhttp://www.rasterbar.com/products/luabind.html

于 2012-06-22T05:42:59.493 に答える
0

C++の標準テンプレート ライブラリに精通していますか? おそらく、あなたがしようとしていることを達成するのに役立つかもしれないコンテナタイプがたくさんあります.

私には、メンバー変数「IP」、「PORT」などを含む「Packet」構造体またはクラスを実装することによって、あなたがしていることは達成されるように見えます。

次に、それらを保存して ID でアクセスする場合は、ID 番号からパケットにマップするstl::mapを作成できます。

または、パケットによくあることですが、最終的にはstl::queueを使用して先入れ先出し方式で格納することをお勧めします。キューを使用すると、それらは入れたのと同じ順序で出てくるので、パケット 1、2、3 をキューに入れ、後でそのうちの 2 つにアクセスすると、パケット 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 に基づいて特定のパケットを検索する必要が本当にない限り、私は驚くほど高速なキューを使用します。

于 2012-06-22T06:00:42.030 に答える