Veins_Inet仿真PCAP录制报错:找不到VeinsinetSampleMessage序列化器
解决Veins_Inet中PCAP录制「Cannot find serializer for VeinsinetSampleMessage」错误
错误原因
PCAP录制器需要将OMNeT++消息对象转换为PCAP文件的二进制格式,但自定义的VeinsInetSampleMessage(注意错误提示中的大小写拼写偏差)未注册对应的序列化器,导致无法处理该消息类型。
解决方案
方案1:直接配置序列化器映射
在你的.ini配置文件中添加以下内容,将自定义消息类型映射到合适的序列化器:
如果消息是基于UDP的应用层数据,使用UDP序列化器:
# 注册VeinsInetSampleMessage的UDP序列化器 **.pcapRecorder[*].serializer.registerSerializer("vanet.veins_inet.VeinsInetSampleMessage", "inet.pcap.serializer.UdpSerializer")
如果消息是直接在MAC层发送(不经过IP/UDP),使用802.11序列化器:
# 注册VeinsInetSampleMessage的802.11序列化器 **.pcapRecorder[*].serializer.registerSerializer("vanet.veins_inet.VeinsInetSampleMessage", "inet.pcap.serializer.Ieee80211Serializer")
方案2:修改应用代码,将消息封装到UDP包
如果你的应用直接发送自定义消息而未封装到标准传输层协议,建议修改VeinsInetSampleApplication.cc代码,将消息封装到UDP数据报中发送,这样PCAP录制器可通过默认UDP序列化器处理:
#include "inet/transportlayer/contract/udp/UdpSocket.h" #include "vanet/veins_inet/VeinsInetSampleMessage_m.h" // 在应用类中添加UdpSocket成员 UdpSocket socket; // 初始化阶段绑定socket void VeinsInetSampleApplication::initialize(int stage) { VeinsInetApplicationBase::initialize(stage); if (stage == INITSTAGE_APPLICATION_LAYER) { socket.setOutputGate(gate("udpOut")); socket.bind(inet::Socket::ANY_PORT); } } // 修改消息发送逻辑,封装到UDP包 void VeinsInetSampleApplication::sendMessage() { auto sampleMsg = new VeinsInetSampleMessage("SampleMessage"); // 设置消息内容(如ID、数据等) // 创建UDP数据报并封装自定义消息 auto udpPacket = new inet::UdpDatagram(); udpPacket->setSourcePort(socket.getLocalPort()); udpPacket->setDestinationPort(1234); // 自定义目标端口 udpPacket->setDestinationAddress(inet::L3Address("255.255.255.255")); // 广播地址 udpPacket->encapsulate(sampleMsg); // 发送UDP包 socket.sendTo(udpPacket, udpPacket->getDestinationAddress(), udpPacket->getDestinationPort()); }
额外调整:修改PCAP包过滤器
当前配置的packetFilter仅记录ping相关包,若需录制自定义消息,需更新过滤器规则:
**.pcapRecorder[*].packetFilter = "ping* or Ping* or VeinsInetSampleMessage*"
验证要点
- 确认消息类名拼写正确(错误提示中的
VeinsinetSampleMessage应为VeinsInetSampleMessage) - 序列化器路径需匹配你的INET版本(部分版本路径为
inet.common.pcap.serializer)
内容的提问来源于stack exchange,提问作者user20301597
相关产品推荐
相关产品推荐

