首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >基于UDP的OMNeT++和INET无线通信

基于UDP的OMNeT++和INET无线通信
EN

Stack Overflow用户
提问于 2017-02-21 15:03:32
回答 1查看 877关注 0票数 2

我有以下场景:3台无线主机H1、P1和P2 (类WirelessHost),其中H1主机有一个定制的UDP应用程序,而P1和P2使用UDPEchoApp。

其思想是,H1向其他两个节点发送消息,但以预定的方式发送消息,例如,H1向P1发送消息并等待P1回显,只有在接收到来自P1的回声时,才能将消息发送给P2。

我的问题是:我如何才能获得这种行为?我能够向P1和P2发送消息,但我不知道如何告诉H1在发送到P2之前等待P1回复。

也是关于ARP的另一个问题。我现在使用的是arpType = GlobalARP,但我想知道,如何避免H1发送ARP请求?我怎样才能告诉H1在哪里可以找到某些主机?

由于网络层并不是真正必要的,是否可以忽略它并使用它将消息从应用层转发到MAC,然后由MAC负责查找正确的目的地地址?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-02-22 13:34:23

  1. 您可以通过引入一个简单的状态机来实现这种行为。只需在UDP应用程序的类中添加一个新变量,例如: int状态;// 0-开始,1-等待P1响应, 向P1发送数据包后,设置此变量: 状态= 1; 然后在handleMessageWhenUp()中添加一个附加条件,例如: void::handleMessageWhenUp(cMessage *msg) { if (!msg->isSelfMessage() & msg->getKind() == UDP_I_DATA) { if (state == 0) { //…} == (== 1) { //采取源地址cPacket *pk = PK(msg);UDPDataIndication *ctrl = check_and_cast(pk->removeControlInfo());L3Address srcAddress = ctrl->getSrcAddr();//检查srcAddress是否等于P1地址// if等于: // 1)将数据包发送到P2 // 2) set state =2 //如果srcAddress不等于P1 },则如果(P1 == 2) { // .}
  2. globalARP使用一个由网络中所有主机共享的静态表。在初始化过程中,每个主机都会在这个表中插入自己的地址。因此,初始化后,表包含所有地址。拥有arpType = GlobalARP的主机从不发送ARP请求,而不是发送它只是在这个表中查找条目。
  3. 网络层为UDP应用程序透明地工作。IPv4NetworkConfigurator的一个实例为所有需要它们的接口分配地址。因此,您不需要为网络层做任何其他事情。
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42370895

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档