現在MANETプロジェクトで作業していて、MANETで受信したメッセージを直ちに破棄する利己的なノードを模倣するカスタマイズされた無線ホストを作成したいと考えています。次のように 私はSelfishNode.NEDと呼ばれる簡単なモジュール、コードを作成しました:OMNET ++ RandomWPモビリティでAODVRouterを拡張するワイヤレスホストをカスタマイズする方法
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. [次へ]を、I AODVRouterを拡張snode.NEDと呼ばれる化合物のモジュールを作成し、コードは次のように
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"
は、この正しいですか? また、シミュレーションを実行すると、ノードはまったく動かなかった。私は一日中勉強しましたが、それを解決できませんでした。
Thanks MichaelKirsche。今度はAODVRouting.ccのすべての関数を継承したいが、C++ファイルの自分のコードでAODVRouting :: sendAODVPacket()関数をオーバーライドしたい。どうやってやるの?私はCに次のコードで "再定義のhandleMessageの" エラーを得た++ファイル: **無効AODVRouting :: sendAODVPacket(AODVControlPacket *パケット、constのL3Address&DESTADDR、unsigned int型のTimeToLive、二重の遅延) { EV <<「受信したメッセージ'" << msg-> getName()<< "'、今すぐメッセージをドロップします。\ n"; msgを削除します。 } ** – badman
新しい質問を投稿し、別の質問の下でコメントするよりも正しくフォーマットするのがよいです... –