OMNeT 例程 Tictoc13 學習筆記
阿新 • • 發佈:2021-01-25
從 Tictoc13 開始,難度加大。
首先派生 cMessage 子類 TicTocMsg13:
message TicTocMsg13
{
int source; //源地址
int destination; //目的地址
int hopCount = 0; //跳數
}
編譯(build project)會自動生成 tictoc13_m.h 和tictoc13_m.cc 檔案。
TicTocMsg13 *ttmsg = check_and_cast<TicTocMsg13 *>(msg);
這是將訊息型別強制轉換為 TicTocMsg13 *。
為了方便理解,把目的地址輸出:
TicTocMsg13 *Txc13::generateMessage()
{
// Produce source and destination addresses.
int src = getIndex(); // our module index
int n = getVectorSize(); // module vector size
int dest = intuniform(0, n-2);
EV << dest << "\n"; // add by myself
if (dest >= src)
dest++;
char msgname[20];
sprintf(msgname, "tic-%d-to-%d", src, dest);
把跳數輸出:
void Txc13::forwardMessage(TicTocMsg13 *msg)
{
// Increment hop count.
msg->setHopCount(msg->getHopCount()+1);
EV << msg->getHopCount() << "\n" ; // add by myself
初始化結果如下:目的地址是 4,但是目的地址大於源地址,所以目的地址 4+1=5。
輸出跳數:
第一次傳輸從源地址 tic[0] 到目的地址 tic[5] 一共經歷了 17 跳。
第二次傳輸從源地址 tic[5] 到目的地址 tic[0] 一共經歷了 11 跳。
第三次傳輸從源地址 tic[0] 到目的地址 tic[3] 一共經歷了 45 跳。
……