NS3/NS2怎麼創建包和發送包

  在NS3協議設計中,數據包的發送和創建是基礎, 熟悉了包的相關操作,進行後續協議就會簡單很多。拿 wifi-example-apps應用設計代碼中包創建爲例。

  1. 調用packet類創建一個給定大小的包:
  2. 打上時間戳,接收機可用時間戳用來進行相關計算(時延,生存時間)
  3. 調用Socket套接字,裏面有SendTo函數用來數據包發送。
  4. 如果發送的數據包沒有到達設定數目,產生隨機中斷觸發事件發送數據包。

  

void Sender::SendPacket (){     Ptr<Packet> packet = Create<Packet>(m_pktSize);//創建數據包     
TimestampTag timestamp; //時間戳    
 timestamp.SetTimestamp (Simulator::Now ());  
   packet->AddByteTag (timestamp);//給數據包打上時間戳  
  m_socket->SendTo (packet, 0, InetSocketAddress (m_destAddr, m_destPort));//發送數據包,地址和端口   
  m_txTrace (packet); //記錄trace  
  if (++m_count < m_numPkts) {   
   m_sendEvent = Simulator::Schedule (Seconds (m_interval->GetValue ()),
   &Sender::SendPacket, this);//設計中斷髮送數據包  
          }
}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章