我的网络中有2个节点,他们有UDPBaiscApp用于它们之间的通信。节点1定期向节点2发送长度为10kb的消息。现在我想对节点1的数据大小进行约束。例如,如果节点1具有100kB数据并且它一次发送10kB,则在发送消息10次之后通信应该结束。那么如何分配节点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++;
}
}