[英]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.