Veins 示例中的消息广播
Broadcasting of Messages in Veins example
我注意到在 Veins 演示场景中,一个节点将它创建的数据消息广播到模拟中的每个其他节点。
我试着修改了一下。我通过使用 setRecipientAddress()
函数初始化 WSM
中的收件人地址来修改 TraCIDemo11p.cc
文件中的 sendMessage()
函数。但是在运行模拟Veins 3.0
的时候,我发现这个消息还在广播给除了目标节点之外的所有节点。
- 如何实现这个 p2p 连接?
- 我如何通过向场景添加 RSU 来进行概括以实现 异构通信框架 ?
在其基础上,802.11p 标准是车辆通信的主要通信标准(也是 Veins 中使用的标准),进行广播。
所以基本上,无论你通过 802.11p 网络接口发送什么,它都会被广播,但是你可以通过 "source-destination checking" 来自框架。
您可以扩展 WaveShortMessage
以包含特定于您的应用程序的 Source 和 Destination 字段,然后执行检查是否目的地正在从预期的发件人处接收。
假设我们有两个节点 nodeSender
和 nodeReceiver
想要通信。
nodeSender
需要在消息中包含自己的标识符(名称、ID 等):
msgToSend->setSourceAddress("nodeSender")
nodeReceiver
需要检查它 "hears" 的邮件是否来自预期的发件人。因为实际上由于 80211p
的广播性质,它会收到多个发送者的消息
if(receivedMsg->getSourceAddress() == 'nodeSender')
{
/* this is the message which I need */
else
{
/* do nothing with the message from other senders */
}
您可以使用车辆 SUMO id 作为地址的唯一标识符。您可以通过查询 TraCIMobility
模块获得:
cModule *tmpMobility = getParentModule()->getSubmodule("veinsmobility");
mobility = dynamic_cast<Veins::TraCIMobility*>(tmpMobility);
ASSERT(mobility);
mySumoID = mobility->getExternalId();
我注意到在 Veins 演示场景中,一个节点将它创建的数据消息广播到模拟中的每个其他节点。
我试着修改了一下。我通过使用 setRecipientAddress()
函数初始化 WSM
中的收件人地址来修改 TraCIDemo11p.cc
文件中的 sendMessage()
函数。但是在运行模拟Veins 3.0
的时候,我发现这个消息还在广播给除了目标节点之外的所有节点。
- 如何实现这个 p2p 连接?
- 我如何通过向场景添加 RSU 来进行概括以实现 异构通信框架 ?
在其基础上,802.11p 标准是车辆通信的主要通信标准(也是 Veins 中使用的标准),进行广播。
所以基本上,无论你通过 802.11p 网络接口发送什么,它都会被广播,但是你可以通过 "source-destination checking" 来自框架。
您可以扩展 WaveShortMessage
以包含特定于您的应用程序的 Source 和 Destination 字段,然后执行检查是否目的地正在从预期的发件人处接收。
假设我们有两个节点 nodeSender
和 nodeReceiver
想要通信。
nodeSender
需要在消息中包含自己的标识符(名称、ID 等):
msgToSend->setSourceAddress("nodeSender")
nodeReceiver
需要检查它 "hears" 的邮件是否来自预期的发件人。因为实际上由于 80211p
if(receivedMsg->getSourceAddress() == 'nodeSender')
{
/* this is the message which I need */
else
{
/* do nothing with the message from other senders */
}
您可以使用车辆 SUMO id 作为地址的唯一标识符。您可以通过查询 TraCIMobility
模块获得:
cModule *tmpMobility = getParentModule()->getSubmodule("veinsmobility");
mobility = dynamic_cast<Veins::TraCIMobility*>(tmpMobility);
ASSERT(mobility);
mySumoID = mobility->getExternalId();