NS-3中Config::Connect与Config::ConnectWithoutContext的区别

void ns3::Config::ConnectWithoutContext (std::string      path,const CallbackBase &cb )

This function will attempt to find all trace sources which match the input path and will then connect the input callback to them.


void ns3::Config::Connect (std::string      path,const CallbackBase &cb ) 

This function will attempt to find all trace sources which match the input path and will then connect the input callback to them in such a way that the callback will receive an extra context string upon trace event notification.


以一个csma网络 ping的例子来解释,见: /src/csma/examples/csma-ping.cc

V4Ping :  http://www.nsnam.org/doxygen/classns3_1_1_v4_ping.html#af207b6dc0ed793798083c34a1c388770

TraceSources defined for this type:

  • Rtt: The rtt calculated by the ping.

This object is accessible through the following paths with Config::Set and Config::Connect:

  • /NodeList/[i]/ApplicationList/[i]/$ns3::V4Ping

PacketSink :http://www.nsnam.org/doxygen/classns3_1_1_packet_sink.html

TraceSources defined for this type:

  • Rx: A packet has been received

This object is accessible through the following paths with Config::Set and Config::Connect:

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

// Network topology
//
//       n0    n1   n2   n3
//       |     |    |    |
//     =====================
//
//  node n0,n1,n3 pings to node n2
//  node n0 generates protocol 2 (IGMP) to node n3

...


static void SinkRx (Ptr<const Packet> p, const Address &ad)
{
  std::cout << *p << std::endl;
}

static void PingRtt (std::string context, Time rtt)
{
  std::cout << context << " " << rtt << std::endl;
}
...

int main (int argc, char * argv[])

{

...

  // then, print what the packet sink receives.
  Config::ConnectWithoutContext ("/NodeList/3/ApplicationList/0/$ns3::PacketSink/Rx",
                                 MakeCallback (&SinkRx));
  // finally, print the ping rtts.
  Config::Connect ("/NodeList/*/ApplicationList/*/$ns3::V4Ping/Rtt",
                   MakeCallback (&PingRtt));

...


}



执行: gpf@guopengfei:~/ns-312/ns-allinone-3.12.1/ns-3.12.1$ ./waf --run src/csma/examples/csma-ping

结果:

Waf: Entering directory `/home/gpf/ns-312/ns-allinone-3.12.1/ns-3.12.1/build'
Waf: Leaving directory `/home/gpf/ns-312/ns-allinone-3.12.1/ns-3.12.1/build'
'build' finished successfully (5.522s)
ns3::Ipv4Header (tos 0x0 ttl 64 id 0 protocol 2 offset (bytes) 0 flags [none] length: 1220 192.168.1.1 > 192.168.1.4) Payload (size=1200)
/NodeList/0/ApplicationList/1/$ns3::V4Ping/Rtt +12766594.0ns
/NodeList/1/ApplicationList/0/$ns3::V4Ping/Rtt +25762594.0ns
/NodeList/3/ApplicationList/1/$ns3::V4Ping/Rtt +38792594.0ns
ns3::Ipv4Header (tos 0x0 ttl 64 id 2 protocol 2 offset (bytes) 0 flags [none] length: 1220 192.168.1.1 > 192.168.1.4) Payload (size=1200)
ns3::Ipv4Header (tos 0x0 ttl 64 id 3 protocol 2 offset (bytes) 0 flags [none] length: 1220 192.168.1.1 > 192.168.1.4) Payload (size=1200)
/NodeList/0/ApplicationList/1/$ns3::V4Ping/Rtt +4352998.0ns
/NodeList/1/ApplicationList/0/$ns3::V4Ping/Rtt +8709998.0ns
/NodeList/3/ApplicationList/1/$ns3::V4Ping/Rtt +13800998.0ns
ns3::Ipv4Header (tos 0x0 ttl 64 id 5 protocol 2 offset (bytes) 0 flags [none] length: 1220 192.168.1.1 > 192.168.1.4) Payload (size=1200)
/NodeList/0/ApplicationList/1/$ns3::V4Ping/Rtt +4352998.0ns
/NodeList/1/ApplicationList/0/$ns3::V4Ping/Rtt +9059998.0ns
/NodeList/3/ApplicationList/1/$ns3::V4Ping/Rtt +13493998.0ns
ns3::Ipv4Header (tos 0x0 ttl 64 id 7 protocol 2 offset (bytes) 0 flags [none] length: 1220 192.168.1.1 > 192.168.1.4) Payload (size=1200)
ns3::Ipv4Header (tos 0x0 ttl 64 id 8 protocol 2 offset (bytes) 0 flags [none] length: 1220 192.168.1.1 > 192.168.1.4) Payload (size=1200)
ns3::Ipv4Header (tos 0x0 ttl 64 id 9 protocol 2 offset (bytes) 0 flags [none] length: 1220 192.168.1.1 > 192.168.1.4) Payload (size=1200)
ns3::Ipv4Header (tos 0x0 ttl 64 id 10 protocol 2 offset (bytes) 0 flags [none] length: 1220 192.168.1.1 > 192.168.1.4) Payload (size=1200)
ns3::Ipv4Header (tos 0x0 ttl 64 id 11 protocol 2 offset (bytes) 0 flags [none] length: 1220 192.168.1.1 > 192.168.1.4) Payload (size=1200)
ns3::Ipv4Header (tos 0x0 ttl 64 id 12 protocol 2 offset (bytes) 0 flags [none] length: 1220 192.168.1.1 > 192.168.1.4) Payload (size=1200)
ns3::Ipv4Header (tos 0x0 ttl 64 id 13 protocol 2 offset (bytes) 0 flags [none] length: 1220 192.168.1.1 > 192.168.1.4) Payload (size=1200)
ns3::Ipv4Header (tos 0x0 ttl 64 id 14 protocol 2 offset (bytes) 0 flags [none] length: 1220 192.168.1.1 > 192.168.1.4) Payload (size=1200)
ns3::Ipv4Header (tos 0x0 ttl 64 id 15 protocol 2 offset (bytes) 0 flags [none] length: 1220 192.168.1.1 > 192.168.1.4) Payload (size=1200)
ns3::Ipv4Header (tos 0x0 ttl 64 id 16 protocol 2 offset (bytes) 0 flags [none] length: 1220 192.168.1.1 > 192.168.1.4) Payload (size=1200)



  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值