1、方法
方法 | 說明 |
msg->getName() | 獲取發送的消息名 |
uniform(a,b) | 生成[a,b]間的隨機實數 |
intuniform(a,b) | 生成[a,b]間的隨機整數 |
exponential(n) | 指數分布的隨機數 |
truncnormal(a,b) | [a,b]間的離散正態分布隨機數 |
scheduleAt(simTime()+timeout,event) | 經過時間timeout之后,發送self-message event |
cancelEvent(event) | 與scheduleAt相反,是取消自發送的消息event |
bubble("xxx") | 以彈窗的形式彈出消息xxx |
cancelAndDelete(timeoutEvent) | 釋放指針指向的空間 |
(cMessage *)msg->dup() | 獲取消息msg的副本 |
gateSize("out") | out端口的數量 |
getIndex() | 獲取當前module在module vector中的索引 |
getVectorSize() | 獲取當前module所在module vector的Size |
send(msg,"out") send(msg,"out",k) |
從out端口發送消息msg; 從k號out端口發送消息msg |
2、語句
1)創建不同名字的新消息
char msgname[20]; sprintf(msgname,"tic-%d-to-%d",src,dest); xxxMsg * msg = new xxxMsg(msgname);
2)轉發時消息跳數+1
msg->setHopCount(msg->getHopCount()+1);
3)選擇端口進行轉發
int n = gateSize("gate"); int k = intuniform(0,n-1); EV << "Forwarding message " << msg << " on gate[" << k << "]\n"; send(msg,"gate$o",k);
4)在每個節點上顯示收發包的數量
void Txc14 :: refreashDisplay() const { char buf[40]; sprintf(buf,"rcvd: %ld sent: %ld",numReceived,numSent); getDisplayString().setTagArg("t",0,buf); } //在類中聲明該函數為 virtual void refreshDisplay() const override;