NS3 用户自定义数据包packet中的内容

参考链接:

https://www.nsnam.org/docs/release/3.12/doxygen/classns3_1_1_packet.html#details

NS-3如何把字符串写入到数据包内_Kevin Wang的博客-CSDN博客

实现步骤:

1.在ns3的scratch目录下新建一个test.cc文件,将参考链接2中的代码拷入其中

2.修改代码并保存

    在头部添加

 #include "ns3/netanim-module.h"

    在Simulator::Run ()前添加如下两行代码:

pointToPoint.EnablePcapAll ("test_packet");
AnimationInterface anim ("test_packet.xml");

 3.在终端运行依次以下命令       (注:是在ns-3.29目录下)

sudo ./waf
sudo ./waf --run scratch/test

4.运行成功标志

 ns-3.29目录下会生成test_packet.xml  、test_packet-0-0.pacp、test_packet-1-0.pacp三个文件

 

5.使用NetAnim打开test_packet.xml,效果如下图所示:

 6.使用wireshark打开test_packet-1-0.pacp文件,发现packet内容为"hello Ns3!"

     Data: 48:65:6c:6c:6f:20:4e:73:33:21:...   

     格式为ASCII字符对照中的十六进制 ,ASCII码字符对照表可参考以下链接

     http:// https://blog.csdn.net/wz947324/article/details/80076496#commentBox

 

其他自定义packet内容的相关链接

https://blog.csdn.net/Mary19920410/article/details/71425104?utm_medium=distribute.pc_relevant.none-task-blog-2~default~baidujs_title~default-0.queryctr&spm=1001.2101.3001.4242.1&utm_relevant_index=2https://blog.csdn.net/Mary19920410/article/details/71425104?utm_medium=distribute.pc_relevant.none-task-blog-2~default~baidujs_title~default-0.queryctr&spm=1001.2101.3001.4242.1&utm_relevant_index=2

https://blog.csdn.net/information_seeker/article/details/103549631#commentBoxhttps://blog.csdn.net/information_seeker/article/details/103549631#commentBox

 https://blog.csdn.net/ziseshamo102/article/details/51030863?utm_medium=distribute.pc_relevant.none-task-blog-2~default~baidujs_title~default-1.no_search_link&spm=1001.2101.3001.4242.2&utm_relevant_index=3#commentBoxhttps://blog.csdn.net/ziseshamo102/article/details/51030863?utm_medium=distribute.pc_relevant.none-task-blog-2~default~baidujs_title~default-1.no_search_link&spm=1001.2101.3001.4242.2&utm_relevant_index=3#commentBox

https://blog.csdn.net/qq_42824983/article/details/118945074?spm=1001.2101.3001.6650.2&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7Edefault-2.queryctr&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7Edefault-2.queryctr&utm_relevant_index=4https://blog.csdn.net/qq_42824983/article/details/118945074?spm=1001.2101.3001.6650.2&utm_medium=distribute.pc_relevant.none-task-blog-2~default~BlogCommendFromBaidu~default-2.queryctr&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2~default~BlogCommendFromBaidu~default-2.queryctr&utm_relevant_index=4

  • 1
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
要发送自定义数据包格式,可以使用 Qt 的网络编程模块的 QTcpSocket 类。具体实现步骤如下: 1. 在自定义数据包格式,我们需要定义数据包的头部和数据部分。数据包的头部用于描述数据包的类型、长度等信息,数据部分则是我们要发送的具体数据。在 Qt ,可以使用结构体或类来定义数据包的格式。 2. 在发送数据前,需要创建一个 QTcpSocket 对象并连接目标主机。连接成功后,可以通过 write() 函数向主机发送数据。 3. Qt 的 write() 函数默认发送的是 QByteArray 类型的数据,因此我们需要将自定义数据包格式转换成 QByteArray 类型的数据。可以使用 QByteArray 类的 append() 函数将数据包的头部和数据部分拼接在一起,然后发送给目标主机。 4. 在发送数据时,需要注意网络字节序的问题。一般情况下,我们需要将数据包的头部的整型数据转换为网络字节序(大端字节序)后再发送。 下面是一个简单的示例代码,演示如何发送一个自定义数据包格式: ```cpp #include <QTcpSocket> #include <QDataStream> // 自定义数据包格式 struct Packet { quint16 type; // 数据包类型 quint16 length; // 数据包长度 QByteArray data; // 数据部分 }; void sendPacket(Packet packet, QTcpSocket* socket) { // 将数据包转换成 QByteArray 类型 QByteArray packetData; QDataStream stream(&packetData, QIODevice::WriteOnly); stream << packet.type << packet.length << packet.data; // 发送数据包 socket->write(packetData); } int main() { // 创建 QTcpSocket 对象并连接目标主机 QTcpSocket socket; socket.connectToHost("127.0.0.1", 8888); if (!socket.waitForConnected()) { return -1; } // 构造数据包 Packet packet; packet.type = 1; packet.data = "Hello World!"; packet.length = packet.data.size(); // 发送数据包 sendPacket(packet, &socket); return 0; } ``` 以上代码只是一个简单的示例,实际应用需要根据具体的需求和协议来设计自定义数据包格式。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值