簡體   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