如何解决如何从 INET 中的块中获取特定信息?
我必须计算我的应用程序中的延迟,所以我需要我在数据包中插入一个块的数据包的生成时间。但是,当我收到数据包时,我不知道如何从块中选择生成时间。
这是块。
class AppPacket extends FieldChunk {
simtime_t appGenPacket;
int seqNo;
}
这是传输函数。
auto data = makeShared<ByteCountChunk>(B(payload));
Packet *pkt=new Packet("DataPacket",data);
auto pktData = makeShared<AppPacket>();
pktData->setAppGenPacket(simtime());
pkt->insertAtBack(pktData);
send(pkt,"lowerLayerOut");
现在,当我收到数据包时,我必须让 appGenPacket 来计算延迟,但我不知道要这样做。请帮帮我!
解决方法
在接收端,您只需查看/弹出(例如 pop<AppPacket>()
)具有适当类型的块。
但这不是为数据包流生成统计数据的方式。这种方法要求您修改应用程序级别的数据包并添加一个仅由统计模块使用的字段(在现实世界中不存在)。您可以将数据包标签和数据包区域标签添加到数据包(或数据包的一部分)中,这是沿数据包或数据包中的单个位传输的元数据信息.在接收端,您可以查询附加的标签并将其用于统计数据。 (请参阅最新 INET 版本中的 TimeTag)
更好的是,INET 已经拥有测量数据包流延迟的工具(它被称为 FlowMeasurement btw.)以及 timing example。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。