我正在为Omnet中的WSN进行开发。我想嗅一个单播消息,但我不知道该如何在Omnet中做到这一点。我进行了一些研究,但找不到任何方法
当我将数据发送到另一个节点时,我将其作为单播发送给使用此方法:
cModule *nodeIndex = flatTopolojiModulu->getSubmodule("n", i);//n is array
sendDirect(new cMessage("msg"), nodeIndex, "in");
我正在使用sendDirect
方法,因为我在无线网络上工作。根据此描述:https://stackoverflow.com/a/36082721/5736731
sendDirect
通常在无线网络中是这种情况。
但是,当带有senddirect发送消息时,接收器节点正在处理一条消息。例如,根据上面的代码示例:
如果i=2
,发送的消息只能通过节点来处理,该节点具有索引" 2" void AnyClassName::handleMessage(cMessage *msg)
功能
可以在Omnet 手册中找到广播消息的示例。
您应该仅创建一个所有节点必须接收的消息的实例,然后将此消息的新副本发送给循环中的每个节点。DUP((方法必须用于创建消息的副本。
cMessage * msg = new cMessage("msg");
// totalN is the total number of nodes
for (int i = 0; i < totalN; ++i) {
cModule *nodeIndex = flatTopolojiModulu->getSubmodule("n", i);
sendDirect(msg->dup(), nodeIndex, "in");
}
// original message is no longer needed
delete msg;