Saya telah menemukan kode berikut di OMNET++.

void Mac::sendDataPacket()
{
    nbTxDataPackets++;
    if (currentTxFrame == nullptr)
        popTxQueue();
    auto packet = currentTxFrame->dup();
    const auto& hdr = packet->peekAtFront<MacHeaderBase>();
    lastDataPktDestAddr = hdr->getDestAddr();
    attachSignal(packet, simTime());
    sendDown(packet);
}

Adakah yang bisa memberi tahu saya apa fungsi dari perintah di bawah ini?

const auto& hdr = packet->peekAtFront<MacHeaderBase>();
lastDataPktDestAddr = hdr->getDestAddr();

Terima kasih

0
1118716 1 Juli 2020, 14:21

1 menjawab

Jawaban Terbaik

Packet di INET adalah struktur data yang mewakili paket nyata (misalnya datagram UDP, paket IP, Frame Ethernet, dll.). Sebuah instance dari Packet mungkin berisi struktur lain di dalamnya. Untuk mendapatkan data di awal Packet fungsi popAtFront() dapat digunakan. Ini menghapus data itu dari instance Packet. Namun, terkadang ada kebutuhan untuk memeriksa struktur di awal sebuah Paket tanpa menghapusnya. Dalam situasi itu peekAtFront() dapat digunakan. Jadi garisnya:

packet->peekAtFront<MacHeaderBase>();

Mengembalikan struktur data pertama di awal packet - tanpa menghapusnya. Kemudian struktur dicor ke MacHeaderBase.
Meringkas: baris itu memungkinkan memeriksa apakah packet berisi bingkai MAC.

Referensi: Panduan Pengembang INET - Bekerja dengan Paket.

1
Jerzy D. 1 Juli 2020, 19:44