有没有办法在Omnet上嗅探/听单播数据包/消息



我正在为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;

最新更新