繁体   English   中英

ns3数据包有效负载打印

[英]ns3 packet payload printing

我正在使用ns3进行仿真,在仿真中,我创建了如下数据包;

std::ostringstream msg; msg << "Hello World!" << '\0';
Ptr<Packet> packet = Create<Packet> ((uint8_t*) msg.str().c_str(), msg.str().length());
packet->Print (cout);
std::cout << std::endl;

在接收方,我正在使用以下代码来检索数据包有效负载;

uint8_t *buffer = new uint8_t[p->GetSize ()];
size = p->CopyData(buffer, p->GetSize ());
string s = string(buffer, buffer+p->GetSize());
cout<<"Received:"<<s<<endl;

但是,数据包有效载荷是一些奇怪的字符。 此外,当我在另一台计算机上运行相同的代码但显示不同的消息(不是世界)时,可以在消息的开头和结尾看到带有奇怪字符的消息。 任何建议和意见,表示赞赏。

问候。

我在ns-3 Google网上论坛的帮助下解决了这个问题。 如果其他人可能需要,我会发布答案。

在发送方,我需要如下设置消息长度;

 uint16_t packetSize = msgx.str().length()+1;
 Ptr<Packet> packet = Create<Packet>((uint8_t*) msgx.str().c_str(), packetSize);

我需要在消息长度上加1,否则跳过空字符串终止。 因此,这是一个小错误。 主要的是; 当我在MAC层上收到数据包时触发一个功能。 为了正确读取数据包内容,我应该删除MAC标头和尾标。

问候。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM