我有以下场景: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负责查找正确的目的地地址?
发布于 2017-02-22 13:34:23
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) { // .}globalARP使用一个由网络中所有主机共享的静态表。在初始化过程中,每个主机都会在这个表中插入自己的地址。因此,初始化后,表包含所有地址。拥有arpType = GlobalARP的主机从不发送ARP请求,而不是发送它只是在这个表中查找条目。IPv4NetworkConfigurator的一个实例为所有需要它们的接口分配地址。因此,您不需要为网络层做任何其他事情。https://stackoverflow.com/questions/42370895
复制相似问题