Omnet ++:设置要从一个节点传输到另一个节点的总消息长度

时间:2016-02-03 14:04:42

标签: omnet++

我的网络中有2个节点,他们有UDPBaiscApp用于它们之间的通信。节点1定期向节点2发送长度为10kb的消息。现在我想对节点1的数据大小进行约束。例如,如果节点1具有100kB数据并且它一次发送10kB,则在发送消息10次之后通信应该结束。那么如何分配节点1可以拥有的最大数据呢?

1 个答案:

答案 0 :(得分:1)

您可以通过多种方式实现这一目标,例如:

1)在类UDPBasicApp定义中添加两个变量:

long alreadySentBytes;
long limitBytes;

2)在UDPBasicApp::initialise()填充初始值:

alreadySentBytes = 0;
limitBytes = 100 * 1024; // 100KB

3)在UDPBasicApp::sendPacket()中进行以下修改:

void UDPBasicApp::sendPacket()
{
  if (alreadySentBytes < limitBytes) {
    std::ostringstream str;
    str << packetName << "-" << numSent;
    cPacket *payload = new cPacket(str.str().c_str());
    payload->setByteLength(par("messageLength").longValue());
    alreadySentBytes += par("messageLength").longValue();
    L3Address destAddr = chooseDestAddr();

    emit(sentPkSignal, payload);
    socket.sendTo(payload, destAddr, destPort);
    numSent++;
  }
}