在编程tic toc的omnet ++中,如果有三个节点并且所有节点都相互连接,那么如何将tic toc消息发送到特定节点。例如,我想先将消息发送到节点A,然后发送节点B,然后发送节点C;我将如何编码呢。
#include <string.h>
#include <omnetpp.h>
int x=0;
class computerf : public cSimpleModule
{
protected:
virtual void initialize();
virtual void handleMessage(cMessage *msg);virtual void forwardMessage(cMessage *msg);
};
Define_Module(computerf);
void computerf::initialize()
{
if (strcmp("computer1", getName()) == 0)
{
cMessage *msg = new cMessage("tictocMsg");
forwardMessage(msg);
}
}
void computerf::handleMessage(cMessage *msg)
{
{
forwardMessage(msg);
}
}
void computerf::forwardMessage(cMessage *msg)
{
// In this example, we just pick a random gate to send it on.
// We draw a random number between 0 and the size of gate `out[]'.
int n = gateSize("out");
int k = intuniform(0,n-1);
EV << "Forwarding message " << msg << " on port out[" << k << "]\n";
send(msg, "out", 1);
EV <<"n is "<<n;
}
这里的代码forwardMessage函数在随机门上发送消息,但我想在特定的门上发送消息。
这是.ned文件
simple computer
{
gates:
input in[2];
output out[2];
}
//
// TODO documentation
//
network Network
{
@display("bgb=545,242");
submodules:
A: computer {
@display("p=52,86");
}
B: computer {
@display("p=311,83");
}
C: computer {
@display("p=175,189");
}
connections:
A.out[0] --> B.in[0];
B.out[0] --> A.in[0];
A.out[1] --> C.in[1];
C.out[1] --> A.in[1];
C.out[0] --> B.in[1];
B.out[1] --> C.in[0];
}
基本上我希望节点A向节点C和节点A发送消息以同时向节点B发送消息 如果我使用hanlde消息功能 void computer :: handleMessage(cMessage * msg) {
send(msg, "out",0); //send(msg, "out",0);
} 现在这里发送(msg, “out” ,0);我想指定哪个“out”我想要发送消息到节点C然后发送到节点B但是如何?
答案 0 :(得分:2)
send(msg, "gate", index)
的第三个参数是在矢量门上发送消息时可以使用的实际门控索引。根据您的NED文件,send(msg, "out",0);
会将消息发送给B,而send(msg, "out",1);
会将消息发送给C.
答案 1 :(得分:-1)
您需要在您的ned文件中创建这些门:
RecyclerView
使用此功能您可以发送以下消息:
simple Txc
{
parameters:
@display("i=block/routing"); // add a default icon
gates:
input in1;
output out1;
input in2;
output out2;
}
network Tictoc
{
submodules:
tic: Txc {
parameters:
@display("i=,cyan");
}
toc: Txc {
parameters:
@display("i=,cyan");
}
toctic: Txc {
parameters:
@display("i=,cyan");
}
connections:
tic.out --> { delay = 100ms; } --> toc.in;
tic.in <-- { delay = 100ms; } <-- toc.out;
toctic.out2 --> { delay = 100ms; } --> toc.in2;
toctic.in2 <-- { delay = 100ms; } <-- toc.out2;
//....
}
希望这有帮助。
最佳