NS3 PacketSink类API说明

源文件位置:

src/applications/model/packet-sink.h
packet-sink.cc

描述:

接收和消耗生成到IP地址和端口的流量。

此应用程序是为了补充OnOffApplication而编写的,但它是更通用的,因此选择了一个PacketSink名称。 在功能上,重要的是在多播情况下使用,使得接收感兴趣的第2层多播帧被启用,但是它对于单播也是有用的,作为如何在应用层上写简单地接收分组的示例。 此外,如果IP堆栈生成ICMP端口不可达错误,将需要接收应用程序。

构造函数指定要使用的地址(IP地址和端口)和传输协议。 虚拟Receive()方法作为回调安装在接收套接字上。 默认情况下,当启用日志记录时,它打印出包的大小及其地址。 还提供了一个Receive()的跟踪源。

属性路径:

"/NodeList/[i]/ApplicationList/[i]/$ns3::PacketSink" 

属性:

Local: 绑定rx套接字的地址。
Protocol: 用于rx套接字的协议的类型id。

StartTime: Time at which the application will start
StopTime: Time at which the application will stop

跟踪源:

Rx: 已接收到数据包

公共方法:

PacketSink ()
virtual     ~PacketSink ()
std::list< Ptr< Socket > >  GetAcceptedSockets (void) const
        接受的套接字的指针列表
Ptr< Socket >   GetListeningSocket (void) const
        指向侦听套接字的指针
uint64_t    GetTotalRx () const 
        在此sink应用程序中接收的总字节数
static TypeId   GetTypeId (void)
virtual void    DoDispose (void)

私有方法:

void    HandleAccept (Ptr< Socket > socket, const Address &from)
    处理传入连接。
void    HandlePeerClose (Ptr< Socket > socket)
    处理连接关闭。
void    HandlePeerError (Ptr< Socket > socket)
    处理连接错误。
void    HandleRead (Ptr< Socket > socket)
    处理应用程序接收的数据包。
virtual void    StartApplication (void)
virtual void    StopApplication (void)


PacketSinkHelper 源文件位置:

src/applications/helper/packet-sink-helper.h
packet-sink-helper.cc

描述:

一个帮助器,使其更容易在一组节点上实例化ns3 :: PacketSinkApplication。

公共方法:

PacketSinkHelper (std::string protocol, Address address)
    创建PacketSinkHelper以使其更容易使用PacketSinkApplications。
ApplicationContainer    Install (NodeContainer c) const
    在配置了使用SetAttribute设置的所有属性的输入容器的每个节点上安装ns3 :: PacketSinkApplication。
ApplicationContainer    Install (Ptr< Node > node) const
    在配置了使用SetAttribute设置的所有属性的输入容器的每个节点上安装ns3 :: PacketSinkApplication。
ApplicationContainer    Install (std::string nodeName) const
    在配置了使用SetAttribute设置的所有属性的输入容器的每个节点上安装ns3 :: PacketSinkApplication。
void    SetAttribute (std::string name, const AttributeValue &value)
    辅助函数用于设置底层应用程序属性。

私有方法:

Ptr< Application >  InstallPriv (Ptr< Node > node) const 
    在配置了使用SetAttribute设置的所有属性的节点上安装ns3 :: PacketSink。

用法:

  PacketSinkHelper sink ("ns3::TcpSocketFactory",
                         InetSocketAddress (Ipv4Address::GetAny (), port));
  ApplicationContainer sinkApps = sink.Install (nodes.Get (1));
  sinkApps.Start (Seconds (0.0));
  sinkApps.Stop (Seconds (10.0));

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 131,695评论 18 138
  • 简介 用简单的话来定义tcpdump,就是:dump the traffic on a network,根据使用者...
    保川阅读 5,640评论 1 13
  • 名词延伸 通俗的说,域名就相当于一个家庭的门牌号码,别人通过这个号码可以很容易的找到你。如果把IP地址比作一间房子...
    杨大虾阅读 19,537评论 2 57
  • 计算机网络第五版第一章,第五章,第六章的习题解答。编号是按照中文版图书来的,题目是复制的英文版图书。答案经过本人验...
    C就要毕业了阅读 26,048评论 3 7
  • 小练笔
    丽苗阅读 392评论 3 6
  • 第13篇推文 人,不能做错事。否则,真的是一步错,步步错!可惜,道理都懂,做到的却很少! 电影《看不见的客人》里的...
    丑妹电影阅读 374评论 0 0