2017-07-12 38 views
1

延伸AODVRouter我目前工作的一個MANET項目,並希望創建一個定製的無線主機模仿自私節點,將立即刪除它接收的MANET消息的無線主機。 我已經創建稱爲SelfishNode.NED一個簡單的模塊,代碼如下:OMNET ++如何自定義與RandomWP移動

simple SelfishNode { 
parameters: 
@display("i=block/buffer"); 

gates: 
    input radioIn[numRadios] @directIn; 
    inout pppg[] @labels(PPPFrame-conn); 
    inout ethg[] @labels(EtherFrame-conn); 
} 

2.然後,我創建其C++文件用下面的代碼:

#include "SelfishNode.h" 
#include <string.h> 
#include <omnetpp.h> 

void SelfishNode::initialize() 
{ 

} 

void SelfishNode::handleMessage(cMessage *msg) 
{ 
delete msg; 
} 

3.接下來,我創建名爲snode.NED化合物模塊延伸AODVRouter,代碼如下:

import inet.node.aodv.AODVRouter; 

    module snode extends AODVRouter 
    { 
    parameters: 
    @networkNode; 
    @display("i=device/wifilaptop"); 
    @labels(wireless-node); 

    submodules: 
     bad: SelfishNode { 
     @display("p=273,350"); 
     } 
    } 
  • 接着,我創建了一個所謂ManetA.NED etwork模塊:

    import inet.common.figures.DelegateSignalConfigurator; 
    import inet.networklayer.configurator.ipv4.IPv4NetworkConfigurator; 
    import inet.physicallayer.ieee80211.packetlevel.Ieee80211ScalarRadioMedium; 
    import inet.visualizer.integrated.IntegratedCanvasVisualizer; 
    import inet.environment.common.PhysicalEnvironment; 
    
    network ManetA 
    { 
    parameters: 
    int numHosts; 
    int numBadNodes; 
    
    submodules: 
    visualizer: IntegratedCanvasVisualizer { 
        @display("p=59,103"); 
    } 
    configurator: IPv4NetworkConfigurator { 
        @display("p=59,164"); 
    } 
    radioMedium: Ieee80211ScalarRadioMedium { 
        @display("p=60,50,i=misc/sun"); 
    } 
    figureHelper: DelegateSignalConfigurator { 
        @display("p=61,236"); 
    } 
    
    hostBad[numBadNodes]: snode { 
        @display("i=device/palm"); 
    } 
    
    physicalEnvironment: PhysicalEnvironment { 
        @display("p=59,306"); 
        } 
    } 
    
  • 最後,我配置了移動式和壞節點的omnetpp.ini數量如下:

    *.numBadNodes = ${HOST=5} 
    *.hostBad.mobilityType = "inet.mobility.single.RandomWPMobility" 
    
  • 這是正確的嗎? 而且還當我運行模擬,節點根本不動。我研究了整整一天,但無法解決它。

    回答

    1

    幾乎正確的......如果你在INET命名空間中運行,則不需要提供移動模塊的全名,當你設置mobilityType

    **.hostBad.mobilityType = "RandomWPMobility" 
    

    檢查例子CONFIGS在/inet/examples/mobility/omnetpp.ini爲更多細節。

    +0

    感謝MichaelKirsche。現在,我想繼承AODVRouting.cc所有功能,但覆蓋AODVRouting :: sendAODVPacket()函數在C++文件我自己的代碼。我怎樣才能做到這一點?我在我的C++文件中用下面的代碼得到了「對handleMessage的重定義」錯誤: ** void AODVRouting :: sendAODVPacket(AODVControlPacket * packet,const L3Address&destAddr,unsigned int timeToLive,double delay) { EV <<「Received message '」 << msg->的getName()<< 「」,現在丟棄郵件\ n」; 刪除味精; } ** – badman

    +0

    更好的發佈一個新的問題,比在另一個問題意見正確格式化... –