You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

INET Packet跨协议层通信时接收端无法获取发送端L3地址问题

问题根因

  • 标签类型使用错误:OMNeT++中带*Req后缀的标签是上行/发送方向的控制标签,仅用于发送端上层向下层传递地址、接口等配置参数,不会随数据包传递到接收端。接收端的地址信息会被协议栈填充到带*Ind后缀的标签中,你需要获取的源L3地址存储在L3AddressInd标签中。
  • 接收端调用方法错误:你在接收端使用addTagIfAbsent方法,当数据包中不存在对应L3AddressReq标签时,会直接新建一个空的标签实例,返回的空地址自然就是<none>,接收端应该用查找标签的方法而非新增标签的方法。

修复方案

1. 接收端代码修改

将原获取地址的代码替换为如下实现:

// 先查找数据包中已存在的L3AddressInd标签
auto l3AddrInd = packet->findTag<L3AddressInd>();
if (l3AddrInd != nullptr) {
    auto srcL3Addr = l3AddrInd->getSrcAddress();
    EV_DEBUG << "THE SOURCE NETWORK ADDRESS IS : " << srcL3Addr << endl;
} else {
    EV_DEBUG << "No L3AddressInd found in packet" << endl;
}

2. 可选校验发送端配置

额外校验你发送端的源地址赋值逻辑:确认代码中的myNetwAddr变量是当前发送节点本身的网络地址,而非误赋值为接收端sink的地址,避免源地址本身设置错误导致接收端拿到的地址不符合预期。

内容的提问来源于stack exchange,提问作者Gérard KPONHINTO

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.07 03:30:03