NS3 PacketSink类API说明
2017-06-25 本文已影响699人
shawn168
源文件位置:
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));