αž€αžΆαžšαž”αž„αŸ’αžšαŸ€αž“αž€αŸ’αž›αŸ‚αž„αž’αŸ’αžœαžΎαž”αžŽαŸ’αžαžΆαž‰ ns-3 αŸ” αž‡αŸ†αž–αžΌαž€αž‘αžΈ 5

αž€αžΆαžšαž”αž„αŸ’αžšαŸ€αž“αž€αŸ’αž›αŸ‚αž„αž’αŸ’αžœαžΎαž”αžŽαŸ’αžαžΆαž‰ ns-3 αŸ” αž‡αŸ†αž–αžΌαž€αž‘αžΈ 5
αž‡αŸ†αž–αžΌαž€ 1,2
αž‡αŸ†αž–αžΌαž€ 3
αž‡αŸ†αž–αžΌαž€ 4

5 αž€αžΆαžšαž€αŸ†αžŽαžαŸ‹
5.1 αž€αžΆαžšαž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹αž˜αŸ‰αžΌαžŒαž»αž›αž€αžαŸ‹αžαŸ’αžšαžΆ
5.1.1 αž‘αž·αžŠαŸ’αž‹αž—αžΆαž–αž‘αžΌαž‘αŸ…αž“αŸƒαž€αžΆαžšαž€αžαŸ‹αžαŸ’αžšαžΆ
5.1.2 αž”αžΎαž€αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž€αŸ†αžŽαžαŸ‹αž αŸαžαž»
5.1.3 αž€αžΆαžšαž”αž“αŸ’αžαŸ‚αž˜αž€αžΆαžšαž€αžαŸ‹αžαŸ’αžšαžΆαž‘αŸ…αž€αŸ’αž“αž»αž„αž›αŸαžαž€αžΌαžŠαžšαž”αžŸαŸ‹αž’αŸ’αž“αž€αŸ”
5.2 αž€αžΆαžšαž”αŸ’αžšαžΎαž’αžΆαž‚αž»αž™αž˜αŸ‰αž„αŸ‹αž”αž“αŸ’αž‘αžΆαžαŸ‹αž–αžΆαž€αŸ’αž™αž”αž‰αŸ’αž‡αžΆ
5.2.1 αž”αžŠαž·αžŸαŸαž’αžαž˜αŸ’αž›αŸƒαž‚αž»αžŽαž›αž€αŸ’αžαžŽαŸˆαž›αŸ†αž“αžΆαŸ†αžŠαžΎαž˜
5.2.2 αž€αžΆαžšαž…αžΆαž”αŸ‹αž™αž€αž–αžΆαž€αŸ’αž™αž”αž‰αŸ’αž‡αžΆαž•αŸ’αž‘αžΆαž›αŸ‹αžαŸ’αž›αž½αž“αžšαž”αžŸαŸ‹αž’αŸ’αž“αž€αŸ”
5.3 αž€αžΆαžšαž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹αž”αŸ’αžšαž–αŸαž“αŸ’αž’αžαžΆαž˜αžŠαžΆαž“
5.3.1 αž€αžΆαžšαžαžΆαž˜αžŠαžΆαž“ ASCII
αž€αžΆαžšαž‰αŸ‚αž€αžŠαžΆαž“ ASCII
5.3.2 PCAP αžŠαžΆαž“

αž‡αŸ†αž–αžΌαž€αž‘αžΈ 5

αž€αžΆαžšαž›αŸƒαžαž˜αŸ’αžšαžΌαžœ

5.1 αž€αžΆαžšαž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹αž˜αŸ‰αžΌαžŒαž»αž›αž€αžαŸ‹αžαŸ’αžšαžΆ

αž™αžΎαž„β€‹αž”αžΆαž“β€‹αž˜αžΎαž›β€‹αž™αŸ‰αžΆαž„β€‹αžαŸ’αž›αžΈβ€‹αžšαž½αž…αž αžΎαž™β€‹αž“αŸ…β€‹αž˜αŸ‰αžΌαžŒαž»αž›β€‹αž€αžαŸ‹αžαŸ’αžšαžΆ ns-3 αžŠαŸ„αž™β€‹αž˜αžΎαž›β€‹αž›αžΎβ€‹αžŸαŸ’αž‚αŸ’αžšαžΈαž” first.cc. αž“αŸ…αž€αŸ’αž“αž»αž„αž‡αŸ†αž–αžΌαž€αž“αŸαŸ‡ αž™αžΎαž„αž“αžΉαž„αž–αž·αž“αž·αžαŸ’αž™αž˜αžΎαž›αž±αŸ’αž™αž€αžΆαž“αŸ‹αžαŸ‚αžŠαž·αžαžŠαž›αŸ‹αž“αžΌαžœαž€αžΆαžšαž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹αžŠαŸ‚αž›αž’αžΆαž…αž’αŸ’αžœαžΎαž‘αŸ…αž”αžΆαž“αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž”αŸ’αžšαž–αŸαž“αŸ’αž’αžšαž„αž“αŸƒαž€αžΆαžšαž€αžΆαž”αŸ‹αžˆαžΎαŸ”

5.1.1 αž‘αž·αžŠαŸ’αž‹αž—αžΆαž–αž‘αžΌαž‘αŸ…αž“αŸƒαž€αžΆαžšαž€αžαŸ‹αžαŸ’αžšαžΆ

αž”αŸ’αžšαž–αŸαž“αŸ’αž’αž’αŸ† αŸ— αž‡αžΆαž…αŸ’αžšαžΎαž“αž‚αžΆαŸ†αž‘αŸ’αžšαž”αŸ’αžšαž—αŸαž‘αž“αŸƒαž€αžΆαžšαž€αžαŸ‹αžαŸ’αžšαžΆαžŸαžΆαžšαž˜αž½αž™αž…αŸ†αž“αž½αž“ αž αžΎαž™ ns-3 αž˜αž·αž“αž˜αžΆαž“αž€αžšαžŽαžΈαž›αžΎαž€αž›αŸ‚αž„αž“αŸ„αŸ‡αž‘αŸαŸ” αž€αŸ’αž“αž»αž„αž€αžšαžŽαžΈαžαŸ’αž›αŸ‡αž˜αžΆαž“αžαŸ‚αžŸαžΆαžšαž€αŸ†αž αž»αžŸαž”αŸ‰αž»αžŽαŸ’αžŽαŸ„αŸ‡αžŠαŸ‚αž›αžαŸ’αžšαžΌαžœαž”αžΆαž“αžŸαžšαžŸαŸαžšαž‘αŸ… "αž€αž»αž„αžŸαžΌαž›αž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž€αžš" (αžŠαŸ‚αž›αž‡αžΆαž’αž˜αŸ’αž˜αžαžΆ stderr αž“αŸ…αž›αžΎαž”αŸ’αžšαž–αŸαž“αŸ’αž’αžŠαŸ‚αž›αž˜αžΆαž“αž˜αžΌαž›αžŠαŸ’αž‹αžΆαž“αž›αžΎ Unix) αŸ” αž“αŸ…αž›αžΎαž”αŸ’αžšαž–αŸαž“αŸ’αž’αž•αŸ’αžŸαŸαž„αž‘αŸ€αž αžŸαžΆαžšαž–αŸ’αžšαž˜αžΆαž“αž’αžΆαž…αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αž„αŸ’αž αžΆαž‰ αž€αŸαžŠαžΌαž…αž‡αžΆαž–αŸαžαŸŒαž˜αžΆαž“αž›αž˜αŸ’αž’αž·αžαž”αž“αŸ’αžαŸ‚αž˜αŸ” αž€αŸ’αž“αž»αž„β€‹αž€αžšαžŽαžΈβ€‹αžαŸ’αž›αŸ‡ αž§αž”αž€αžšαžŽαŸβ€‹αž€αžαŸ‹αžαŸ’αžšαžΆβ€‹αžαŸ’αžšαžΌαžœβ€‹αž”αžΆαž“β€‹αž”αŸ’αžšαžΎβ€‹αžŠαžΎαž˜αŸ’αž”αžΈβ€‹αž”αž‰αŸ’αž…αŸαž‰β€‹αžŸαžΆαžšβ€‹αž”αŸ†αž”αžΆαžαŸ‹β€‹αž€αŸ†αž αž»αžŸβ€‹αžŠαŸ‚αž›β€‹αž’αžΆαž…β€‹αž’αŸ’αžœαžΎαž±αŸ’αž™β€‹αž›αž‘αŸ’αž’αž•αž›β€‹αž–αŸ’αžšαžΆαž›β€‹αž”αžΆαž“β€‹αž›αžΏαž“αŸ”

subHRD αžŠαŸ‚αž›αž”αŸ’αžšαžΎαž€αŸ’αž“αž»αž„ ns-3 αžŸαž“αŸ’αž˜αžαŸ‹αžαžΆαž‚αŸ’αžšαž”αŸ‹αž€αž˜αŸ’αžšαž·αžαž“αŸƒαž˜αžΆαžαž·αž€αžΆαž–αŸαžαŸŒαž˜αžΆαž“αž‘αžΆαŸ†αž„αž“αŸαŸ‡αž˜αžΆαž“αž”αŸ’αžšαž™αŸ„αž‡αž“αŸ αž αžΎαž™αž™αžΎαž„αž•αŸ’αžαž›αŸ‹αž“αžΌαžœαžœαž·αž’αžΈαžŸαžΆαžŸαŸ’αžšαŸ’αžαž‡αŸ’αžšαžΎαžŸαžšαžΎαžŸαž‡αžΆαžŸαŸ’αžšαž‘αžΆαž”αŸ‹αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž€αžΆαžšαž€αžαŸ‹αžαŸ’αžšαžΆαžŸαžΆαžšαŸ” αž€αžΆαžšαž€αžαŸ‹αžαŸ’αžšαžΆαž’αžΆαž…αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αž·αž‘αž‘αžΆαŸ†αž„αžŸαŸ’αžšαž»αž„ αž”αžΎαž€αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαžŠαŸ„αž™αž•αŸ’αž’αŸ‚αž€αž›αžΎαžŸαž˜αžΆαžŸαž’αžΆαžαž»αž“αžΈαž˜αž½αž™αŸ— αž¬αž‡αžΆαžŸαž€αž›αŸ” αž…αŸ†αž–αŸ„αŸ‡αž‚αŸ„αž›αž”αŸ†αžŽαž„αž“αŸαŸ‡ αž€αž˜αŸ’αžšαž·αžαž˜αžΆαžαž·αž€αžΆαž–αŸαžαŸŒαž˜αžΆαž“αžŠαŸ‚αž›αž’αžΆαž…αž›αŸƒαžαž˜αŸ’αžšαžΌαžœαž”αžΆαž“αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹αŸ” αž˜αŸ‰αžΌαžŒαž»αž›αž€αžαŸ‹αžαŸ’αžšαžΆ ns-3 αž•αŸ’αžαž›αŸ‹αž“αžΌαžœαžœαž·αž’αžΈαžŸαžΆαž˜αž‰αŸ’αž‰αž˜αž½αž™αžŠαžΎαž˜αŸ’αž”αžΈαž‘αž‘αž½αž›αž”αžΆαž“αž–αŸαžαŸŒαž˜αžΆαž“αž˜αžΆαž“αž”αŸ’αžšαž™αŸ„αž‡αž“αŸαž–αžΈαž€αžΆαžšαž€αŸ’αž›αŸ‚αž„αž’αŸ’αžœαžΎαžšαž”αžŸαŸ‹αž’αŸ’αž“αž€αŸ”

αž’αŸ’αž“αž€αž‚αž½αžšαžαŸ‚αž™αž›αŸ‹αžαžΆαž™αžΎαž„αž•αŸ’αžαž›αŸ‹αž™αž“αŸ’αžαž€αžΆαžšαž‚αŸ„αž›αž”αŸ†αžŽαž„αž‘αžΌαž‘αŸ…αž˜αž½αž™ - αžαžΆαž˜αžŠαžΆαž“ - αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž€αžΆαžšαž‘αžΆαž‰αž™αž€αž‘αž·αž“αŸ’αž“αž“αŸαž™αž–αžΈαž˜αŸ‰αžΌαžŠαŸ‚αž›αžšαž”αžŸαŸ‹αž’αŸ’αž“αž€ αžŠαŸ‚αž›αž‚αž½αžšαžαŸ‚αž‡αžΆαž›αž‘αŸ’αž’αž•αž›αžŠαŸ‚αž›αž–αŸαž‰αž…αž·αžαŸ’αžαžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž€αžΆαžšαž€αŸ’αž›αŸ‚αž„αž’αŸ’αžœαžΎ (αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž–αŸαžαŸŒαž˜αžΆαž“αž”αž“αŸ’αžαŸ‚αž˜αž’αŸ†αž–αžΈαž”αŸ’αžšαž–αŸαž“αŸ’αž’αžαžΆαž˜αžŠαžΆαž“αžšαž”αžŸαŸ‹αž™αžΎαž„ αžŸαžΌαž˜αž˜αžΎαž›αžœαž‚αŸ’αž‚αž”αž„αŸ’αžšαŸ€αž“ 5.3)αŸ” αž€αžΆαžšαž€αžαŸ‹αžαŸ’αžšαžΆαž‚αž½αžšαžαŸ‚αž‡αžΆαžœαž·αž’αžΈαžŸαžΆαžŸαŸ’αžαŸ’αžšαžŠαŸ‚αž›αž–αŸαž‰αž…αž·αžαŸ’αžαžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž€αžΆαžšαž‘αž‘αž½αž›αž”αžΆαž“αž–αŸαžαŸŒαž˜αžΆαž“αž”αŸ†αž”αžΆαžαŸ‹αž€αŸ†αž αž»αžŸ αž€αžΆαžšαž–αŸ’αžšαž˜αžΆαž“ αžŸαžΆαžšαž€αŸ†αž αž»αžŸ αž¬αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž€αžΆαžšαž…αŸαž‰αžŸαžΆαžšαž™αŸ‰αžΆαž„αž†αžΆαž”αŸ‹αžšαž αŸαžŸαž–αžΈαžŸαŸ’αž‚αŸ’αžšαžΈαž” αž¬αž‚αŸ†αžšαžΌαžšαž”αžŸαŸ‹αž’αŸ’αž“αž€αž‚αŸ’αžšαž”αŸ‹αž–αŸαž›αŸ”

αž”αž…αŸ’αž…αž»αž”αŸ’αž”αž“αŸ’αž“ αž”αŸ’αžšαž–αŸαž“αŸ’αž’αž€αŸ†αžŽαžαŸ‹αž€αž˜αŸ’αžšαž·αžαž”αŸ’αžšαžΆαŸ†αž–αžΈαžš (αž”αŸ’αžšαž—αŸαž‘) αž“αŸƒαžŸαžΆαžšαž€αŸ†αžŽαžαŸ‹αž αŸαžαž»αž€αŸ’αž“αž»αž„αž€αžΆαžšαž”αž„αŸ’αž€αžΎαž“αž›αŸ†αžŠαžΆαž”αŸ‹αž“αŸƒαž˜αžΆαžαž·αž€αžΆαž–αŸαžαŸŒαž˜αžΆαž“αŸ”

  • LOG_ERROR - αžŸαžΆαžšαž€αŸ†αž αž»αžŸαž€αŸ’αž“αž»αž„αž€αžΆαžšαž€αžαŸ‹αžαŸ’αžšαžΆ (αž˜αŸ‰αžΆαž€αŸ’αžšαžΌαžŠαŸ‚αž›αž–αžΆαž€αŸ‹αž–αŸαž“αŸ’αž’αŸ– NS_LOG_ERROR);
  • LOG_WARN - αžŸαžΆαžšαž–αŸ’αžšαž˜αžΆαž“αž€αŸ†αžŽαžαŸ‹αž αŸαžαž» (αž˜αŸ‰αžΆαž€αŸ’αžšαžΌαžŠαŸ‚αž›αž–αžΆαž€αŸ‹αž–αŸαž“αŸ’αž’αŸ– NS_LOG_WARN);
  • LOG_DEBUG - αž€αžαŸ‹αžαŸ’αžšαžΆαžŸαžΆαžšαž”αŸ†αž”αžΆαžαŸ‹αž€αŸ†αž αž»αžŸαž–αž·αžŸαŸαžŸαž€αž˜αŸ’αžš (αž˜αŸ‰αžΆαž€αŸ’αžšαžΌαžŠαŸ‚αž›αž–αžΆαž€αŸ‹αž–αŸαž“αŸ’αž’αŸ– NS_LOG_DEBUG);
  • LOG_INFO - αž€αžΆαžšαž…αž»αŸ‡αžˆαŸ’αž˜αŸ„αŸ‡αžŸαžΆαžšαž–αŸαžαŸŒαž˜αžΆαž“αž’αŸ†αž–αžΈαžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž“αŸƒαž€αž˜αŸ’αž˜αžœαž·αž’αžΈ (αž˜αŸ‰αžΆαž€αŸ’αžšαžΌαžŠαŸ‚αž›αž–αžΆαž€αŸ‹αž–αŸαž“αŸ’αž’αŸ– NS_LOG_INFO);
  • LOG_FUNCTION - αž€αŸ†αžŽαžαŸ‹αž αŸαžαž»αžŸαžΆαžšαžŠαŸ‚αž›αž–αž·αž–αžŽαŸŒαž“αžΆαž’αŸ†αž–αžΈαž˜αž»αžαž„αžΆαžšαž“αžΈαž˜αž½αž™αŸ—αžŠαŸ‚αž›αž αŸ…αžαžΆ (αž˜αŸ‰αžΆαž€αŸ’αžšαžΌαžŠαŸ‚αž›αž‘αžΆαž€αŸ‹αž‘αž„αž–αžΈαžšαŸ– NS_LOG_FUNCTION αž”αŸ’αžšαžΎαžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž˜αž»αžαž„αžΆαžšαžŸαž˜αžΆαž‡αž·αž€ αž“αž·αž„ NS_LOG_FUNCTION_NOARGS αž”αŸ’αžšαžΎαžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž˜αž»αžαž„αžΆαžšαž‹αž·αžαž·αžœαž“αŸ’αž);
  • LOG_LOGIC - αžŸαžΆαžšαž€αžαŸ‹αžαŸ’αžšαžΆαžŠαŸ‚αž›αž–αž·αž–αžŽαŸŒαž“αžΆαž’αŸ†αž–αžΈαž›αŸ†αž αžΌαžšαž‘αžΌαž‡αžΈαžαž›αž“αŸ…αž€αŸ’αž“αž»αž„αž˜αž»αžαž„αžΆαžšαž˜αž½αž™ (αž˜αŸ‰αžΆαž€αŸ’αžšαžΌαžŠαŸ‚αž›αž‘αžΆαž€αŸ‹αž‘αž„αŸ– NS_LOG_LOGIC);
  • LOG_ALL - αž€αžαŸ‹αžαŸ’αžšαžΆαž’αŸ’αžœαžΈαž‚αŸ’αžšαž”αŸ‹αž™αŸ‰αžΆαž„αžŠαŸ‚αž›αž”αžΆαž“αžšαŸ€αž”αžšαžΆαž”αŸ‹αžαžΆαž„αž›αžΎ (αž˜αž·αž“αž˜αžΆαž“αž˜αŸ‰αžΆαž€αŸ’αžšαžΌαžŠαŸ‚αž›αž–αžΆαž€αŸ‹αž–αŸαž“αŸ’αž’)αŸ”
    αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž”αŸ’αžšαž—αŸαž‘αž“αžΈαž˜αž½αž™αŸ— (LOG_TYPE) αž€αŸαž˜αžΆαž“ LOG_LEVEL_TYPE αž•αž„αžŠαŸ‚αžš αžŠαŸ‚αž›αž”αŸ’αžšαžŸαž·αž“αž”αžΎαž”αŸ’αžšαžΎ αž’αž“αž»αž‰αŸ’αž‰αžΆαžαž±αŸ’αž™αž…αžΌαž›αž‚αŸ’αžšαž”αŸ‹αž€αž˜αŸ’αžšαž·αžαžαžΆαž„αž›αžΎαžœαžΆ αž”αž“αŸ’αžαŸ‚αž˜αž–αžΈαž›αžΎαž€αž˜αŸ’αžšαž·αžαžšαž”αžŸαŸ‹αžœαžΆαŸ” (αž‡αžΆαž›αž‘αŸ’αž’αž•αž› LOG_ERROR αž“αž·αž„ LOG_LEVEL_ERROR αž“αž·αž„ LOG_ALL αž“αž·αž„ LOG_LEVEL_ALL αž‚αžΊαžŸαž˜αž˜αžΌαž›αž˜αž»αžαž„αžΆαžšαŸ”) αž§αž‘αžΆαž αžšαžŽαŸ αž€αžΆαžšαž”αžΎαž€ LOG_INFO αž“αžΉαž„αž’αž“αž»αž‰αŸ’αž‰αžΆαžαžαŸ‚αžŸαžΆαžšαžŠαŸ‚αž›αž•αŸ’αžαž›αŸ‹αžŠαŸ„αž™αž˜αŸ‰αžΆαž€αŸ’αžšαžΌ NS_LOG_INFO αžαžŽαŸˆαž–αŸαž›αžŠαŸ‚αž›αž€αžΆαžšαž”αžΎαž€ LOG_LOG_LEVEL_INFO αžŠαŸ„αž™αžŸαžΆαžš WARN_DE αž“αžΉαž„αžšαž½αž˜αž”αž‰αŸ’αž…αžΌαž›αž•αž„αžŠαŸ‚αžš NS_LOG_ERROR

αž™αžΎαž„αž€αŸαž•αŸ’αžαž›αŸ‹αž˜αŸ‰αžΆαž€αŸ’αžšαžΌαž€αžαŸ‹αžαŸ’αžšαžΆαžŠαŸ„αž™αž‚αŸ’αž˜αžΆαž“αž›αž€αŸ’αžαžαžŽαŸ’αžŒαžŠαŸ‚αž›αžαŸ‚αž„αžαŸ‚αž”αž„αŸ’αž αžΆαž‰ αžŠαŸ„αž™αž˜αž·αž“αž‚αž·αžαž–αžΈαž€αž˜αŸ’αžšαž·αžαž“αŸƒαž€αžΆαžšαž€αžαŸ‹αžαŸ’αžšαžΆ αž¬αžŸαž˜αžΆαžŸαž’αžΆαžαž»αž‡αŸ’αžšαžΎαžŸαžšαžΎαžŸαŸ”

  • NS_LOG_UNCOND - αž€αžΆαžšαž€αžαŸ‹αžαŸ’αžšαžΆαžŠαŸ„αž™αž‚αŸ’αž˜αžΆαž“αž›αž€αŸ’αžαžαžŽαŸ’αžŒαž“αŸƒαžŸαžΆαžšαžŠαŸ‚αž›αž–αžΆαž€αŸ‹αž–αŸαž“αŸ’αž’ (αž‚αŸ’αž˜αžΆαž“αž€αž˜αŸ’αžšαž·αžαž“αŸƒαž€αžΆαžšαž€αžαŸ‹αžαŸ’αžšαžΆαžŠαŸ‚αž›αž–αžΆαž€αŸ‹αž–αŸαž“αŸ’αž’)αŸ”

αž€αž˜αŸ’αžšαž·αžαž“αžΈαž˜αž½αž™αŸ—αž’αžΆαž…αžαŸ’αžšαžΌαžœαž”αžΆαž“αžŸαž½αžšαž‡αžΆαž›αž€αŸ’αžαžŽαŸˆαž”αž»αž‚αŸ’αž‚αž› αž¬αž‡αžΆαž”αžŽαŸ’αžαž»αŸ†αŸ” αž€αžΆαžšαž€αžαŸ‹αžαŸ’αžšαžΆαž’αžΆαž…αžαŸ’αžšαžΌαžœαž”αžΆαž“αž€αŸ†αžŽαžαŸ‹αžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’αžŠαŸ„αž™αž”αŸ’αžšαžΎαž’αžαŸαžšαž”αžšαž·αžŸαŸ’αžαžΆαž“ sh NS_LOG αž¬αžŠαŸ„αž™αž€αžΆαžšαž€αžαŸ‹αžαŸ’αžšαžΆαž€αžΆαžšαž αŸ…αž˜αž»αžαž„αžΆαžšαž”αŸ’αžšαž–αŸαž“αŸ’αž’αŸ” αžŠαžΌαž…αžŠαŸ‚αž›αž”αžΆαž“αž”αž„αŸ’αž αžΆαž‰αž–αžΈαž˜αž»αž“ αž”αŸ’αžšαž–αŸαž“αŸ’αž’αž€αžαŸ‹αžαŸ’αžšαžΆαž˜αžΆαž“αž―αž€αžŸαžΆαžš Doxygen αž αžΎαž™αž₯αž‘αžΌαžœαž“αŸαŸ‡αž‚αžΊαž‡αžΆαž–αŸαž›αžœαŸαž›αžΆαžŠαŸαž›αŸ’αž’αžŠαžΎαž˜αŸ’αž”αžΈαž–αž·αž“αž·αžαŸ’αž™αž˜αžΎαž›αžœαžΆαž”αŸ’αžšαžŸαž·αž“αž”αžΎαž’αŸ’αž“αž€αž˜αž·αž“αž‘αžΆαž“αŸ‹αž˜αžΆαž“αŸ”

αž₯αž‘αžΌαžœβ€‹αž“αŸαŸ‡β€‹αž’αŸ’αž“αž€β€‹αž”αžΆαž“β€‹αž’αžΆαž“β€‹αž―αž€αžŸαžΆαžšβ€‹αž™αŸ‰αžΆαž„β€‹αž›αž˜αŸ’αž’αž·αžβ€‹αž αžΎαž™ αžŸαžΌαž˜β€‹αž”αŸ’αžšαžΎβ€‹αž…αŸ†αžŽαŸαŸ‡αžŠαžΉαž„β€‹αž“αŸ„αŸ‡β€‹αžŠαžΎαž˜αŸ’αž”αžΈβ€‹αž‘αž‘αž½αž›β€‹αž”αžΆαž“β€‹αž–αŸαžαŸŒαž˜αžΆαž“β€‹αž‚αž½αžšβ€‹αž±αŸ’αž™β€‹αž…αžΆαž”αŸ‹β€‹αž’αžΆαžšαž˜αŸ’αž˜αžŽαŸβ€‹αž˜αž½αž™β€‹αž…αŸ†αž“αž½αž“β€‹αž–αžΈβ€‹αžŸαŸ’αž‚αŸ’αžšαžΈαž”β€‹αž§αž‘αžΆαž αžšαžŽαŸ scratch/myfirst.ccαžŠαŸ‚αž›αž’αŸ’αž“αž€αž”αžΆαž“αž…αž„αž€αŸ’αžšαž„αžšαž½αž…αž αžΎαž™αŸ”

5.1.2 αž”αžΎαž€αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž€αŸ†αžŽαžαŸ‹αž αŸαžαž»

αž…αžΌαžšαž™αžΎαž„αž”αŸ’αžšαžΎαž’αžαŸαžšαž”αžšαž·αžŸαŸ’αžαžΆαž“ NS_LOG αžŠαžΎαž˜αŸ’αž”αžΈαžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž€αŸ†αžŽαžαŸ‹αž αŸαžαž»αž˜αž½αž™αž…αŸ†αž“αž½αž“αž‘αŸ€αž αž”αŸ‰αž»αž“αŸ’αžαŸ‚αž‡αžΆαžŠαŸ†αž”αžΌαž„ αžŠαžΎαž˜αŸ’αž”αžΈαž‘αž‘αž½αž›αž”αžΆαž“ bearings αžšαž”αžŸαŸ‹αž’αŸ’αž“αž€ αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαžŸαŸ’αž‚αŸ’αžšαžΈαž”αž…αž»αž„αž€αŸ’αžšαŸ„αž™αžŠαžΌαž…αžŠαŸ‚αž›αž’αŸ’αž“αž€αž”αžΆαž“αž’αŸ’αžœαžΎαž–αžΈαž˜αž»αž“αž˜αž€αŸ”

$ ./waf --run scratch/myfirst

αž’αŸ’αž“αž€αž‚αž½αžšαžαŸ‚αžƒαžΎαž‰αž›αž‘αŸ’αž’αž•αž›αžŠαŸ‚αž›αž’αŸ’αž›αžΆαž”αŸ‹αžŸαŸ’αž‚αžΆαž›αŸ‹αž–αžΈαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž§αž‘αžΆαž αžšαžŽαŸ ns-3 αžŠαŸ†αž”αžΌαž„

$ Waf: Entering directory `/home/craigdo/repos/ns-3-allinone/ns-3-dev/build'
Waf: Leaving directory `/home/craigdo/repos/ns-3-allinone/ns-3-dev/build' 'build'
finished successfully (0.413s)
Sent 1024 bytes to 10.1.1.2
Received 1024 bytes from 10.1.1.1
Received 1024 bytes from 10.1.1.2

αžœαžΆαž”αŸ’αžšαŸ‚αžαžΆαžŸαžΆαžš "αž•αŸ’αž‰αžΎ" αž“αž·αž„ "αž‘αž‘αž½αž›" αžŠαŸ‚αž›αž’αŸ’αž“αž€αžƒαžΎαž‰αžαžΆαž„αž›αžΎαž‚αžΊαž–αž·αžαž‡αžΆαžŸαžΆαžšαžŠαŸ‚αž›αž”αžΆαž“αž…αžΌαž›αž–αžΈ αž€αž˜αŸ’αž˜αžœαž·αž’αžΈ UdpEchoClient ΠΈ αž€αž˜αŸ’αž˜αžœαž·αž’αžΈ UdpEchoServer. αž§αž‘αžΆαž αžšαžŽαŸ αž™αžΎαž„αž’αžΆαž…αžŸαŸ’αž“αžΎαžŸαž»αŸ†αž±αŸ’αž™αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž’αžαž·αžαž·αž‡αž“αž”αŸ„αŸ‡αž–αž»αž˜αŸ’αž–αž–αŸαžαŸŒαž˜αžΆαž“αž”αž“αŸ’αžαŸ‚αž˜αžŠαŸ„αž™αž€αŸ†αžŽαžαŸ‹αž€αž˜αŸ’αžšαž·αžαž“αŸƒαž€αžΆαžšαž€αžαŸ‹αžαŸ’αžšαžΆαžšαž”αžŸαŸ‹αžœαžΆαžαžΆαž˜αžšαž™αŸˆαž’αžαŸαžšαž”αžšαž·αžŸαŸ’αžαžΆαž“ NS_LOGαŸ”

αž…αžΆαž”αŸ‹αž–αžΈαž–αŸαž›αž“αŸαŸ‡αžαž‘αŸ… αžαŸ’αž‰αž»αŸ†αž“αžΉαž„αžŸαž“αŸ’αž˜αžαŸ‹αžαžΆαž’αŸ’αž“αž€αž€αŸ†αž–αž»αž„αž”αŸ’αžšαžΎαžŸαŸ‚αž›αžŠαžΌαž… sh αžŠαŸ‚αž›αž”αŸ’αžšαžΎαžœαžΆαž€αŸ’αž™αžŸαž˜αŸ’αž–αŸαž“αŸ’αž’ "VARIABLE=value" αŸ” αž”αŸ’αžšαžŸαž·αž“αž”αžΎαž’αŸ’αž“αž€αž€αŸ†αž–αž»αž„αž”αŸ’αžšαžΎαžŸαŸ‚αž›αžŠαžΌαž… csh αž“αŸ„αŸ‡αž’αŸ’αž“αž€αž“αžΉαž„αžαŸ’αžšαžΌαžœαž”αŸ†αž”αŸ’αž›αŸ‚αž„αž§αž‘αžΆαž αžšαžŽαŸαžšαž”αžŸαŸ‹αžαŸ’αž‰αž»αŸ†αž‘αŸ…αž‡αžΆαžœαžΆαž€αŸ’αž™αžŸαž˜αŸ’αž–αŸαž“αŸ’αž’ "αžαž˜αŸ’αž›αŸƒαž’αžαŸαžš setenv" αžŠαŸ‚αž›αž‘αžΆαž˜αž‘αžΆαžšαžŠαŸ„αž™αžŸαŸ‚αž›αž‘αžΆαŸ†αž„αž“αŸ„αŸ‡αŸ”

αž”αž…αŸ’αž…αž»αž”αŸ’αž”αž“αŸ’αž“αž“αŸαŸ‡ αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž’αžαž·αžαž·αž‡αž“αž’αŸαž€αžΌ UDP αž†αŸ’αž›αžΎαž™αžαž”αž‘αŸ…αž“αžΉαž„αž”αž“αŸ’αž‘αžΆαžαŸ‹αž€αžΌαžŠαžαžΆαž„αž€αŸ’αžšαŸ„αž˜ scratch/myfirst.cc,

LogComponentEnable("UdpEchoClientApplication", LOG_LEVEL_INFO);

αžœαžΆαž”αžΎαž€αž€αž˜αŸ’αžšαž·αžαž“αŸƒαž€αžΆαžšαž€αžαŸ‹αžαŸ’αžšαžΆ LOG_LEVEL_INFO αŸ” αž“αŸ…αž–αŸαž›αžŠαŸ‚αž›αž™αžΎαž„αž†αŸ’αž›αž„αž€αžΆαžαŸ‹αž‘αž„αŸ‹αž€αž˜αŸ’αžšαž·αžαž“αŸƒαž€αžΆαžšαž€αžαŸ‹αžαŸ’αžšαžΆ αž™αžΎαž„αž–αž·αžαž‡αžΆαž”αžΎαž€αž€αž˜αŸ’αžšαž·αžαž“αŸ„αŸ‡ αž“αž·αž„αž€αž˜αŸ’αžšαž·αžαž‘αžΆαž”αž‡αžΆαž„αž‘αžΆαŸ†αž„αž’αžŸαŸ‹αŸ” αž€αŸ’αž“αž»αž„αž€αžšαžŽαžΈαž“αŸαŸ‡ αž™αžΎαž„αž”αžΆαž“αž”αžΎαž€αžŠαŸ†αžŽαžΎαžšαž€αžΆαžš NS_LOG_INFO, NS_LOG_DEBUG, NS_LOG_WARN αž“αž·αž„ NS_LOG_ERRORαŸ” αž™αžΎαž„αž’αžΆαž…αž”αž„αŸ’αž€αžΎαž“αž€αž˜αŸ’αžšαž·αžαž“αŸƒαž€αžΆαžšαž€αžαŸ‹αžαŸ’αžšαžΆ αž“αž·αž„αž‘αž‘αž½αž›αž”αžΆαž“αž–αŸαžαŸŒαž˜αžΆαž“αž”αž“αŸ’αžαŸ‚αž˜ αžŠαŸ„αž™αž‚αŸ’αž˜αžΆαž“αž€αžΆαžšαž•αŸ’αž›αžΆαžŸαŸ‹αž”αŸ’αžαžΌαžšαžŸαŸ’αž‚αŸ’αžšαžΈαž” αž“αž·αž„αž€αžΆαžšαž…αž„αž€αŸ’αžšαž„αž‘αžΎαž„αžœαž·αž‰ αžŠαŸ„αž™αž€αŸ†αžŽαžαŸ‹αž’αžαŸαžšαž”αžšαž·αžŸαŸ’αžαžΆαž“ NS_LOG αžŠαžΌαž…αžαžΆαž„αž€αŸ’αžšαŸ„αž˜αŸ–

$ export NS_LOG=UdpEchoClientApplication=level_all

αžŠαžΌαž…αŸ’αž“αŸαŸ‡αž™αžΎαž„αž€αŸ†αžŽαžαŸ‹αž’αžαŸαžš sh shell NS_LOG αž‘αŸ…αžαž˜αŸ’αž›αŸƒαžαžΆαž„αž€αŸ’αžšαŸ„αž˜αŸ”

UdpEchoClientApplication=level_all

αž•αŸ’αž“αŸ‚αž€αžαžΆαž„αž†αŸ’αžœαŸαž„αž“αŸƒαž€αž·αž…αŸ’αž…αž€αžΆαžšαž‚αžΊαž‡αžΆαžˆαŸ’αž˜αŸ„αŸ‡αž“αŸƒαžŸαž˜αžΆαžŸαž—αžΆαž‚αžŠαŸ‚αž›αž”αžΆαž“αž€αžαŸ‹αžαŸ’αžšαžΆαžŠαŸ‚αž›αž™αžΎαž„αž…αž„αŸ‹αž€αŸ†αžŽαžαŸ‹αžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’ αž αžΎαž™αž•αŸ’αž“αŸ‚αž€αžαžΆαž„αžŸαŸ’αžαžΆαŸ†αž‚αžΊαž‡αžΆαž‘αž„αŸ‹αžŠαŸ‚αž›αž™αžΎαž„αž…αž„αŸ‹αž’αž“αž»αžœαžαŸ’αžαžŸαž˜αŸ’αžšαžΆαž”αŸ‹αžœαžΆαŸ” αž€αŸ’αž“αž»αž„αž€αžšαžŽαžΈαž“αŸαŸ‡ αž™αžΎαž„αž“αžΉαž„αž”αžΎαž€αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž”αŸ†αž”αžΆαžαŸ‹αž€αŸ†αž αž»αžŸαž‚αŸ’αžšαž”αŸ‹αž€αž˜αŸ’αžšαž·αžαž“αŸ…αž€αŸ’αž“αž»αž„αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαŸ” αž”αŸ’αžšαžŸαž·αž“αž”αžΎαž’αŸ’αž“αž€αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαžŸαŸ’αž‚αŸ’αžšαžΈαž”αžŠαŸ„αž™αž”αŸ’αžšαžΎ NS_LOG αž€αŸ†αžŽαžαŸ‹αžαžΆαž˜αžœαž·αž’αžΈαž“αŸαŸ‡ αž”αŸ’αžšαž–αŸαž“αŸ’αž’αž€αžαŸ‹αžαŸ’αžšαžΆ ns-3 αž“αžΉαž„αž‘αž‘αž½αž›αž™αž€αž€αžΆαžšαž•αŸ’αž›αžΆαžŸαŸ‹αž”αŸ’αžαžΌαžš αž αžΎαž™αž’αŸ’αž“αž€αž‚αž½αžšαžαŸ‚αžƒαžΎαž‰αž›αž‘αŸ’αž’αž•αž›αžŠαžΌαž…αžαžΆαž„αž€αŸ’αžšαŸ„αž˜αŸ–

Waf: Entering directory `/home/craigdo/repos/ns-3-allinone/ns-3-dev/build'
Waf: Leaving directory `/home/craigdo/repos/ns-3-allinone/ns-3-dev/build'
'build' finished successfully (0.404s)
UdpEchoClientApplication:UdpEchoClient()
UdpEchoClientApplication:SetDataSize(1024)
UdpEchoClientApplication:StartApplication()
UdpEchoClientApplication:ScheduleTransmit()
UdpEchoClientApplication:Send()
Sent 1024 bytes to 10.1.1.2
Received 1024 bytes from 10.1.1.1
UdpEchoClientApplication:HandleRead(0x6241e0, 0x624a20)
Received 1024 bytes from 10.1.1.2
UdpEchoClientApplication:StopApplication()
UdpEchoClientApplication:DoDispose()
UdpEchoClientApplication:~UdpEchoClient()

αž–αŸαžαŸŒαž˜αžΆαž“αž”αŸ†αž”αžΆαžαŸ‹αž€αŸ†αž αž»αžŸαž”αž“αŸ’αžαŸ‚αž˜αžŠαŸ‚αž›αž•αŸ’αžαž›αŸ‹αžŠαŸ„αž™αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž₯αž‘αžΌαžœαž“αŸαŸ‡αž‚αžΊαž“αŸ…αž€αž˜αŸ’αžšαž·αž NS_LOG_FUNCTION αŸ” αžœαžΆαž”αž„αŸ’αž αžΆαž‰αžšαžΆαž›αŸ‹αž€αžΆαžšαž αŸ…αž˜αž»αžαž„αžΆαžšαž€αŸ†αž‘αž»αž„αž–αŸαž›αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαžŸαŸ’αž‚αŸ’αžšαžΈαž”αŸ” αžαžΆαž˜αž€αŸ’αž”αž½αž“αž‘αžΌαž‘αŸ… αž€αŸ’αž“αž»αž„αž˜αž»αžαž„αžΆαžšαžœαž·αž’αžΈαžŸαžΆαžŸαŸ’αžšαŸ’αž αžœαžΆαž‡αžΆαž€αžΆαžšαž”αŸ’αžšαžŸαžΎαžšαž€αŸ’αž“αž»αž„αž€αžΆαžšαž”αŸ’αžšαžΎ (αž™αŸ‰αžΆαž„αž αŸ„αž…αžŽαžΆαžŸαŸ‹)NS_LOG_FUNCTION (this)... αž”αŸ’αžšαžΎ NS_LOG_FUNCTION_NOARGS ()
αž˜αžΆαž“αžαŸ‚αž“αŸ…αž€αŸ’αž“αž»αž„αž˜αž»αžαž„αžΆαžšαž‹αž·αžαž·αžœαž“αŸ’αžαŸ” αž‘αŸ„αŸ‡αž‡αžΆαž™αŸ‰αžΆαž„αžŽαžΆαž€αŸαžŠαŸ„αž™ αž…αŸ†αžŽαžΆαŸ†αžαžΆαž”αŸ’αžšαž–αŸαž“αŸ’αž’ ns-3 αž˜αž·αž“αžαŸ’αžšαžΌαžœαž”αžΆαž“αž‘αžΆαž˜αž‘αžΆαžšαžŠαžΎαž˜αŸ’αž”αžΈαž‚αžΆαŸ†αž‘αŸ’αžšαž˜αž»αžαž„αžΆαžšαž€αžαŸ‹αžαŸ’αžšαžΆαžŽαžΆαž˜αž½αž™αž‘αžΎαž™αŸ” αž€αžΆαžšαžŸαž˜αŸ’αžšαŸαž…αž…αž·αžαŸ’αžαž’αŸ†αž–αžΈαž…αŸ†αž“αž½αž“αž–αŸαžαŸŒαž˜αžΆαž“αžαŸ’αžšαžΌαžœαž”αžΆαž“αž€αžαŸ‹αžαŸ’αžšαžΆαž‘αž»αž€αž±αŸ’αž™αž’αŸ’αž“αž€αž”αž„αŸ’αž€αžΎαžαž‚αŸ†αžšαžΌαž”αž»αž‚αŸ’αž‚αž›αŸ” αž€αŸ’αž“αž»αž„β€‹αž€αžšαžŽαžΈβ€‹αž“αŸƒβ€‹αž€αž˜αŸ’αž˜αžœαž·αž’αžΈβ€‹αž’αŸαž€αžΌ αž…αŸ†αž“αž½αž“β€‹αž…αŸ’αžšαžΎαž“β€‹αž“αŸƒβ€‹αž›αž‘αŸ’αž’αž•αž›β€‹αž“αŸƒβ€‹αž€αžΆαžšβ€‹αž€αžαŸ‹αžαŸ’αžšαžΆβ€‹αž‚αžΊβ€‹αž’αžΆαž…β€‹αž”αŸ’αžšαžΎβ€‹αž”αžΆαž“β€‹αŸ”

αž₯αž‘αžΌαžœαž“αŸαŸ‡αž’αŸ’αž“αž€αž’αžΆαž…αž˜αžΎαž›αž€αŸ†αžŽαžαŸ‹αž αŸαžαž»αž“αŸƒαž€αžΆαžšαž αŸ…αž˜αž»αžαž„αžΆαžšαžŠαŸ‚αž›αžαŸ’αžšαžΌαžœαž”αžΆαž“αž’αŸ’αžœαžΎαž‘αžΎαž„αžŠαŸ„αž™αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαŸ” αž”αŸ’αžšαžŸαž·αž“αž”αžΎαž’αŸ’αž“αž€αž€αŸ’αžšαž‘αŸαž€αž˜αžΎαž›αž±αŸ’αž™αž‡αž·αžαž’αŸ’αž“αž€αž“αžΉαž„αžŸαž˜αŸ’αž‚αžΆαž›αŸ‹αžƒαžΎαž‰αž–αŸ„αŸ‡αžœαŸ€αž“αž’αŸ†αž“αŸ…αž…αž“αŸ’αž›αŸ„αŸ‡αž”αž“αŸ’αž‘αžΆαžαŸ‹ αž€αž˜αŸ’αž˜αžœαž·αž’αžΈ UdpEchoClient αž“αž·αž„αžˆαŸ’αž˜αŸ„αŸ‡αž“αŸƒαžœαž·αž’αžΈαžŸαžΆαžŸαŸ’αžαŸ’αžš αžŠαŸ‚αž›αž’αŸ’αž“αž€αž’αžΆαž…αžšαŸ†αž–αžΉαž„αžαžΆαž“αžΉαž„αžƒαžΎαž‰ C++ scope operator (: :)αŸ” αž“αŸαŸ‡αž‡αžΆαž…αŸαžαž“αžΆαŸ”

αž“αŸαŸ‡αž˜αž·αž“αž˜αŸ‚αž“αž‡αžΆαžˆαŸ’αž˜αŸ„αŸ‡αž“αŸƒαžαŸ’αž“αžΆαž€αŸ‹αž“αŸ„αŸ‡αž‘αŸ αž”αŸ‰αž»αž“αŸ’αžαŸ‚αž‡αžΆαžˆαŸ’αž˜αŸ„αŸ‡αž“αŸƒαžŸαž˜αžΆαžŸαž—αžΆαž‚αž€αžΆαžšαž€αžαŸ‹αžαŸ’αžšαžΆαŸ” αž“αŸ…αž–αŸαž›αžŠαŸ‚αž›αž˜αžΆαž“αž€αžΆαžšαž•αŸ’αž‚αžΌαž•αŸ’αž‚αž„αžšαžœαžΆαž„αž―αž€αžŸαžΆαžšαž”αŸ’αžšαž—αž– αž“αž·αž„αžαŸ’αž“αžΆαž€αŸ‹ αž‡αžΆαž‘αžΌαž‘αŸ…αžœαžΆαž‡αžΆαžˆαŸ’αž˜αŸ„αŸ‡αžšαž”αžŸαŸ‹αžαŸ’αž“αžΆαž€αŸ‹ αž”αŸ‰αž»αž“αŸ’αžαŸ‚αž’αŸ’αž“αž€αž‚αž½αžšαžαŸ‚αžŠαžΉαž„αžαžΆ αžαžΆαž˜αž–αž·αžαžœαžΆαž˜αž·αž“αž˜αŸ‚αž“αž‡αžΆαžˆαŸ’αž˜αŸ„αŸ‡αžšαž”αžŸαŸ‹αžαŸ’αž“αžΆαž€αŸ‹αž‘αŸ αž αžΎαž™αžœαžΆαž˜αžΆαž“αžŸαž‰αŸ’αž‰αžΆαžαŸ‚αž˜αž½αž™αž‡αŸ†αž“αž½αžŸαž±αŸ’αž™αžŸαž‰αŸ’αž‰αžΆαž–αžΈαžšαŸ” αž“αŸαŸ‡αž‚αžΊαž‡αžΆαžœαž·αž’αžΈαž˜αž½αž™αžŠαžΎαž˜αŸ’αž”αžΈαž‡αž½αž™αž’αŸ’αž“αž€αž±αŸ’αž™αž”αŸ‚αž„αž…αŸ‚αž€αžˆαŸ’αž˜αŸ„αŸ‡αžŸαžŽαŸ’αžαŸ‚αž€αž€αžΆαž”αŸ‹αžˆαžΎαž…αŸαž‰αž–αžΈαžˆαŸ’αž˜αŸ„αŸ‡αžαŸ’αž“αžΆαž€αŸ‹αžαžΆαž˜αžœαž·αž’αžΈαžŠαŸαžŸαŸ’αžšαž‘αž“αŸ‹αŸ”

αž‘αŸ„αŸ‡αž™αŸ‰αžΆαž„αžŽαžΆαž€αŸαžŠαŸ„αž™ αž€αŸ’αž“αž»αž„αž€αžšαžŽαžΈαžαŸ’αž›αŸ‡ αžœαžΆαž’αžΆαž…αž–αž·αž”αžΆαž€αž€αŸ’αž“αž»αž„αž€αžΆαžšαž€αŸ†αžŽαžαŸ‹αžαžΆαžœαž·αž’αžΈαžŸαžΆαžŸαŸ’αžαŸ’αžšαž˜αž½αž™αžŽαžΆαžŠαŸ‚αž›αž–αž·αžαž‡αžΆαž”αž„αŸ’αž€αžΎαžαžŸαžΆαžšαž€αŸ†αžŽαžαŸ‹αž αŸαžαž»αŸ” αž”αžΎβ€‹αž˜αžΎαž›β€‹αž’αžαŸ’αžαž”αž‘β€‹αžαžΆαž„β€‹αž›αžΎβ€‹αž“αŸαŸ‡ αž’αŸ’αž“αž€β€‹αž”αŸ’αžšαž αŸ‚αž›β€‹αž‡αžΆβ€‹αž†αŸ’αž„αž›αŸ‹β€‹αžαžΆβ€‹αžαŸ’αžšαž„αŸ‹β€‹αžŽαžΆ?Received 1024 bytes from 10.1.1.2" αž’αŸ’αž“αž€αž’αžΆαž…αžŠαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™αž”αž‰αŸ’αž αžΆαž“αŸαŸ‡αžŠαŸ„αž™αž€αŸ†αžŽαžαŸ‹αž€αž˜αŸ’αžšαž·αž αž”αž»αž–αŸ’αžœαž”αž‘_func αž‘αŸ…αž’αžαŸαžšαž”αžšαž·αžŸαŸ’αžαžΆαž“ NS_LOG αŸ” αžŸαžΆαž€αž›αŸ’αž”αž„αžŠαžΌαž…αžαžΆαž„αž€αŸ’αžšαŸ„αž˜αŸ–

$ export 'NS_LOG=UdpEchoClientApplication=level_all|prefix_func'

αž…αŸ†αžŽαžΆαŸ†αžαžΆαžŸαž‰αŸ’αž‰αžΆαžŸαž˜αŸ’αžšαž„αŸ‹αž‚αžΊαž…αžΆαŸ†αž”αžΆαž…αŸ‹αž–αŸ’αžšαŸ„αŸ‡αžšαž”αžΆαžšαž”αž‰αŸ’αžˆαžšαžŠαŸ‚αž›αž™αžΎαž„αž”αŸ’αžšαžΎαžŠαžΎαž˜αŸ’αž”αžΈαžαŸ†αžŽαžΆαž„αž±αŸ’αž™αž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž€αžΆαžš OR αž€αŸαž‡αžΆαž§αž”αž€αžšαžŽαŸαž—αŸ’αž‡αžΆαž”αŸ‹αž”αŸ†αž–αž„αŸ‹ Unix αž•αž„αžŠαŸ‚αžšαŸ” αž₯αž‘αžΌαžœαž“αŸαŸ‡ αž”αŸ’αžšαžŸαž·αž“αž”αžΎαž’αŸ’αž“αž€αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαžŸαŸ’αž‚αŸ’αžšαžΈαž” αž’αŸ’αž“αž€αž“αžΉαž„αžƒαžΎαž‰αžαžΆαž”αŸ’αžšαž–αŸαž“αŸ’αž’αž€αžαŸ‹αžαŸ’αžšαžΆαž’αžΆαž“αžΆαžαžΆαžšαžΆαž›αŸ‹αžŸαžΆαžšαž“αŸ…αž€αŸ’αž“αž»αž„αž€αŸ†αžŽαžαŸ‹αž αŸαžαž»αžŠαŸ‚αž›αž”αžΆαž“αž•αŸ’αžαž›αŸ‹αž±αŸ’αž™αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αž»αž–αŸ’αžœαž”αž‘αžŠαŸ„αž™αžˆαŸ’αž˜αŸ„αŸ‡αžŸαž˜αžΆαžŸαž—αžΆαž‚αŸ”

Waf: Entering directory `/home/craigdo/repos/ns-3-allinone/ns-3-dev/build'
Waf: Leaving directory `/home/craigdo/repos/ns-3-allinone/ns-3-dev/build'
'build' finished successfully (0.417s)
UdpEchoClientApplication:UdpEchoClient()
UdpEchoClientApplication:SetDataSize(1024)
UdpEchoClientApplication:StartApplication()
UdpEchoClientApplication:ScheduleTransmit()
UdpEchoClientApplication:Send()
UdpEchoClientApplication:Send(): Sent 1024 bytes to 10.1.1.2
Received 1024 bytes from 10.1.1.1
UdpEchoClientApplication:HandleRead(0x6241e0, 0x624a20)
UdpEchoClientApplication:HandleRead(): Received 1024 bytes from 10.1.1.2
UdpEchoClientApplication:StopApplication()
UdpEchoClientApplication:DoDispose()
UdpEchoClientApplication:~UdpEchoClient()

αž₯αž‘αžΌαžœαž“αŸαŸ‡αž’αŸ’αž“αž€αž’αžΆαž…αž˜αžΎαž›αžƒαžΎαž‰αžαžΆαžŸαžΆαžšαž‘αžΆαŸ†αž„αž’αžŸαŸ‹αžŠαŸ‚αž›αž˜αž€αž–αžΈαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž’αžαž·αžαž·αž‡αž“αž’αŸαž€αžΌ UDP αžαŸ’αžšαžΌαžœαž”αžΆαž“αž€αŸ†αžŽαžαŸ‹αž’αžαŸ’αžαžŸαž‰αŸ’αž‰αžΆαžŽαžŠαžΌαž…αž“αŸαŸ‡αŸ” សអរ "Received 1024 bytes from 10.1.1.2"αž₯αž‘αžΌαžœαž“αŸαŸ‡αžαŸ’αžšαžΌαžœαž”αžΆαž“αž€αŸ†αžŽαžαŸ‹αž™αŸ‰αžΆαž„αž…αŸ’αž”αžΆαžŸαŸ‹αžαžΆαž”αžΆαž“αž˜αž€αž–αžΈαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž’αžαž·αžαž·αž‡αž“αž’αŸαž€αžΌαŸ” αžŸαžΆαžšαžŠαŸ‚αž›αž“αŸ…αžŸαž›αŸ‹αžαŸ’αžšαžΌαžœαžαŸ‚αž˜αž€αž–αžΈαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž˜αŸ UDP αž’αŸαž€αžΌαŸ” αž™αžΎαž„αž’αžΆαž…αž”αžΎαž€αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαžŸαž˜αžΆαžŸαž—αžΆαž‚αž“αŸαŸ‡αžŠαŸ„αž™αž”αž‰αŸ’αž…αžΌαž›αž”αž‰αŸ’αž‡αžΈαžŸαž˜αžΆαžŸαž—αžΆαž‚αžŠαŸ‚αž›αž”αŸ†αž”αŸ‚αž€αžŠαŸ„αž™αž–αŸ„αŸ‡αžœαŸ€αž“αž’αŸ†αž“αŸ…αž€αŸ’αž“αž»αž„αž’αžαŸαžšαž”αžšαž·αžŸαŸ’αžαžΆαž“ NS_LOG αŸ”

$ export 'NS_LOG=UdpEchoClientApplication=level_all|prefix_func:
               UdpEchoServerApplication=level_all|prefix_func'

αž€αžΆαžšαž–αŸ’αžšαž˜αžΆαž“αŸ– αž“αŸ…αž€αŸ’αž“αž»αž„αž’αžαŸ’αžαž”αž‘αž§αž‘αžΆαž αžšαžŽαŸαžαžΆαž„αž›αžΎ αž’αŸ’αž“αž€αž“αžΉαž„αžαŸ’αžšαžΌαžœαž›αž»αž”αžαž½αž’αž€αŸ’αžŸαžšαž”αž“αŸ’αž‘αžΆαžαŸ‹αžαŸ’αž˜αžΈαž…αŸαž‰ αž”αž“αŸ’αž‘αžΆαž”αŸ‹αž–αžΈαžŸαž‰αŸ’αž‰αžΆ (:) αžœαžΆαžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αŸ’αžšαžΎαžŠαžΎαž˜αŸ’αž”αžΈαž’αŸ’αžœαžΎαž‘αŸ’αžšαž„αŸ‹αž‘αŸ’αžšαžΆαž™αž―αž€αžŸαžΆαžšαŸ” αž₯αž‘αžΌαžœαž“αŸαŸ‡ αž”αŸ’αžšαžŸαž·αž“αž”αžΎαž’αŸ’αž“αž€αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαžŸαŸ’αž‚αŸ’αžšαžΈαž” αž’αŸ’αž“αž€αž“αžΉαž„αžƒαžΎαž‰αžŸαžΆαžšαž€αŸ†αžŽαžαŸ‹αž αŸαžαž»αž‘αžΆαŸ†αž„αž’αžŸαŸ‹αž–αžΈαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž’αŸαž€αžΌ αž“αž·αž„αž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž˜αŸαŸ” αž’αŸ’αž“αž€β€‹αž’αžΆαž…β€‹αž˜αžΎαž›β€‹αžƒαžΎαž‰β€‹αžαžΆβ€‹αžœαžΆβ€‹αž’αžΆαž…β€‹αž˜αžΆαž“β€‹αž”αŸ’αžšαž™αŸ„αž‡αž“αŸβ€‹αžαŸ’αž›αžΆαŸ†αž„β€‹αžŽαžΆαžŸαŸ‹β€‹αž–αŸαž›β€‹αž€αŸ‚β€‹αž€αŸ†αž αž»αžŸαŸ”

Waf: Entering directory `/home/craigdo/repos/ns-3-allinone/ns-3-dev/build'
Waf: Leaving directory `/home/craigdo/repos/ns-3-allinone/ns-3-dev/build'
'build' finished successfully (0.406s)
UdpEchoServerApplication:UdpEchoServer()
UdpEchoClientApplication:UdpEchoClient()
UdpEchoClientApplication:SetDataSize(1024)
UdpEchoServerApplication:StartApplication()
UdpEchoClientApplication:StartApplication()
UdpEchoClientApplication:ScheduleTransmit()
UdpEchoClientApplication:Send()
UdpEchoClientApplication:Send(): Sent 1024 bytes to 10.1.1.2
UdpEchoServerApplication:HandleRead(): Received 1024 bytes from 10.1.1.1
UdpEchoServerApplication:HandleRead(): Echoing packet
UdpEchoClientApplication:HandleRead(0x624920, 0x625160)
UdpEchoClientApplication:HandleRead(): Received 1024 bytes from 10.1.1.2
UdpEchoServerApplication:StopApplication()
UdpEchoClientApplication:StopApplication()
UdpEchoClientApplication:DoDispose()
UdpEchoServerApplication:DoDispose()
UdpEchoClientApplication:~UdpEchoClient()
UdpEchoServerApplication:~UdpEchoServer()

αž–αŸαž›αžαŸ’αž›αŸ‡αžœαžΆαž˜αžΆαž“αž”αŸ’αžšαž™αŸ„αž‡αž“αŸαž•αž„αžŠαŸ‚αžš αžŠαžΎαž˜αŸ’αž”αžΈαž’αžΆαž…αž˜αžΎαž›αž–αŸαž›αžœαŸαž›αžΆαž€αŸ’αž›αŸ‚αž„αž’αŸ’αžœαžΎ αžŠαŸ‚αž›αžŸαžΆαžšαž€αŸ†αžŽαžαŸ‹αž αŸαžαž»αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αž„αŸ’αž€αžΎαžαŸ” αž’αŸ’αž“αž€αž’αžΆαž…αž’αŸ’αžœαžΎαžœαžΆαž”αžΆαž“αžŠαŸ„αž™αž”αž“αŸ’αžαŸ‚αž˜ OR αž”αŸŠαžΈαž αž”αž»αž–αŸ’αžœαž”αž‘_αž˜αŸ‰αŸ„αž„:

$ export 'NS_LOG=UdpEchoClientApplication=level_all|prefix_func|prefix_time: UdpEchoServerApplication=level_all|prefix_func|prefix_time'

αž‡αžΆαžαŸ’αž˜αžΈαž˜αŸ’αžαž„αž‘αŸ€αž αž’αŸ’αž“αž€αž“αžΉαž„αžαŸ’αžšαžΌαžœαž›αž»αž”αžαž½αž’αž€αŸ’αžŸαžšαž”αž“αŸ’αž‘αžΆαžαŸ‹αžαŸ’αž˜αžΈαžαžΆαž„αž›αžΎαž…αŸαž‰αŸ” αž”αŸ’αžšαžŸαž·αž“αž”αžΎαž’αŸ’αž“αž€αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαžŸαŸ’αž‚αŸ’αžšαžΈαž”αž₯αž‘αžΌαžœαž“αŸαŸ‡ αž’αŸ’αž“αž€αž‚αž½αžšαžαŸ‚αžƒαžΎαž‰αž›αž‘αŸ’αž’αž•αž›αžŠαžΌαž…αžαžΆαž„αž€αŸ’αžšαŸ„αž˜αŸ–

Waf: Entering directory `/home/craigdo/repos/ns-3-allinone/ns-3-dev/build'
Waf: Leaving directory `/home/craigdo/repos/ns-3-allinone/ns-3-dev/build'
'build' finished successfully (0.418s)
0s UdpEchoServerApplication:UdpEchoServer()
0s UdpEchoClientApplication:UdpEchoClient()
0s UdpEchoClientApplication:SetDataSize(1024)
1s UdpEchoServerApplication:StartApplication()
2s UdpEchoClientApplication:StartApplication()
2s UdpEchoClientApplication:ScheduleTransmit()
2s UdpEchoClientApplication:Send()
2s UdpEchoClientApplication:Send(): Sent 1024 bytes to 10.1.1.2
2.00369s UdpEchoServerApplication:HandleRead(): Received 1024 bytes from 10.1.1.1
2.00369s UdpEchoServerApplication:HandleRead(): Echoing packet
2.00737s UdpEchoClientApplication:HandleRead(0x624290, 0x624ad0)
2.00737s UdpEchoClientApplication:HandleRead(): Received 1024 bytes from 10.1.1.2
10s UdpEchoServerApplication:StopApplication()
10s UdpEchoClientApplication:StopApplication()
UdpEchoClientApplication:DoDispose()
UdpEchoServerApplication:DoDispose()
UdpEchoClientApplication:~UdpEchoClient()
UdpEchoServerApplication:~UdpEchoServer()

αžŸαžΌαž˜αž…αŸ†αžŽαžΆαŸ†αžαžΆαž’αŸ’αž“αž€αžŸαžΆαž„αžŸαž„αŸ‹αžŸαž˜αŸ’αžšαžΆαž”αŸ‹ UdpEchoServer αžαŸ’αžšαžΌαžœβ€‹αž”αžΆαž“β€‹αž‚αŸβ€‹αž αŸ…β€‹αž’αŸ†αž‘αž»αž„β€‹αž–αŸαž›β€‹αž€αŸ’αž›αŸ‚αž„β€‹αž’αŸ’αžœαžΎ 0 αžœαž·αž“αžΆαž‘αžΈαŸ” αž“αŸαŸ‡αž–αž·αžαž‡αžΆαž€αžΎαžαž‘αžΎαž„αž˜αž»αž“αž–αŸαž›αž€αžΆαžšαž€αŸ’αž›αŸ‚αž„αž’αŸ’αžœαžΎαž…αžΆαž”αŸ‹αž•αŸ’αžαžΎαž˜ αž”αŸ‰αž»αž“αŸ’αžαŸ‚αž–αŸαž›αžœαŸαž›αžΆαžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αž„αŸ’αž αžΆαž‰αž‡αžΆαžŸαžΌαž“αŸ’αž™αžœαž·αž“αžΆαž‘αžΈαŸ” αžŠαžΌαž…αž‚αŸ’αž“αžΆαžŠαŸ‚αžšαž…αŸ†αž–αŸ„αŸ‡αžŸαžΆαžšαž’αŸ’αž“αž€αžŸαžΆαž„αžŸαž„αŸ‹ UdpEchoClient.

Waf: Entering directory `/home/craigdo/repos/ns-3-allinone/ns-3-dev/build'
Waf: Leaving directory `/home/craigdo/repos/ns-3-allinone/ns-3-dev/build'
'build' finished successfully (0.418s)
0s UdpEchoServerApplication:UdpEchoServer()
0s UdpEchoClientApplication:UdpEchoClient()
0s UdpEchoClientApplication:SetDataSize(1024)
1s UdpEchoServerApplication:StartApplication()
2s UdpEchoClientApplication:StartApplication()
2s UdpEchoClientApplication:ScheduleTransmit()
2s UdpEchoClientApplication:Send()
2s UdpEchoClientApplication:Send(): Sent 1024 bytes to 10.1.1.2
2.00369s UdpEchoServerApplication:HandleRead(): Received 1024 bytes from 10.1.1.1
2.00369s UdpEchoServerApplication:HandleRead(): Echoing packet
2.00737s UdpEchoClientApplication:HandleRead(0x624290, 0x624ad0)
2.00737s UdpEchoClientApplication:HandleRead(): Received 1024 bytes from 10.1.1.2
10s UdpEchoServerApplication:StopApplication()
10s UdpEchoClientApplication:StopApplication()
UdpEchoClientApplication:DoDispose()
UdpEchoServerApplication:DoDispose()
UdpEchoClientApplication:~UdpEchoClient()
UdpEchoServerApplication:~UdpEchoServer()

αžšαŸ†αž›αžΉαž€αžαžΆ αžŸαŸ’αž‚αŸ’αžšαžΈαž” scratch/first.cc αž…αžΆαž”αŸ‹αž•αŸ’αžαžΎαž˜αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž˜αŸαž’αŸαž€αžΌαž˜αž½αž™αžœαž·αž“αžΆαž‘αžΈαž˜αž»αž“αž–αŸαž›αž…αžΆαž”αŸ‹αž•αŸ’αžαžΎαž˜αž€αžΆαžšαž€αŸ’αž›αŸ‚αž„αž’αŸ’αžœαžΎαŸ” αž₯αž‘αžΌαžœαž“αŸαŸ‡αž’αŸ’αž“αž€αž’αžΆαž…αžƒαžΎαž‰αžœαž·αž’αžΈαžŸαžΆαžŸαŸ’αžšαŸ’αžαž“αŸαŸ‡αŸ” αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž…αžΆαž”αŸ‹αž•αŸ’αžαžΎαž˜ αž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž˜αŸαžαŸ’αžšαžΌαžœαž”αžΆαž“αž αŸ…αž™αŸ‰αžΆαž„αž–αž·αžαž”αŸ’αžšαžΆαž€αžŠαž€αŸ’αž“αž»αž„αžœαž·αž“αžΆαž‘αžΈαžŠαŸ†αž”αžΌαž„αŸ” αž’αŸ’αž“αž€αž€αŸαž’αžΆαž…αž€αžαŸ‹αžŸαž˜αŸ’αž‚αžΆαž›αŸ‹αž•αž„αžŠαŸ‚αžšαžαžΆαž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž—αŸ’αž‰αŸ€αžœαž’αŸαž€αžΌαž…αžΆαž”αŸ‹αž•αŸ’αžαžΎαž˜αž“αŸ…αž€αŸ’αž“αž»αž„αžœαž·αž“αžΆαž‘αžΈαž‘αžΈαž–αžΈαžšαž“αŸƒαž€αžΆαžšαž€αŸ’αž›αŸ‚αž„αž’αŸ’αžœαžΎ αžŠαžΌαž…αžŠαŸ‚αž›αž™αžΎαž„αž”αžΆαž“αžŸαž½αžšαž“αŸ…αž€αŸ’αž“αž»αž„αžŸαŸ’αž‚αŸ’αžšαžΈαž”αŸ”

αž₯αž‘αžΌαžœβ€‹αž“αŸαŸ‡ αž’αŸ’αž“αž€β€‹αž’αžΆαž…β€‹αžαžΆαž˜αžŠαžΆαž“β€‹αžŠαŸ†αžŽαžΎαžšβ€‹αž€αžΆαžšβ€‹αž€αŸ’αž›αŸ‚αž„β€‹αž’αŸ’αžœαžΎβ€‹αž”αžΆαž“β€‹αž“αŸ…β€‹αž–αŸαž›β€‹αž αŸ…β€‹αž‘αžΌαžšαžŸαž–αŸ’αž‘ αž€αžΆαž›αžœαž·αž—αžΆαž‚αž”αž‰αŸ’αž‡αžΌαž“ αž“αŸ…αž€αŸ’αž“αž»αž„αž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž—αŸ’αž‰αŸ€αžœαžŠαŸ‚αž›αž αŸ… HandleRead callback Send αž“αŸ…αž€αŸ’αž“αž»αž„αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž˜αŸαž’αŸαž€αžΌαŸ” αž…αŸ†αžŽαžΆαŸ†αžαžΆαž–αŸαž›αžœαŸαž›αžΆαžŠαŸ‚αž›αž”αžΆαž“αž€αž“αŸ’αž›αž„αž•αž»αžαž‘αŸ…αžŠαžΎαž˜αŸ’αž”αžΈαž•αŸ’αž‰αžΎαž€αž‰αŸ’αž…αž”αŸ‹αž–αŸαžαŸŒαž˜αžΆαž“αžαžΆαž˜αžαŸ†αžŽαž–αžΈαž…αŸ†αžŽαž»αž…αž˜αž½αž™αž‘αŸ…αž…αŸ†αžŽαž»αž…αž‚αžΊ 3,69 αž˜αž·αž›αŸ’αž›αžΈαžœαž·αž“αžΆαž‘αžΈαŸ” αž’αŸ’αž“αž€αž’αžΆαž…αž˜αžΎαž›αžƒαžΎαž‰αžαžΆαž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž˜αŸαž’αŸαž€αžΌαž€αžαŸ‹αžαŸ’αžšαžΆαžŸαžΆαžšαžŠαŸ‚αž›αžœαžΆαž”αžΆαž“αž†αŸ’αž›αžΎαž™αžαž”αž‘αŸ…αž“αžΉαž„αž€αž‰αŸ’αž…αž”αŸ‹αž–αŸαžαŸŒαž˜αžΆαž“ αž αžΎαž™αž”αž“αŸ’αž‘αžΆαž”αŸ‹αž˜αž€αž”αž“αŸ’αž‘αžΆαž”αŸ‹αž–αžΈαž€αžΆαžšαž–αž“αŸ’αž™αžΆαž–αŸαž›αž†αžΆαž“αŸ‚αž› αž’αŸ’αž“αž€αžƒαžΎαž‰αžαžΆαž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž—αŸ’αž‰αŸ€αžœαž’αŸαž€αžΌαž‘αž‘αž½αž›αž”αžΆαž“αž€αž‰αŸ’αž…αž”αŸ‹αž–αŸαžαŸŒαž˜αžΆαž“αž’αŸαž€αžΌαž“αŸ…αž€αŸ’αž“αž»αž„αžœαž·αž’αžΈ HandleRead αžšαž”αžŸαŸ‹αžœαžΆαŸ”

αž“αŸ…αž€αŸ’αž“αž»αž„αž€αžΆαžšαž€αŸ’αž›αŸ‚αž„αž’αŸ’αžœαžΎαž“αŸαŸ‡ αž˜αžΆαž“αžšαžΏαž„αž‡αžΆαž…αŸ’αžšαžΎαž“αž€αžΎαžαž‘αžΎαž„αžŠαŸ„αž™αž’αŸ’αž“αž€αž˜αž·αž“αž”αžΆαž“αž…αžΆαž”αŸ‹αž’αžΆαžšαž˜αŸ’αž˜αžŽαŸαŸ” αž”αŸ‰αž»αž“αŸ’αžαŸ‚αž’αŸ’αž“αž€αž’αžΆαž…αžαžΆαž˜αžŠαžΆαž“αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž‘αžΆαŸ†αž„αž˜αžΌαž›αž”αžΆαž“αž™αŸ‰αžΆαž„αž„αžΆαž™αžŸαŸ’αžšαž½αž›αžŠαŸ„αž™αž”αžΎαž€αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαžŸαž˜αžΆαžŸαž’αžΆαžαž»αž€αŸ†αžŽαžαŸ‹αž αŸαžαž»αž‘αžΆαŸ†αž„αž’αžŸαŸ‹αž“αŸ…αž€αŸ’αž“αž»αž„αž”αŸ’αžšαž–αŸαž“αŸ’αž’αŸ” αžŸαžΆαž€αž›αŸ’αž”αž„αž€αŸ†αžŽαžαŸ‹αž’αžαŸαžš NS_LOG αž‘αŸ…αžαž˜αŸ’αž›αŸƒαžαžΆαž„αž€αŸ’αžšαŸ„αž˜

$ export 'NS_LOG=*=level_all|prefix_func|prefix_time'

αžŸαž‰αŸ’αž‰αžΆαž•αŸ’αž€αžΆαž™αžαžΆαž„αž›αžΎαž‚αžΊαž‡αžΆαžαž½αž’αž€αŸ’αžŸαžšαž‡αŸ†αž“αž½αžŸαžŸαž˜αŸ’αžšαžΆαž”αŸ‹αžŸαž˜αžΆαžŸαž—αžΆαž‚αž€αžΆαžšαž€αžαŸ‹αžαŸ’αžšαžΆαŸ” αžœαžΆαž“αžΉαž„αžšαž½αž˜αž”αž‰αŸ’αž…αžΌαž›αž’αžΆαžαž»αž‘αžΆαŸ†αž„αž’αžŸαŸ‹αž“αŸ…αž€αŸ’αž“αž»αž„αžŸαž˜αžΆαžŸαž’αžΆαžαž»αž‘αžΆαŸ†αž„αž’αžŸαŸ‹αžŠαŸ‚αž›αž”αžΆαž“αž”αŸ’αžšαžΎαž“αŸ…αž€αŸ’αž“αž»αž„αž€αžΆαžšαž€αŸ’αž›αŸ‚αž„αž’αŸ’αžœαžΎαŸ” αžαŸ’αž‰αž»αŸ†αž“αžΉαž„αž˜αž·αž“αž•αž›αž·αžαž‘αžΎαž„αžœαž·αž‰αž“αžΌαžœαž›αž‘αŸ’αž’αž•αž›αž“αŸ…αž‘αžΈαž“αŸαŸ‡αž‘αŸ (αž“αŸ…αž–αŸαž›αžŸαžšαžŸαŸαžšαžœαžΆαž”αž„αŸ’αž€αžΎαž 1265 αž”αž“αŸ’αž‘αžΆαžαŸ‹αž“αŸƒαž‘αž·αž“αŸ’αž“αž•αž›αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž€αž‰αŸ’αž…αž”αŸ‹αž’αŸαž€αžΌαžαŸ‚αž˜αž½αž™) αž”αŸ‰αž»αž“αŸ’αžαŸ‚αž’αŸ’αž“αž€αž’αžΆαž…αž”αŸ’αžαžΌαžšαž‘αž·αžŸαž–αŸαžαŸŒαž˜αžΆαž“αž“αŸαŸ‡αž‘αŸ…αž―αž€αžŸαžΆαžšαž˜αž½αž™ αž αžΎαž™αž˜αžΎαž›αžœαžΆαž“αŸ…αž€αŸ’αž“αž»αž„αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž“αž·αž–αž“αŸ’αž’αžŠαŸ‚αž›αž’αŸ’αž“αž€αž…αžΌαž›αž…αž·αžαŸ’αžαŸ”

$ ./waf --run scratch/myfirst > log.out 2>&1

αžαŸ’αž‰αž»αŸ†αž•αŸ’αž‘αžΆαž›αŸ‹αž”αŸ’αžšαžΎαž€αŸ†αžŽαŸ‚αž“αŸƒαž€αžΆαžšαž€αžαŸ‹αžαŸ’αžšαžΆαžŠαŸ‚αž›αž”αŸ’αžšαžΎαž–αžΆαž€αŸ’αž™αžŸαŸ†αžŠαžΈαž™αŸ‰αžΆαž„αžαŸ’αž›αžΆαŸ†αž„αž“αŸαŸ‡ αž“αŸ…αž–αŸαž›αžŠαŸ‚αž›αžαŸ’αž‰αž»αŸ†αž˜αžΆαž“αž”αž‰αŸ’αž αžΆ αž αžΎαž™αž˜αž·αž“αžŠαžΉαž„αžαžΆαž˜αžΆαž“αžšαžΏαž„αžαž»αžŸαž€αž“αŸ’αž›αŸ‚αž„αžŽαžΆαž“αŸ„αŸ‡αž‘αŸαŸ” αžαŸ’αž‰αž»αŸ†αž’αžΆαž…αž’αŸ’αžœαžΎαžαžΆαž˜αž€αžΆαžšαž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž€αžΌαžŠαž”αžΆαž“αž™αŸ‰αžΆαž„αž„αžΆαž™αžŸαŸ’αžšαž½αž›αžŠαŸ„αž™αž˜αž·αž“αž…αžΆαŸ†αž”αžΆαž…αŸ‹αž€αŸ†αžŽαžαŸ‹αž…αŸ†αžŽαž»αž…αžˆαž”αŸ‹ αž“αž·αž„αž‡αŸ†αž αžΆαž“αžαžΆαž˜αžšαž™αŸˆαž€αžΌαžŠαž“αŸ…αž€αŸ’αž“αž»αž„αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž”αŸ†αž”αžΆαžαŸ‹αž€αŸ†αž αž»αžŸαŸ” αžαŸ’αž‰αž»αŸ†αž‚αŸ’αžšαžΆαž“αŸ‹αžαŸ‚αž’αžΆαž…αž€αŸ‚αžŸαž˜αŸ’αžšαž½αž›αž›αž‘αŸ’αž’αž•αž›αž“αŸ…αž€αŸ’αž“αž»αž„αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž“αž·αž–αž“αŸ’αž’αžŠαŸ‚αž›αžαŸ’αž‰αž»αŸ†αž…αžΌαž›αž…αž·αžαŸ’αž αž αžΎαž™αžšαž€αž˜αžΎαž›αž’αŸ’αžœαžΈαžŠαŸ‚αž›αžαŸ’αž‰αž»αŸ†αžšαŸ†αž–αžΉαž„αž‘αž»αž€ αž αžΎαž™αžƒαžΎαž‰αž’αŸ’αžœαžΈαž˜αž½αž™αžŠαŸ‚αž›αžαŸ’αž‰αž»αŸ†αž“αžΉαž€αžŸαŸ’αž˜αžΆαž“αž˜αž·αž“αžŠαž›αŸ‹αŸ” αž“αŸ…αž–αŸαž›αžŠαŸ‚αž›αžαŸ’αž‰αž»αŸ†αž˜αžΆαž“αž‚αŸ†αž“αž·αžαž‘αžΌαž‘αŸ…αž’αŸ†αž–αžΈαž’αŸ’αžœαžΈαžŠαŸ‚αž›αž“αžΉαž„αžαž»αžŸ αžαŸ’αž‰αž»αŸ†αž”αžΆαž“αž…αžΌαž›αž‘αŸ…αž€αŸ’αž“αž»αž„αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž”αŸ†αž”αžΆαžαŸ‹αž€αŸ†αž αž»αžŸ αžŠαžΎαž˜αŸ’αž”αžΈαžŸαŸ’αžœαŸ‚αž„αž™αž›αŸ‹αž–αžΈαž”αž‰αŸ’αž αžΆαŸ” αž”αŸ’αžšαž—αŸαž‘αž“αŸƒαž›αž‘αŸ’αž’αž•αž›αž“αŸαŸ‡αž’αžΆαž…αž˜αžΆαž“αž”αŸ’αžšαž™αŸ„αž‡αž“αŸαž‡αžΆαž–αž·αžŸαŸαžŸαž“αŸ…αž–αŸαž›αžŠαŸ‚αž›αžŸαŸ’αž‚αŸ’αžšαžΈαž”αžšαž”αžŸαŸ‹αž’αŸ’αž“αž€αž’αŸ’αžœαžΎαž’αŸ’αžœαžΈαž˜αž½αž™αžŠαŸ‚αž›αž˜αž·αž“αž”αžΆαž“αžšαŸ†αž–αžΉαž„αž‘αž»αž€αž‘αžΆαŸ†αž„αžŸαŸ’αžšαž»αž„αŸ” αž”αŸ’αžšαžŸαž·αž“αž”αžΎαž’αŸ’αž“αž€αž”αŸ’αžšαžΎαžαŸ‚αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž”αŸ†αž”αžΆαžαŸ‹αž€αŸ†αž αž»αžŸ αž’αŸ’αž“αž€αž’αžΆαž…αž“αžΉαž„αžαž€αžαžΆαž“αž€αžΆαžšαž€αŸ‚αž”αŸ’αžšαŸ‚αž‘αžΆαŸ†αž„αžŸαŸ’αžšαž»αž„αŸ” αž€αžΆαžšαž…αž»αŸ‡αžˆαŸ’αž˜αŸ„αŸ‡αž’αŸ’αžœαžΎαž±αŸ’αž™αž€αžΆαžšαž•αŸ’αž›αžΆαžŸαŸ‹αž”αŸ’αžαžΌαžšαž”αŸ‚αž”αž“αŸαŸ‡αž‚αž½αžšαž±αŸ’αž™αž€αžαŸ‹αžŸαž˜αŸ’αž‚αžΆαž›αŸ‹αŸ”

5.1.3 αž€αžΆαžšαž”αž“αŸ’αžαŸ‚αž˜αž€αžΆαžšαž€αžαŸ‹αžαŸ’αžšαžΆαž‘αŸ…αž€αŸ’αž“αž»αž„αž›αŸαžαž€αžΌαžŠαžšαž”αžŸαŸ‹αž’αŸ’αž“αž€αŸ”

αž’αŸ’αž“αž€αž’αžΆαž…αž”αž“αŸ’αžαŸ‚αž˜αž’αžΆαžαž»αžαŸ’αž˜αžΈαž‘αŸ…αž€αžΆαžšαž€αŸ’αž›αŸ‚αž„αž’αŸ’αžœαžΎαžšαž”αžŸαŸ‹αž’αŸ’αž“αž€αžŠαŸ„αž™αž’αŸ’αžœαžΎαž€αžΆαžšαž αŸ…αž‘αŸ…αž€αžΆαž“αŸ‹αžŸαž˜αžΆαžŸαž’αžΆαžαž»αž€αŸ†αžŽαžαŸ‹αž αŸαžαž»αž–αžΈαž˜αŸ‰αžΆαž€αŸ’αžšαžΌαž…αŸ’αžšαžΎαž“αŸ” αžαŸ„αŸ‡αž’αŸ’αžœαžΎαžœαžΆαž€αŸ’αž“αž»αž„αžŸαŸ’αž‚αŸ’αžšαžΈαž” myfirst.ccαžŠαŸ‚αž›αž™αžΎαž„αž˜αžΆαž“αž“αŸ…αž€αŸ’αž“αž»αž„αžαž "αžŸαŸ’αž’αžΆαž" αŸ” αžŸαžΌαž˜αž…αžΆαŸ†αžαžΆαž™αžΎαž„αž”αžΆαž“αž€αŸ†αžŽαžαŸ‹αžŸαž˜αžΆαžŸαž’αžΆαžαž»αž“αŸƒαž€αžΆαžšαž€αžαŸ‹αžαŸ’αžšαžΆαž“αŸ…αž€αŸ’αž“αž»αž„αžŸαŸαžŽαžΆαžšαžΈαž™αŸ‰αžΌαž“αŸαŸ‡αŸ–

NS_LOG_COMPONENT_DEFINE ("FirstScriptExample");

αž’αŸ’αž“αž€αžŠαžΉαž„αžαžΆαž’αŸ’αž“αž€αž’αžΆαž…αž”αžΎαž€αž€αžΆαžšαž€αžαŸ‹αžαŸ’αžšαžΆαžŸαžΆαžšαž‘αžΆαŸ†αž„αž’αžŸαŸ‹αž–αžΈαžŸαž˜αžΆαžŸαž’αžΆαžαž»αž“αŸαŸ‡αžŠαŸ„αž™αž€αŸ†αžŽαžαŸ‹αž’αžαŸαžšαž”αžšαž·αžŸαŸ’αžαžΆαž“ NS_LOG αž“αŸ…αž€αž˜αŸ’αžšαž·αžαž•αŸ’αžŸαŸαž„αŸ—αž‚αŸ’αž“αžΆαŸ” αž…αžΌαžšαž”αž“αŸ’αžαž‘αŸ…αž˜αž»αž αž αžΎαž™αž”αž“αŸ’αžαŸ‚αž˜αž’αžΆαžαž»αž˜αž½αž™αž…αŸ†αž“αž½αž“αž‘αŸ…αžŸαŸ’αž‚αŸ’αžšαžΈαž”αŸ” αž˜αŸ‰αžΆαž€αŸ’αžšαžΌαžŠαŸ‚αž›αž”αŸ’αžšαžΎαžŠαžΎαž˜αŸ’αž”αžΈαž”αž“αŸ’αžαŸ‚αž˜αžŸαžΆαžšαž€αž˜αŸ’αžšαž·αžαž–αŸαžαŸŒαž˜αžΆαž“αž‘αŸ…αž€αŸ’αž“αž»αž„αž€αŸ†αžŽαžαŸ‹αž αŸαžαž»αž‚αžΊ NS_LOG_INFOαŸ” αžαŸ„αŸ‡αž”αž“αŸ’αžαŸ‚αž˜αžŸαžΆαžšαž˜αž½αž™ (αž˜αž»αž“αž“αžΉαž„αž™αžΎαž„αž…αžΆαž”αŸ‹αž•αŸ’αžαžΎαž˜αž”αž„αŸ’αž€αžΎαž nodes) αžŠαŸ‚αž›αž”αŸ’αžšαžΆαž”αŸ‹αž’αŸ’αž“αž€αžαžΆ script αžŸαŸ’αžαž·αžαž“αŸ…αž€αŸ’αž“αž»αž„αžŠαŸ†αžŽαžΆαž€αŸ‹αž€αžΆαž› "Creating Topology"αŸ” αž“αŸαŸ‡αžαŸ’αžšαžΌαžœαž”αžΆαž“αž’αŸ’αžœαžΎαž“αŸ…αž€αŸ’αž“αž»αž„αž’αžαŸ’αžαž”αž‘αž€αžΌαžŠαžαžΆαž„αž€αŸ’αžšαŸ„αž˜,
αž”αžΎαž€αž‘αžΎαž„ scratch/myfirst.cc αž“αŸ…αž€αŸ’αž“αž»αž„αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž“αž·αž–αž“αŸ’αž’αžŠαŸ‚αž›αž’αŸ’αž“αž€αž…αžΌαž›αž…αž·αžαŸ’αž αž αžΎαž™αž”αž“αŸ’αžαŸ‚αž˜αž”αž“αŸ’αž‘αžΆαžαŸ‹,
NS_LOG_INFO ("Creating Topology");
αž“αŸ…αž…αŸ†αž–αŸ„αŸ‡αž˜αž»αžαž”αž“αŸ’αž‘αžΆαžαŸ‹,

NodeContainer nodes;
nodes.Create (2);

αž₯αž‘αžΌαžœαž“αŸαŸ‡αž…αž„αž€αŸ’αžšαž„αžŸαŸ’αž‚αŸ’αžšαžΈαž”αžŠαŸ„αž™αž”αŸ’αžšαžΎ αžœαŸ‰αžΆαž αŸ’αžœαž αžΎαž™αžŸαž˜αŸ’αž’αžΆαžαž’αžαŸαžš NS_LOG αžŠαžΎαž˜αŸ’αž”αžΈαž”αž·αž‘αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαžŸαŸ’αž‘αŸ’αžšαžΈαž˜αž€αŸ†αžŽαžαŸ‹αž αŸαžαž»αžŠαŸ‚αž›αž™αžΎαž„αž”αžΆαž“αž”αžΎαž€αž˜αž»αž“αž“αŸαŸ‡αŸ–

$ ./waf
$ export NS_LOG=
Π’Π΅ΠΏΠ΅Ρ€ΡŒ, Ссли Π²Ρ‹ запуститС скрипт,
$ ./waf --run scratch/myfirst

αž’αŸ’αž“αž€β€‹αž“αžΉαž„β€‹αž˜αž·αž“β€‹αžƒαžΎαž‰β€‹αžŸαžΆαžšβ€‹αžαŸ’αž˜αžΈβ€‹αž‘αŸ αž–αŸ’αžšαŸ„αŸ‡β€‹αžŸαž˜αžΆαžŸαž’αžΆαžαž»β€‹αž…αžΌαž›β€‹αžŠαŸ‚αž›β€‹αž–αžΆαž€αŸ‹αž–αŸαž“αŸ’αž’ (FirstScriptExample) αž˜αž·αž“β€‹αžαŸ’αžšαžΌαžœβ€‹αž”αžΆαž“β€‹αž”αžΎαž€αŸ” αžŠαžΎαž˜αŸ’αž”αžΈβ€‹αž˜αžΎαž›β€‹αžŸαžΆαžšβ€‹αžšαž”αžŸαŸ‹β€‹αž’αŸ’αž“αž€ αž’αŸ’αž“αž€β€‹αžαŸ’αžšαžΌαžœβ€‹αž”αžΎαž€β€‹αžŸαž˜αžΆαžŸαž—αžΆαž‚β€‹αž€αžαŸ‹αžαŸ’αžšαžΆ FirstScript αž§αž‘αžΆαž αžšαžŽαŸ αž‡αžΆαž˜αž½αž™αž“αžΉαž„αž€αž˜αŸ’αžšαž·αžαž˜αž·αž“αž‘αžΆαž”αž‡αžΆαž„ NS_LOG_INFO αŸ” αž”αŸ’αžšαžŸαž·αž“αž”αžΎαž’αŸ’αž“αž€αž‚αŸ’αžšαžΆαž“αŸ‹αžαŸ‚αž…αž„αŸ‹αžƒαžΎαž‰αž€αž˜αŸ’αžšαž·αžαž“αŸƒαž€αžΆαžšαž€αžαŸ‹αžαŸ’αžšαžΆαž‡αžΆαž€αŸ‹αž›αžΆαž€αŸ‹αž“αŸαŸ‡ αž’αŸ’αž“αž€αž’αžΆαž…αž”αžΎαž€αžœαžΆαžŠαžΌαž…αž“αŸαŸ‡αž”αžΆαž“αŸ”

$ export NS_LOG=FirstScriptExample=info

αž”αŸ’αžšαžŸαž·αž“αž”αžΎαž’αŸ’αž“αž€αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαžŸαŸ’αž‚αŸ’αžšαžΈαž”αž₯αž‘αžΌαžœαž“αŸαŸ‡ αž’αŸ’αž“αž€αž“αžΉαž„αžƒαžΎαž‰αžŸαžΆαžšαžαŸ’αž˜αžΈ "Creating Topology"

Waf: Entering directory `/home/craigdo/repos/ns-3-allinone/ns-3-dev/build'
Waf: Leaving directory `/home/craigdo/repos/ns-3-allinone/ns-3-dev/build'
'build' finished successfully (0.404s)
Creating Topology
Sent 1024 bytes to 10.1.1.2
Received 1024 bytes from 10.1.1.1
Received 1024 bytes from 10.1.1.2

5.2 αž€αžΆαžšαž”αŸ’αžšαžΎαž’αžΆαž‚αž»αž™αž˜αŸ‰αž„αŸ‹αž”αž“αŸ’αž‘αžΆαžαŸ‹αž–αžΆαž€αŸ’αž™αž”αž‰αŸ’αž‡αžΆ

5.2.1 αž”αžŠαž·αžŸαŸαž’αžαž˜αŸ’αž›αŸƒαž‚αž»αžŽαž›αž€αŸ’αžαžŽαŸˆαž›αŸ†αž“αžΆαŸ†αžŠαžΎαž˜

αžœαž·αž’αžΈαž˜αž½αž™αž‘αŸ€αžαžŠαžΎαž˜αŸ’αž”αžΈαž•αŸ’αž›αžΆαžŸαŸ‹αž”αŸ’αžαžΌαžšαž₯αžšαž·αž™αžΆαž”αž‘αž“αŸƒαžŸαŸ’αž‚αŸ’αžšαžΈαž” ns-3 αžŠαŸ„αž™αž˜αž·αž“αž…αžΆαŸ†αž”αžΆαž…αŸ‹αž€αŸ‚αžŸαž˜αŸ’αžšαž½αž› αž¬αžŸαžΆαž„αžŸαž„αŸ‹αž‚αžΊαžαŸ’αžšαžΌαžœαž”αŸ’αžšαžΎαž’αžΆαž‚αž»αž™αž˜αŸ‰αž„αŸ‹αž”αž“αŸ’αž‘αžΆαžαŸ‹αž–αžΆαž€αŸ’αž™αž”αž‰αŸ’αž‡αžΆαŸ” αž™αžΎαž„αž•αŸ’αžαž›αŸ‹αž™αž“αŸ’αžαž€αžΆαžšαž˜αž½αž™αžŠαžΎαž˜αŸ’αž”αžΈαž‰αŸ‚αž€αž’αžΆαž‚αž»αž™αž˜αŸ‰αž„αŸ‹αž”αž“αŸ’αž‘αžΆαžαŸ‹αž–αžΆαž€αŸ’αž™αž”αž‰αŸ’αž‡αžΆ αž“αž·αž„αž€αŸ†αžŽαžαŸ‹αž’αžαŸαžšαž˜αžΌαž›αžŠαŸ’αž‹αžΆαž“ αž“αž·αž„αžŸαž€αž›αžŠαŸ„αž™αžŸαŸ’αžœαŸαž™αž”αŸ’αžšαžœαžαŸ’αžαž·αžŠαŸ„αž™αž•αŸ’αž’αŸ‚αž€αž›αžΎαž›αž‘αŸ’αž’αž•αž›αŸ”

αž‡αŸ†αž αžΆαž“αžŠαŸ†αž”αžΌαž„αž€αŸ’αž“αž»αž„αž€αžΆαžšαž”αŸ’αžšαžΎαž”αŸ’αžšαž–αŸαž“αŸ’αž’αž’αžΆαž‚αž»αž™αž˜αŸ‰αž„αŸ‹αž”αž“αŸ’αž‘αžΆαžαŸ‹αž–αžΆαž€αŸ’αž™αž”αž‰αŸ’αž‡αžΆαž‚αžΊαžŠαžΎαž˜αŸ’αž”αžΈαž”αŸ’αžšαž€αžΆαžŸαž‰αŸ‚αž€αž”αž“αŸ’αž‘αžΆαžαŸ‹αž–αžΆαž€αŸ’αž™αž”αž‰αŸ’αž‡αžΆαŸ” αž“αŸαŸ‡αž–αž·αžαž‡αžΆαž„αžΆαž™αžŸαŸ’αžšαž½αž›αž’αŸ’αžœαžΎ (αž“αŸ…αž€αŸ’αž“αž»αž„αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž…αž˜αŸ’αž”αž„αžšαž”αžŸαŸ‹αž’αŸ’αž“αž€) αžŠαžΌαž…αž“αŸ…αž€αŸ’αž“αž»αž„αž€αžΌαžŠαžαžΆαž„αž€αŸ’αžšαŸ„αž˜αŸ”

int
main (int argc, char *argv[])
{
...
CommandLine cmd;
cmd.Parse (argc, argv);
...
}

αž’αžαŸ’αžαž”αž‘αžαŸ’αž›αžΈαž–αžΈαžšαž‡αž½αžšαžŠαŸαžŸαžΆαž˜αž‰αŸ’αž‰αž“αŸαŸ‡αž–αž·αžαž‡αžΆαž˜αžΆαž“αž”αŸ’αžšαž™αŸ„αž‡αž“αŸαžαŸ’αž›αžΆαŸ†αž„αžŽαžΆαžŸαŸ‹αž“αŸ…αž€αŸ’αž“αž»αž„αžŸαž·αž‘αŸ’αž’αž·αžšαž”αžŸαŸ‹αžœαžΆαŸ” αžœαžΆαž”αžΎαž€αž‘αŸ’αžœαžΆαžšαž‘αŸ…αž€αžΆαž“αŸ‹αž”αŸ’αžšαž–αŸαž“αŸ’αž’αž’αžαŸαžš αž“αž·αž„αž‚αž»αžŽαž›αž€αŸ’αžαžŽαŸˆαžŸαž€αž› ns-3 αŸ” αž…αžΌαžšαž”αž“αŸ’αžαŸ‚αž˜αž€αžΌαžŠαž–αžΈαžšαž‡αž½αžšαž‘αŸ…αž€αžΆαžšαž…αžΆαž”αŸ‹αž•αŸ’αžαžΎαž˜αž“αŸƒαž˜αž»αžαž„αžΆαžšαžŸαŸ’αž‚αŸ’αžšαžΈαž”αž˜αŸ scratch/myfirst.cc. αž”αž“αŸ’αžαž‘αŸ…αž˜αž»αž αž™αžΎαž„αž…αž„αž€αŸ’αžšαž„αžŸαŸ’αž‚αŸ’αžšαžΈαž” αž αžΎαž™αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαžœαžΆ αž“αŸ…αž–αŸαž›αžŠαŸ†αžŽαžΎαžšαž€αžΆαžš αž™αžΎαž„αžŸαŸ’αž“αžΎαžŸαž»αŸ†αž‡αŸ†αž“αž½αž™αžŠαžΌαž…αžαžΆαž„αž€αŸ’αžšαŸ„αž˜αŸ”

$ ./waf --run "scratch/myfirst --PrintHelp"

αž–αžΆαž€αŸ’αž™αž”αž‰αŸ’αž‡αžΆαž“αŸαŸ‡αž“αžΉαž„αžŸαž½αžš αžœαŸ‰αžΆ αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαžŸαŸ’αž‚αŸ’αžšαžΈαž” scratch/myfirst αž αžΎαž™αž†αŸ’αž›αž„αž€αžΆαžαŸ‹αžœαžΆαž“αžΌαžœαž’αžΆαž‚αž»αž™αž˜αŸ‰αž„αŸ‹αž”αž“αŸ’αž‘αžΆαžαŸ‹αž–αžΆαž€αŸ’αž™αž”αž‰αŸ’αž‡αžΆ - αž‡αŸ†αž“αž½αž™αž”αŸ„αŸ‡αž–αž»αž˜αŸ’αž–. αžŸαž‰αŸ’αž‰αžΆαžŸαž˜αŸ’αžšαž„αŸ‹αžαŸ’αžšαžΌαžœαž”αžΆαž“αž‘αžΆαž˜αž‘αžΆαžšαžŠαžΎαž˜αŸ’αž”αžΈαž”αž„αŸ’αž αžΆαž‰αžαžΆαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαžŽαžΆαž˜αž½αž™αžŠαŸ‚αž›αž’αžΆαž‚αž»αž™αž˜αŸ‰αž„αŸ‹αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αž˜αŸ’αžšαž»αž„αž‘αž»αž€αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αŸ” αž§αž”αž€αžšαžŽαŸαž‰αŸ‚αž€αž”αž“αŸ’αž‘αžΆαžαŸ‹αž–αžΆαž€αŸ’αž™αž”αž‰αŸ’αž‡αžΆαž“αžΉαž„αžšαž€αžƒαžΎαž‰αž’αžΆαž‚αž»αž™αž˜αŸ‰αž„αŸ‹ - αž‡αŸ†αž“αž½αž™αž”αŸ„αŸ‡αž–αž»αž˜αŸ’αž– αž αžΎαž™αž“αžΉαž„αž”αž„αŸ’αž αžΆαž‰αž…αž˜αŸ’αž›αžΎαž™

Waf: Entering directory `/home/craigdo/repos/ns-3-allinone/ns-3-dev/build'
Waf: Leaving directory `/home/craigdo/repos/ns-3-allinone/ns-3-dev/build'
'build' finished successfully (0.413s)
TcpL4Protocol:TcpStateMachine()
CommandLine:HandleArgument(): Handle arg name=PrintHelp value=
--PrintHelp: Print this help message.
--PrintGroups: Print the list of groups.
--PrintTypeIds: Print all TypeIds.
--PrintGroup=[group]: Print all TypeIds of group.
--PrintAttributes=[typeid]: Print all attributes of typeid.
--PrintGlobals: Print the list of globals.

αž₯αž‘αžΌαžœαž“αŸαŸ‡αžŸαžΌαž˜αž€αŸ’αžšαž‘αŸαž€αž˜αžΎαž›αž‡αž˜αŸ’αžšαžΎαžŸ - αž‚αž»αžŽαž›αž€αŸ’αžαžŽαŸˆαž”αŸ„αŸ‡αž–αž»αž˜αŸ’αž–. αž™αžΎαž„αž”αžΆαž“αž“αž·αž™αžΆαž™αžšαž½αž…αž αžΎαž™αž’αŸ†αž–αžΈαž”αŸ’αžšαž–αŸαž“αŸ’αž’αž‚αž»αžŽαž›αž€αŸ’αžαžŽαŸˆ ns-3 αž“αŸ…αž–αŸαž›αžŸαž·αž€αŸ’αžŸαžΆαž’αž€αŸ’αžŸαžšαž‘αžΈαž˜αž½αž™.cc αŸ” αž™αžΎαž„αž”αžΆαž“αžƒαžΎαž‰αž”αž“αŸ’αž‘αžΆαžαŸ‹αž“αŸƒαž€αžΌαžŠαžŠαžΌαž…αžαžΆαž„αž€αŸ’αžšαŸ„αž˜,

PointToPointHelper pointToPoint;
pointToPoint.SetDeviceAttribute ("DataRate", StringValue ("5Mbps"));
pointToPoint.SetChannelAttribute ("Delay", StringValue ("2ms"));

αž αžΎαž™αž–αž½αž€αž‚αŸαž”αžΆαž“αž“αž·αž™αžΆαž™αžαžΆ αž’αžαŸ’αžšαžΆβ€‹αž‘αž·αž“αŸ’αž“αž“αŸαž™ αžαžΆαž˜αž–αž·αžαž‚αžΊαž‡αžΆαž‚αž»αžŽαž›αž€αŸ’αžαžŽαŸˆ αž§αž”αž€αžšαžŽαŸ PointToPointNet. αž…αžΌαžšαž™αžΎαž„αž”αŸ’αžšαžΎαž–αžΆαž€αŸ’αž™αž”αž‰αŸ’αž‡αžΆ argument parser αžŠαžΎαž˜αŸ’αž”αžΈαž˜αžΎαž›αž‚αž»αžŽαž›αž€αŸ’αžαžŽαŸˆ αž§αž”αž€αžšαžŽαŸ PointToPointNet. αž”αž‰αŸ’αž‡αžΈαž‡αŸ†αž“αž½αž™αž“αž·αž™αžΆαž™αžαžΆαž’αŸ’αžœαžΈαžŠαŸ‚αž›αž™αžΎαž„αžαŸ’αžšαžΌαžœαž•αŸ’αžαž›αŸ‹ αž”αŸ’αžšαž—αŸαž‘αž›αŸαžαžŸαž˜αŸ’αž‚αžΆαž›αŸ‹. αž“αŸαŸ‡αž‚αžΊαž‡αžΆαžˆαŸ’αž˜αŸ„αŸ‡αž“αŸƒαžαŸ’αž“αžΆαž€αŸ‹αžŠαŸ‚αž›αž‚αž»αžŽαž›αž€αŸ’αžαžŽαŸˆαž“αŸƒαž€αžΆαžšαž…αžΆαž”αŸ‹αž’αžΆαžšαž˜αŸ’αž˜αžŽαŸαž‡αžΆαž€αž˜αŸ’αž˜αžŸαž·αž‘αŸ’αž’αž·αŸ” αž€αŸ’αž“αž»αž„αž€αžšαžŽαžΈαžšαž”αžŸαŸ‹αž™αžΎαž„αžœαžΆαž“αžΉαž„αž˜αžΆαž“ ns3::PointToPointNetDevice. αžαŸ„αŸ‡αž”αž“αŸ’αžαž‘αŸ…αž˜αž»αž αž…αžΌαž›

$ ./waf --run "scratch/myfirst --PrintAttributes=ns3::PointToPointNetDevice"

αž”αŸ’αžšαž–αŸαž“αŸ’αž’αž“αžΉαž„αž”αŸ„αŸ‡αž–αž»αž˜αŸ’αž–αž›αž€αŸ’αžαžŽαŸˆαž‘αžΆαŸ†αž„αž’αžŸαŸ‹αž“αŸƒαž”αŸ’αžšαž—αŸαž‘αž§αž”αž€αžšαžŽαŸαž”αžŽαŸ’αžαžΆαž‰αž“αŸαŸ‡αŸ” αž’αŸ’αž“αž€αž“αžΉαž„αžƒαžΎαž‰αžαžΆαž€αŸ’αž“αž»αž„αž…αŸ†αžŽαŸ„αž˜αž‚αž»αžŽαž›αž€αŸ’αžαžŽαŸˆαž“αŸ…αž€αŸ’αž“αž»αž„αž”αž‰αŸ’αž‡αžΈαž‚αžΊ

--ns3::PointToPointNetDevice::DataRate=[32768bps]:
The default data rate for point to point links

αž“αŸαŸ‡αž‚αžΊαž‡αžΆαžαž˜αŸ’αž›αŸƒαž›αŸ†αž“αžΆαŸ†αžŠαžΎαž˜αžŠαŸ‚αž›αž“αžΉαž„αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αŸ’αžšαžΎαžŠαŸ„αž™αž”αŸ’αžšαž–αŸαž“αŸ’αž’αž“αŸ…αž–αŸαž›αž”αž„αŸ’αž€αžΎαžαžœαžαŸ’αžαž» αž§αž”αž€αžšαžŽαŸ PointToPointNet. αž™αžΎαž„αž“αžΉαž„αž”αžŠαž·αžŸαŸαž’αžαž˜αŸ’αž›αŸƒαž›αŸ†αž“αžΆαŸ†αžŠαžΎαž˜αž“αŸαŸ‡αžŠαŸ„αž™αž”αŸ’αžšαžΎαž”αŸ‰αžΆαžšαŸ‰αžΆαž˜αŸ‰αŸ‚αžαŸ’αžš αž‚αž»αžŽαž›αž€αŸ’αžαžŽαŸˆ Π² PointToPointHelper αžαŸ’αž–αžŸαŸ‹αž‡αžΆαž„αŸ” αžαŸ„αŸ‡αž”αŸ’αžšαžΎαžαž˜αŸ’αž›αŸƒαž›αŸ†αž“αžΆαŸ†αžŠαžΎαž˜αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž§αž”αž€αžšαžŽαŸ αž“αž·αž„αž†αžΆαž“αŸ‚αž›αž–αžΈαž…αŸ†αžŽαž»αž…αž˜αž½αž™αž‘αŸ…αž…αŸ†αžŽαž»αž…αŸ” αžŠαžΎαž˜αŸ’αž”αžΈαž’αŸ’αžœαžΎαžŠαžΌαž…αž“αŸαŸ‡αž™αžΎαž„αž“αžΉαž„αž›αž»αž”αž€αžΆαžšαž αŸ…αž…αŸαž‰ SetDeviceAttribute ΠΈ SetChannelAttribute αž–αžΈ myfirst.ccαžŠαŸ‚αž›αž™αžΎαž„αž˜αžΆαž“αž“αŸ…αž€αŸ’αž“αž»αž„αžαžαžŸαŸ’αž’αžΆαžαŸ”

αžŸαŸ’αž‚αŸ’αžšαžΈαž”αžšαž”αžŸαŸ‹αž’αŸ’αž“αž€αž₯αž‘αžΌαžœαž“αŸαŸ‡αž‚αž½αžšαžαŸ‚αž”αŸ’αžšαž€αžΆαžŸαžŠαŸ„αž™αžŸαžΆαž˜αž‰αŸ’αž‰ PointToPointHelper αž αžΎαž™αž€αž»αŸ†αž’αŸ’αžœαžΎαž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž€αžΆαžšαžŠαŸ†αž‘αžΎαž„αžŽαžΆαž˜αž½αž™ αžŠαžΌαž…αž”αž„αŸ’αž αžΆαž‰αž€αŸ’αž“αž»αž„αž§αž‘αžΆαž αžšαžŽαŸαžαžΆαž„αž€αŸ’αžšαŸ„αž˜

...
NodeContainer nodes;
nodes.Create (2);
PointToPointHelper pointToPoint;
NetDeviceContainer devices;
devices = pointToPoint.Install (nodes);
...

αž‘αŸ…αž˜αž»αžαž αžΎαž™αž”αž„αŸ’αž€αžΎαžαžŸαŸ’αž‚αŸ’αžšαžΈαž”αžαŸ’αž˜αžΈαž‡αžΆαž˜αž½αž™ αžœαŸ‰αžΆ (./ αžœαŸ‰αžΆαž αŸ’αžœ) αž αžΎαž™αžαŸ„αŸ‡αžαŸ’αžšαž‘αž”αŸ‹αž‘αŸ…αžœαž·αž‰ αž αžΎαž™αžšαž½αž˜αž”αž‰αŸ’αž…αžΌαž›αž’αžΆαžαž»αž˜αž½αž™αž…αŸ†αž“αž½αž“αž–αžΈαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž˜αŸ UDP αž’αŸαž€αžΌ αž“αž·αž„αžšαž½αž˜αž”αž‰αŸ’αž…αžΌαž›αž”αž»αž–αŸ’αžœαž”αž‘αž–αŸαž›αžœαŸαž›αžΆαŸ”

$ export 'NS_LOG=UdpEchoServerApplication=level_all|prefix_time'

αž”αŸ’αžšαžŸαž·αž“αž”αžΎαž’αŸ’αž“αž€αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαžŸαŸ’αž‚αŸ’αžšαžΈαž” αž’αŸ’αž“αž€αž‚αž½αžšαžαŸ‚αžƒαžΎαž‰αž›αž‘αŸ’αž’αž•αž›αžŠαžΌαž…αžαžΆαž„αž€αŸ’αžšαŸ„αž˜αŸ–

Waf: Entering directory `/home/craigdo/repos/ns-3-allinone/ns-3-dev/build'
Waf: Leaving directory `/home/craigdo/repos/ns-3-allinone/ns-3-dev/build'
'build' finished successfully (0.405s)
0s UdpEchoServerApplication:UdpEchoServer()
1s UdpEchoServerApplication:StartApplication()
Sent 1024 bytes to 10.1.1.2
2.25732s Received 1024 bytes from 10.1.1.1
2.25732s Echoing packet
Received 1024 bytes from 10.1.1.2
10s UdpEchoServerApplication:StopApplication()
UdpEchoServerApplication:DoDispose()
UdpEchoServerApplication:~UdpEchoServer()

αžŸαžΌαž˜αž…αžΆαŸ†αžαžΆαž–αŸαž›αž…αž»αž„αž€αŸ’αžšαŸ„αž™αžŠαŸ‚αž›αž™αžΎαž„αž˜αžΎαž›αž–αŸαž›αžœαŸαž›αžΆαž€αŸ’αž›αŸ‚αž„αž’αŸ’αžœαžΎ αž–αŸαž›αžŠαŸ‚αž›αž€αž‰αŸ’αž…αž”αŸ‹αž–αŸαžαŸŒαž˜αžΆαž“αžαŸ’αžšαžΌαžœαž”αžΆαž“αž‘αž‘αž½αž›αžŠαŸ„αž™αž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž˜αŸαž’αŸαž€αžΌ αžœαžΆαž‚αžΊ 2,00369 αžœαž·αž“αžΆαž‘αžΈαŸ”

2.00369s UdpEchoServerApplication:HandleRead(): Received 1024 bytes from 10.1.1.1

αž₯αž‘αžΌαžœαž“αŸαŸ‡αž‚αžΆαžαŸ‹αž‘αž‘αž½αž›αž”αžΆαž“αž€αž‰αŸ’αž…αž”αŸ‹αž–αŸαžαŸŒαž˜αžΆαž“αž€αŸ’αž“αž»αž„αžšαž™αŸˆαž–αŸαž› 2.25732 αžœαž·αž“αžΆαž‘αžΈαŸ” αž“αŸαŸ‡αž‚αžΊαžŠαŸ„αž™αžŸαžΆαžšαžαŸ‚αž™αžΎαž„αž‚αŸ’αžšαžΆαž“αŸ‹αžαŸ‚αž€αŸ†αžŽαžαŸ‹αž‘αžΎαž„αžœαž·αž‰αž“αžΌαžœαž’αžαŸ’αžšαžΆαž‘αž·αž“αŸ’αž“αž“αŸαž™ PointToPointNetDevice αž–αžΈαž”αŸ’αžšαžΆαŸ† megabits αž€αŸ’αž“αž»αž„αž˜αž½αž™αžœαž·αž“αžΆαž‘αžΈαž‘αŸ…αžαž˜αŸ’αž›αŸƒαž›αŸ†αž“αžΆαŸ†αžŠαžΎαž˜αž‚αžΊ 32768 bits αž€αŸ’αž“αž»αž„αž˜αž½αž™αžœαž·αž“αžΆαž‘αžΈαŸ” αž”αŸ’αžšαžŸαž·αž“αž”αžΎαž™αžΎαž„αž‡αŸ†αž“αž½αžŸ DataRate αžαŸ’αž˜αžΈαžŠαŸ„αž™αž”αŸ’αžšαžΎαž”αž“αŸ’αž‘αžΆαžαŸ‹αž–αžΆαž€αŸ’αž™αž”αž‰αŸ’αž‡αžΆ αž™αžΎαž„αž’αžΆαž…αž”αž„αŸ’αž€αžΎαž“αž›αŸ’αž”αžΏαž“αž€αžΆαžšαž€αŸ’αž›αŸ‚αž„αž’αŸ’αžœαžΎαžšαž”αžŸαŸ‹αž™αžΎαž„αž˜αŸ’αžαž„αž‘αŸ€αžαŸ” αž™αžΎαž„αž“αžΉαž„αž’αŸ’αžœαžΎαžŠαžΌαž…αž“αŸαŸ‡αžαžΆαž˜αžšαžΌαž”αž˜αž“αŸ’αžαžŠαŸ‚αž›αž”αž„αŸ’αž€αž”αŸ‹αžŠαŸ„αž™αž’αžΆαžαž»αž‡αŸ†αž“αž½αž™αŸ–

$ ./waf --run "scratch/myfirst --ns3::PointToPointNetDevice::DataRate=5Mbps"

αžœαžΆαž“αžΉαž„αžαŸ’αžšαž‘αž”αŸ‹αž‚αž»αžŽαž›αž€αŸ’αžαžŽαŸˆ DataRate αž‘αŸ…αžαž˜αŸ’αž›αŸƒαž›αŸ†αž“αžΆαŸ†αžŠαžΎαž˜αžšαž”αžŸαŸ‹αžœαžΆαž…αŸ†αž“αž½αž“αž”αŸ’αžšαžΆαŸ†αž˜αŸαž αŸ’αž‚αžΆαž”αŸŠαžΈαžαž€αŸ’αž“αž»αž„αž˜αž½αž™αžœαž·αž“αžΆαž‘αžΈαŸ” αžαžΎαž’αŸ’αž“αž€αž—αŸ’αž‰αžΆαž€αŸ‹αž•αŸ’αž’αžΎαž›αž“αžΉαž„αž›αž‘αŸ’αž’αž•αž›αž‘αŸ? αžœαžΆαž”αŸ’αžšαŸ‚αžαžΆαžŠαžΎαž˜αŸ’αž”αžΈαžαŸ’αžšαž‘αž”αŸ‹αž₯αžšαž·αž™αžΆαž”αžαžŠαžΎαž˜αž“αŸƒαžŸαŸ’αž‚αŸ’αžšαžΈαž”αž™αžΎαž„αž€αŸαžαŸ’αžšαžΌαžœαž€αŸ†αžŽαžαŸ‹αž€αžΆαžšαž–αž“αŸ’αž™αžΆαž–αŸαž›αž†αžΆαž“αŸ‚αž›αžŠαžΎαž˜αŸ’αž”αžΈαž•αŸ’αž‚αžΌαž•αŸ’αž‚αž„αž›αŸ’αž”αžΏαž“αž“αŸƒαž–αž“αŸ’αž›αžΊαŸ” αž™αžΎαž„αž’αžΆαž…αžŸαŸ’αž“αžΎαžŸαž»αŸ†αž±αŸ’αž™αž”αŸ’αžšαž–αŸαž“αŸ’αž’αž”αž“αŸ’αž‘αžΆαžαŸ‹αž–αžΆαž€αŸ’αž™αž”αž‰αŸ’αž‡αžΆαžŠαžΎαž˜αŸ’αž”αžΈαž”αŸ„αŸ‡αž–αž»αž˜αŸ’αž–αž‚αž»αžŽαž›αž€αŸ’αžαžŽαŸˆαž†αžΆαž“αŸ‚αž›αžŠαžΌαž…αžŠαŸ‚αž›αž™αžΎαž„αž”αžΆαž“αž’αŸ’αžœαžΎαžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž§αž”αž€αžšαžŽαŸαž”αžŽαŸ’αžαžΆαž‰αŸ–

$ ./waf --run "scratch/myfirst --PrintAttributes=ns3::PointToPointChannel"

αž™αžΎαž„β€‹αž“αžΉαž„β€‹αžšαž€β€‹αžƒαžΎαž‰β€‹αžαžΆβ€‹αž‚αž»αžŽαž›αž€αŸ’αžαžŽαŸˆβ€‹αž–αž“αŸ’αž™αžΆαžšβ€‹αž†αžΆαž“αŸ‚αž›β€‹αžαŸ’αžšαžΌαžœβ€‹αž”αžΆαž“β€‹αž€αŸ†αžŽαžαŸ‹β€‹αžŠαžΌαž…β€‹αžαžΆαž„β€‹αž€αŸ’αžšαŸ„αž˜αŸ–

--ns3::PointToPointChannel::Delay=[0ns]:
Transmission delay through the channel

αž”αž“αŸ’αž‘αžΆαž”αŸ‹αž˜αž€ αž™αžΎαž„αž’αžΆαž…αž€αŸ†αžŽαžαŸ‹αžαž˜αŸ’αž›αŸƒαž›αŸ†αž“αžΆαŸ†αžŠαžΎαž˜αž‘αžΆαŸ†αž„αž–αžΈαžšαž“αŸαŸ‡ αžαžΆαž˜αžšαž™αŸˆαž”αŸ’αžšαž–αŸαž“αŸ’αž’αž”αž“αŸ’αž‘αžΆαžαŸ‹αž–αžΆαž€αŸ’αž™αž”αž‰αŸ’αž‡αžΆαŸ”

$ ./waf --run "scratch/myfirst
--ns3::PointToPointNetDevice::DataRate=5Mbps
--ns3::PointToPointChannel::Delay=2ms"

αž€αŸ’αž“αž»αž„αž€αžšαžŽαžΈαž“αŸαŸ‡ αž™αžΎαž„αžŸαŸ’αžŠαžΆαžšαž–αŸαž›αžœαŸαž›αžΆαžŠαŸ‚αž›αž™αžΎαž„αž˜αžΆαž“ αž“αŸ…αž–αŸαž›αžŠαŸ‚αž›αž™αžΎαž„αž€αŸ†αžŽαžαŸ‹ DataRate αž“αž·αž„ Delay αž™αŸ‰αžΆαž„αž…αŸ’αž”αžΆαžŸαŸ‹αž“αŸ…αž€αŸ’αž“αž»αž„αžŸαŸ’αž‚αŸ’αžšαžΈαž”αŸ–

Waf: Entering directory `/home/craigdo/repos/ns-3-allinone/ns-3-dev/build'
Waf: Leaving directory `/home/craigdo/repos/ns-3-allinone/ns-3-dev/build'
'build' finished successfully (0.417s)
0s UdpEchoServerApplication:UdpEchoServer()
1s UdpEchoServerApplication:StartApplication()
Sent 1024 bytes to 10.1.1.2
2.00369s Received 1024 bytes from 10.1.1.1
2.00369s Echoing packet
Received 1024 bytes from 10.1.1.2
10s UdpEchoServerApplication:StopApplication()
UdpEchoServerApplication:DoDispose()
UdpEchoServerApplication:~UdpEchoServer()

αž…αŸ†αžŽαžΆαŸ†αžαžΆαž€αž‰αŸ’αž…αž”αŸ‹αž–αŸαžαŸŒαž˜αžΆαž“αžαŸ’αžšαžΌαžœαž”αžΆαž“αž‘αž‘αž½αž›αžŠαŸ„αž™αž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž˜αŸαž˜αŸ’αžαž„αž‘αŸ€αžαž”αž“αŸ’αž‘αžΆαž”αŸ‹αž–αžΈ 2,00369 αžœαž·αž“αžΆαž‘αžΈαŸ” αž™αžΎαž„αž–αž·αžαž‡αžΆαž’αžΆαž…αž€αŸ†αžŽαžαŸ‹αž‚αž»αžŽαž›αž€αŸ’αžαžŽαŸˆαžŽαžΆαž˜αž½αž™αžŠαŸ‚αž›αž”αžΆαž“αž”αŸ’αžšαžΎαž“αŸ…αž€αŸ’αž“αž»αž„αžŸαŸ’αž‚αŸ’αžšαžΈαž”αžαžΆαž˜αžœαž·αž’αžΈαž“αŸαŸ‡αŸ” αž‡αžΆαž–αž·αžŸαŸαžŸ αž™αžΎαž„αž’αžΆαž…αž€αŸ†αžŽαžαŸ‹αž‚αž»αžŽαž›αž€αŸ’αžαžŽαŸˆ MaxPackets αž‘αŸ…αž‡αžΆαžαž˜αŸ’αž›αŸƒαž˜αž·αž“αž˜αŸ‚αž“αž˜αž½αž™αŸ” UdpEchoClient.

αžαžΎαž’αŸ’αž“αž€αž“αžΉαž„αž”αŸ’αžšαžΎαžœαžΆαžŠαŸ„αž™αžšαž”αŸ€αž”αžŽαžΆ? αžŸαžΆαž€αž›αŸ’αž”αž„αž”αŸ’αžšαžΎαŸ” αžŸαžΌαž˜αž…αž„αž…αžΆαŸ†αžαžΆαž’αŸ’αž“αž€αžαŸ’αžšαžΌαžœαžαŸ‚αž”αž‰αŸ’αž…αŸαž‰αž˜αžαž·αž’αŸ†αž–αžΈαž€αž“αŸ’αž›αŸ‚αž„αžŠαŸ‚αž›αž™αžΎαž„αž”αžŠαž·αžŸαŸαž’αžαž˜αŸ’αž›αŸƒαž‚αž»αžŽαž›αž€αŸ’αžαžŽαŸˆαž›αŸ†αž“αžΆαŸ†αžŠαžΎαž˜ αž αžΎαž™αž€αŸ†αžŽαžαŸ‹αž™αŸ‰αžΆαž„αž…αŸ’αž”αžΆαžŸαŸ‹ αž€αž‰αŸ’αž…αž”αŸ‹αž’αžαž·αž”αžšαž˜αžΆ αž“αŸ…αž€αŸ’αž“αž»αž„αžŸαŸ’αž‚αŸ’αžšαžΈαž”αŸ” αž”αž“αŸ’αž‘αžΆαž”αŸ‹αž˜αž€αž’αŸ’αž“αž€αžαŸ’αžšαžΌαžœαž”αž„αŸ’αž€αžΎαžαžŸαŸ’αž‚αŸ’αžšαžΈαž”αž‘αžΎαž„αžœαž·αž‰αŸ” αž’αŸ’αž“αž€αž€αŸαž’αžΆαž…αž”αŸ’αžšαžΎαž”αž“αŸ’αž‘αžΆαžαŸ‹αž–αžΆαž€αŸ’αž™αž”αž‰αŸ’αž‡αžΆαžŠαžΎαž˜αŸ’αž”αžΈαž‘αž‘αž½αž›αž”αžΆαž“αž‡αŸ†αž“αž½αž™αžœαžΆαž€αŸ’αž™αžŸαž˜αŸ’αž–αŸαž“αŸ’αž’αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž€αŸ†αžŽαžαŸ‹αžαž˜αŸ’αž›αŸƒαž‚αž»αžŽαž›αž€αŸ’αžαžŽαŸˆαž›αŸ†αž“αžΆαŸ†αžŠαžΎαž˜αžαŸ’αž˜αžΈαŸ” αž“αŸ…αž–αŸαž›αžŠαŸ‚αž›αž’αŸ’αž“αž€αž™αž›αŸ‹αž–αžΈαžšαžΏαž„αž“αŸαŸ‡ αž’αŸ’αž“αž€αž’αžΆαž…αž‚αŸ’αžšαž”αŸ‹αž‚αŸ’αžšαž„αž…αŸ†αž“αž½αž“αž€αž‰αŸ’αž…αž”αŸ‹αžŠαŸ‚αž›αž”αž„αŸ’αž αžΆαž‰αž“αŸ…αž›αžΎαž”αž“αŸ’αž‘αžΆαžαŸ‹αž–αžΆαž€αŸ’αž™αž”αž‰αŸ’αž‡αžΆαŸ” αžŠαŸ„αž™αžŸαžΆαžšαž™αžΎαž„αž‡αžΆαž˜αž“αž»αžŸαŸ’αžŸαžŸαŸ’αž˜αž»αž‚αŸ’αžšαžŸαŸ’αž˜αžΆαž‰ αž”αž“αŸ’αž‘αžΆαžαŸ‹αž–αžΆαž€αŸ’αž™αž”αž‰αŸ’αž‡αžΆαžšαž”αžŸαŸ‹αž™αžΎαž„αž‚αž½αžšαžαŸ‚αž˜αžΎαž›αž‘αŸ…αžŠαžΌαž…αž“αŸαŸ‡αŸ–

$ ./waf --run "scratch/myfirst
--ns3::PointToPointNetDevice::DataRate=5Mbps
--ns3::PointToPointChannel::Delay=2ms
--ns3::UdpEchoClient::MaxPackets=2"

αžŸαŸ†αžŽαž½αžšβ€‹αž’αž˜αŸ’αž˜αž‡αžΆαžαž·β€‹αžŠαŸ‚αž›β€‹αž€αžΎαžβ€‹αž‘αžΎαž„β€‹αžαŸ’αžšαž„αŸ‹β€‹αž…αŸ†αžŽαž»αž…β€‹αž“αŸαŸ‡β€‹αž‚αžΊβ€‹αž’αŸ’αžœαžΎβ€‹αžŠαžΌαž…αž˜αŸ’αžαŸαž…β€‹αžŠαžΎαž˜αŸ’αž”αžΈβ€‹αžŠαžΉαž„β€‹αž’αŸ†αž–αžΈβ€‹αž’αžαŸ’αžαž·αž—αžΆαž–β€‹αž“αŸƒβ€‹αž›αž€αŸ’αžαžŽαŸˆβ€‹αž‘αžΆαŸ†αž„β€‹αž’αžŸαŸ‹β€‹αž“αŸαŸ‡αŸ” αž‡αžΆαžαŸ’αž˜αžΈαž˜αŸ’αžαž„αž‘αŸ€αž αž”αŸ’αžšαž–αŸαž“αŸ’αž’αž”αž“αŸ’αž‘αžΆαžαŸ‹αž–αžΆαž€αŸ’αž™αž”αž‰αŸ’αž‡αžΆαž˜αžΆαž“αž˜αž»αžαž„αžΆαžšαž‡αŸ†αž“αž½αž™αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž”αž‰αŸ’αž αžΆαž“αŸαŸ‡αŸ” αž”αŸ’αžšαžŸαž·αž“αž”αžΎαž™αžΎαž„αžŸαž»αŸ†αž‡αŸ†αž“αž½αž™αž–αžΈαž”αž“αŸ’αž‘αžΆαžαŸ‹αž–αžΆαž€αŸ’αž™αž”αž‰αŸ’αž‡αžΆ αž™αžΎαž„αž‚αž½αžšαžαŸ‚αžƒαžΎαž‰αŸ–

$ ./waf --run "scratch/myfirst --PrintHelp"
myfirst [Program Arguments] [General Arguments]
General Arguments:
--PrintGlobals: Print the list of globals.
--PrintGroups: Print the list of groups.
--PrintGroup=[group]: Print all TypeIds of group.
--PrintTypeIds: Print all TypeIds.
--PrintAttributes=[typeid]: Print all attributes of typeid.
--PrintHelp: Print this help message.

αž”αŸ’αžšαžŸαž·αž“αž”αžΎαž’αŸ’αž“αž€αž‡αŸ’αžšαžΎαžŸαžšαžΎαžŸαž’αžΆαž‚αž»αž™αž˜αŸ‰αž„αŸ‹ "PrintGroups" αž’αŸ’αž“αž€αž‚αž½αžšαžαŸ‚αžƒαžΎαž‰αž”αž‰αŸ’αž‡αžΈαž€αŸ’αžšαž»αž˜αžŠαŸ‚αž›αž”αžΆαž“αž…αž»αŸ‡αžˆαŸ’αž˜αŸ„αŸ‡αž‘αžΆαŸ†αž„αž’αžŸαŸ‹αŸ” αž”αŸ’αžšαž—αŸαž‘αž›αŸαžαžŸαž˜αŸ’αž‚αžΆαž›αŸ‹. αžˆαŸ’αž˜αŸ„αŸ‡αž€αŸ’αžšαž»αž˜αž‚αžΊαžŸαŸ’αžšαž”αž‡αžΆαž˜αž½αž™αž“αžΉαž„αžˆαŸ’αž˜αŸ„αŸ‡αžšαž”αžŸαŸ‹αž˜αŸ‰αžΌαžŒαž»αž›αž“αŸ…αž€αŸ’αž“αž»αž„αžαžαž”αŸ’αžšαž—αž– (αž‘αŸ„αŸ‡αž”αžΈαž‡αžΆαž’αž€αŸ’αžŸαžšαž’αŸ†αž€αŸαžŠαŸ„αž™) αŸ” αž€αžΆαžšαž”αŸ„αŸ‡αž–αž»αž˜αŸ’αž–αž–αŸαžαŸŒαž˜αžΆαž“αž‘αžΆαŸ†αž„αž’αžŸαŸ‹αž€αŸ’αž“αž»αž„αž–αŸαž›αžαŸ‚αž˜αž½αž™αž“αžΉαž„αž˜αžΆαž“αž–αž“αŸ’αž›αžΊαžαŸ’αž›αžΆαŸ†αž„αž–αŸαž€ αžŠαžΌαž…αŸ’αž“αŸαŸ‡αž˜αžΆαž“αžαž˜αŸ’αžšαž„αž”αž“αŸ’αžαŸ‚αž˜αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž”αŸ„αŸ‡αž–αž»αž˜αŸ’αž–αž–αŸαžαŸŒαž˜αžΆαž“αžαžΆαž˜αž€αŸ’αžšαž»αž˜αŸ” αžŠαžΌαž…αŸ’αž“αŸαŸ‡αž˜αŸ’αžαž„αž‘αŸ€αž αž•αŸ’αžαŸ„αžαž›αžΎαž˜αŸ‰αžΌαžŒαž»αž›αž…αŸ†αžŽαž»αž…αž˜αž½αž™αž‘αŸ…αž…αŸ†αžŽαž»αž…αŸ–

./waf --run "scratch/myfirst --PrintGroup=PointToPoint"
TypeIds in group PointToPoint:
ns3::PointToPointChannel
ns3::PointToPointNetDevice
ns3::PointToPointRemoteChannel
ns3::PppHeader

αž“αŸ…αž‘αžΈαž“αŸαŸ‡αž’αŸ’αž“αž€αž’αžΆαž…αžŸαŸ’αžœαŸ‚αž„αžšαž€αžˆαŸ’αž˜αŸ„αŸ‡ TypeId αžŠαŸ‚αž›αž˜αžΆαž“αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž€αžΆαžšαžšαž€αž˜αžΎαž›αž‚αž»αžŽαž›αž€αŸ’αžαžŽαŸˆ αž§αž‘αžΆαž αžšαžŽαŸαž“αŸ…αž€αŸ’αž“αž»αž„
--PrintAttributes = ns3 :: PointToPointChannelαžŠαžΌαž…αžŠαŸ‚αž›αž”αžΆαž“αž”αž„αŸ’αž αžΆαž‰αžαžΆαž„αž›αžΎαŸ”

αžœαž·αž’αžΈαž˜αž½αž™αž‘αŸ€αžαžŠαžΎαž˜αŸ’αž”αžΈαžŸαŸ’αžœαŸ‚αž„αž™αž›αŸ‹αž’αŸ†αž–αžΈαž‚αž»αžŽαž›αž€αŸ’αžαžŽαŸˆαž‚αžΊαžαžΆαž˜αžšαž™αŸˆ Doxygen ns‑3αŸ” αž˜αžΆαž“αž‘αŸ†αž–αŸαžšαž˜αž½αž™αžŠαŸ‚αž›αžšαžΆαž™αž“αžΆαž˜αž‚αž»αžŽαž›αž€αŸ’αžαžŽαŸˆαž‘αžΆαŸ†αž„αž’αžŸαŸ‹αžŠαŸ‚αž›αž”αžΆαž“αž…αž»αŸ‡αžˆαŸ’αž˜αŸ„αŸ‡αž“αŸ…αž€αŸ’αž“αž»αž„αž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž€αŸ’αž›αŸ‚αž„αž’αŸ’αžœαžΎαŸ”

5.2.2 αž€αžΆαžšαž…αžΆαž”αŸ‹αž™αž€αž–αžΆαž€αŸ’αž™αž”αž‰αŸ’αž‡αžΆαž•αŸ’αž‘αžΆαž›αŸ‹αžαŸ’αž›αž½αž“αžšαž”αžŸαŸ‹αž’αŸ’αž“αž€αŸ”

αž’αŸ’αž“αž€αž€αŸαž’αžΆαž…αž”αž“αŸ’αžαŸ‚αž˜αž‘αŸ†αž–αž€αŸ‹αž•αŸ’αž‘αžΆαž›αŸ‹αžαŸ’αž›αž½αž“αžšαž”αžŸαŸ‹αž’αŸ’αž“αž€αžαžΆαž˜αžšαž™αŸˆαž”αŸ’αžšαž–αŸαž“αŸ’αž’αž”αž“αŸ’αž‘αžΆαžαŸ‹αž–αžΆαž€αŸ’αž™αž”αž‰αŸ’αž‡αžΆαŸ” αž“αŸαŸ‡αžαŸ’αžšαžΌαžœαž”αžΆαž“αž’αŸ’αžœαžΎαž™αŸ‰αžΆαž„αžŸαžΆαž˜αž‰αŸ’αž‰αžŠαŸ„αž™αž”αŸ’αžšαžΎαžœαž·αž’αžΈαžŸαžΆαžŸαŸ’αžαŸ’αžšαž‰αŸ‚αž€αž”αž“αŸ’αž‘αžΆαžαŸ‹αž–αžΆαž€αŸ’αž™αž”αž‰αŸ’αž‡αžΆ αž”αž“αŸ’αžαŸ‚αž˜β€‹αžαž˜αŸ’αž›αŸƒ.
αž…αžΌαžšαž™αžΎαž„αž”αŸ’αžšαžΎαž›αž€αŸ’αžαžŽαŸˆαž–αž·αžŸαŸαžŸαž“αŸαŸ‡αžŠαžΎαž˜αŸ’αž”αžΈαž”αž‰αŸ’αž‡αžΆαž€αŸ‹αž…αŸ†αž“αž½αž“αž€αž‰αŸ’αž…αž”αŸ‹αžŠαŸ‚αž›αžαŸ’αžšαžΌαžœαž”αž„αŸ’αž αžΆαž‰αžαžΆαž˜αžšαž”αŸ€αž”αžαž»αžŸαž‚αŸ’αž“αžΆαž‘αžΆαŸ†αž„αžŸαŸ’αžšαž»αž„αŸ” αž…αžΌαžšαž”αž“αŸ’αžαŸ‚αž˜αž’αžαŸαžšαž˜αžΌαž›αžŠαŸ’αž‹αžΆαž“αžŠαŸ‚αž›αž αŸ…αžαžΆ nPackets αž…αžΌαž›αž‘αŸ…αž€αŸ’αž“αž»αž„αž˜αž»αžαž„αžΆαžšαž˜αž½αž™αŸ” αžŸαŸ†αžαžΆαž“αŸ‹. αž™αžΎαž„β€‹αž“αžΉαž„β€‹αž€αŸ†αžŽαžαŸ‹β€‹αžœαžΆβ€‹αž‘αŸ…β€‹αž˜αž½αž™β€‹αžŠαžΎαž˜αŸ’αž”αžΈβ€‹αž•αŸ’αž‚αžΌαž•αŸ’αž‚αž„β€‹αž₯αžšαž·αž™αžΆαž”αžβ€‹αž›αŸ†αž“αžΆαŸ†αžŠαžΎαž˜β€‹αž–αžΈαž˜αž»αž“β€‹αžšαž”αžŸαŸ‹β€‹αž™αžΎαž„αŸ” αžŠαžΎαž˜αŸ’αž”αžΈαž’αž“αž»αž‰αŸ’αž‰αžΆαžαž±αŸ’αž™αž§αž”αž€αžšαžŽαŸαž‰αŸ‚αž€αž”αž“αŸ’αž‘αžΆαžαŸ‹αž–αžΆαž€αŸ’αž™αž”αž‰αŸ’αž‡αžΆαž•αŸ’αž›αžΆαžŸαŸ‹αž”αŸ’αžαžΌαžšαžαž˜αŸ’αž›αŸƒαž“αŸαŸ‡ αž™αžΎαž„αžαŸ’αžšαžΌαžœαž…αžΆαž”αŸ‹αž™αž€αžαž˜αŸ’αž›αŸƒαž“αŸαŸ‡αž“αŸ…αž€αŸ’αž“αž»αž„αž§αž”αž€αžšαžŽαŸαž‰αŸ‚αž€αŸ” αž™αžΎαž„αž’αŸ’αžœαžΎαžŠαžΌαž…αž“αŸαŸ‡αžŠαŸ„αž™αž”αž“αŸ’αžαŸ‚αž˜αž€αžΆαžšαž αŸ…αž‘αžΌαžšαžŸαž–αŸ’αž‘ αž”αž“αŸ’αžαŸ‚αž˜β€‹αžαž˜αŸ’αž›αŸƒ. αž‘αŸ…β€‹αž αžΎαž™β€‹αž”αŸ’αžαžΌαžšβ€‹αžŸαŸ’αž‚αŸ’αžšαžΈαž” scratch/myfirst.cc αžŠαžΌαž…αŸ’αž“αŸαŸ‡ αžŠαžΎαž˜αŸ’αž”αžΈαž…αžΆαž”αŸ‹αž•αŸ’αžαžΎαž˜αž‡αžΆαž˜αž½αž™αž€αžΌαžŠαžαžΆαž„αž€αŸ’αžšαŸ„αž˜

int
main (int argc, char *argv[])
{
uint32_t nPackets = 1;
CommandLine cmd;
cmd.AddValue("nPackets", "Number of packets to echo", nPackets);
cmd.Parse (argc, argv);
...

αžšαž˜αžΌαžšαž…αž»αŸ‡αž€αŸ’αžšαŸ„αž˜αž‘αŸ…αž…αŸ†αžŽαž»αž…αž“αŸ…αž€αŸ’αž“αž»αž„αžŸαŸ’αž‚αŸ’αžšαžΈαž”αžŠαŸ‚αž›αž™αžΎαž„αž€αŸ†αžŽαžαŸ‹αž‚αž»αžŽαž›αž€αŸ’αžαžŽαŸˆ MaxPackets αž αžΎαž™αž”αŸ’αžαžΌαžšαžœαžΆ αžŠαžΌαž…αŸ’αž“αŸαŸ‡αžœαžΆαžαŸ’αžšαžΌαžœαž”αžΆαž“αž€αŸ†αžŽαžαŸ‹αž‘αŸ…αž‡αžΆαž’αžαŸαžš nPackets αž‡αŸ†αž“αž½αžŸαž±αŸ’αž™αžαŸαžš 1 αžŠαžΌαž…αžŠαŸ‚αž›αž”αžΆαž“αž”αž„αŸ’αž αžΆαž‰αžαžΆαž„αž€αŸ’αžšαŸ„αž˜αŸ”

echoClient.SetAttribute ("MaxPackets", UintegerValue (nPackets));

αž₯αž‘αžΌαžœαž“αŸαŸ‡ αž”αŸ’αžšαžŸαž·αž“αž”αžΎαž’αŸ’αž“αž€αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαžŸαŸ’αž‚αŸ’αžšαžΈαž” αž“αž·αž„αž•αŸ’αž‚αžαŸ‹αž•αŸ’αž‚αž„αŸ‹αž’αžΆαž‚αž»αž™αž˜αŸ‰αž„αŸ‹ -PrintHelp αž’αŸ’αž“αž€αž‚αž½αžšαžαŸ‚αžƒαžΎαž‰αž’αžΆαž‚αž»αž™αž˜αŸ‰αž„αŸ‹αž’αŸ’αž“αž€αž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹αžαŸ’αž˜αžΈαŸ” αžšαžΆαž™αž“αŸ…αž›αžΎαž€αžΆαžšαž”αž„αŸ’αž αžΆαž‰αž‡αŸ†αž“αž½αž™αŸ” αž”αž‰αŸ’αž…αžΌαž›,

$ ./waf --run "scratch/myfirst --PrintHelp"
Waf: Entering directory `/home/craigdo/repos/ns-3-allinone/ns-3-dev/build'
Waf: Leaving directory `/home/craigdo/repos/ns-3-allinone/ns-3-dev/build'
'build' finished successfully (0.403s)
--PrintHelp: Print this help message.
--PrintGroups: Print the list of groups.
--PrintTypeIds: Print all TypeIds.
--PrintGroup=[group]: Print all TypeIds of group.
--PrintAttributes=[typeid]: Print all attributes of typeid.
--PrintGlobals: Print the list of globals.
User Arguments:
--nPackets: Number of packets to echo

αž”αŸ’αžšαžŸαž·αž“αž”αžΎαž’αŸ’αž“αž€αž…αž„αŸ‹αž•αŸ’αž›αžΆαžŸαŸ‹αž”αŸ’αžαžΌαžšαž…αŸ†αž“αž½αž“αž€αž‰αŸ’αž…αž”αŸ‹αž–αŸαžαŸŒαž˜αžΆαž“αžŠαŸ‚αž›αž”αžΆαž“αž”αž‰αŸ’αž‡αžΌαž“ αž’αŸ’αž“αž€αž’αžΆαž…αž’αŸ’αžœαžΎαžŠαžΌαž…αŸ’αž“αŸαŸ‡αž”αžΆαž“αžŠαŸ„αž™αž€αŸ†αžŽαžαŸ‹αž’αžΆαž‚αž»αž™αž˜αŸ‰αž„αŸ‹αž”αž“αŸ’αž‘αžΆαžαŸ‹αž–αžΆαž€αŸ’αž™αž”αž‰αŸ’αž‡αžΆ - -nPackets αŸ”

$ ./waf --run "scratch/myfirst --nPackets=2"

αž₯αž‘αžΌαžœαž“αŸαŸ‡αž’αŸ’αž“αž€αž‚αž½αžšαžαŸ‚αž˜αžΎαž›

Waf: Entering directory `/home/craigdo/repos/ns-3-allinone/ns-3-dev/build'
Waf: Leaving directory `/home/craigdo/repos/ns-3-allinone/ns-3-dev/build'
'build' finished successfully (0.404s)
0s UdpEchoServerApplication:UdpEchoServer()
1s UdpEchoServerApplication:StartApplication()
Sent 1024 bytes to 10.1.1.2
2.25732s Received 1024 bytes from 10.1.1.1
2.25732s Echoing packet
Received 1024 bytes from 10.1.1.2
Sent 1024 bytes to 10.1.1.2
3.25732s Received 1024 bytes from 10.1.1.1
3.25732s Echoing packet
Received 1024 bytes from 10.1.1.2
10s UdpEchoServerApplication:StopApplication()
UdpEchoServerApplication:DoDispose()
UdpEchoServerApplication:~UdpEchoServer()

αž₯αž‘αžΌαžœαž“αŸαŸ‡αž’αŸ’αž“αž€αž”αžΆαž“αž•αŸ’αž‰αžΎαž€αž‰αŸ’αž…αž”αŸ‹αž–αžΈαžšαŸ” αžŸαžΆαž˜αž‰αŸ’αž‰αžŽαžΆαžŸαŸ‹αž˜αŸ‚αž“αž‘αŸ?
αž’αŸ’αž“αž€αž’αžΆαž…αž˜αžΎαž›αžƒαžΎαž‰αžαžΆαž€αŸ’αž“αž»αž„αž“αžΆαž˜αž‡αžΆαž’αŸ’αž“αž€αž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹ ns-3 αž’αŸ’αž“αž€αž’αžΆαž…αž”αŸ’αžšαžΎαž”αŸ’αžšαž–αŸαž“αŸ’αž’αž’αžΆαž‚αž»αž™αž˜αŸ‰αž„αŸ‹αž”αž“αŸ’αž‘αžΆαžαŸ‹αž–αžΆαž€αŸ’αž™αž”αž‰αŸ’αž‡αžΆαžŠαžΎαž˜αŸ’αž”αžΈαžšαŸ€αž”αž…αŸ†αžαž˜αŸ’αž›αŸƒ αž“αž·αž„αž‚αž»αžŽαž›αž€αŸ’αžαžŽαŸˆαžŸαž€αž›αŸ” αž”αŸ’αžšαžŸαž·αž“αž”αžΎαž’αŸ’αž“αž€αž‡αžΆαž’αŸ’αž“αž€αž“αž·αž–αž“αŸ’αž’αž‚αŸ†αžšαžΌ αž’αŸ’αž“αž€αž’αžΆαž…αž”αž“αŸ’αžαŸ‚αž˜αž‚αž»αžŽαž›αž€αŸ’αžαžŽαŸˆαžαŸ’αž˜αžΈαž‘αŸ…αžœαžαŸ’αžαž»αžšαž”αžŸαŸ‹αž’αŸ’αž“αž€ αž αžΎαž™αž–αž½αž€αžœαžΆαž“αžΉαž„αž’αžΆαž…αžšαž€αž”αžΆαž“αžŠαŸ„αž™αžŸαŸ’αžœαŸαž™αž”αŸ’αžšαžœαžαŸ’αžαž·αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž€αžΆαžšαž€αŸ†αžŽαžαŸ‹αžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’αžŠαŸ„αž™αž’αŸ’αž“αž€αž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹αžšαž”αžŸαŸ‹αž’αŸ’αž“αž€αžαžΆαž˜αžšαž™αŸˆαž”αŸ’αžšαž–αŸαž“αŸ’αž’αž”αž“αŸ’αž‘αžΆαžαŸ‹αž–αžΆαž€αŸ’αž™αž”αž‰αŸ’αž‡αžΆαŸ” αž”αŸ’αžšαžŸαž·αž“αž”αžΎαž’αŸ’αž“αž€αž‡αžΆαž’αŸ’αž“αž€αž“αž·αž–αž“αŸ’αž’αžŸαŸ’αž‚αŸ’αžšαžΈαž” αž’αŸ’αž“αž€αž’αžΆαž…αž”αž“αŸ’αžαŸ‚αž˜αž’αžαŸαžšαžαŸ’αž˜αžΈαž‘αŸ…αž€αŸ’αž“αž»αž„αžŸαŸ’αž‚αŸ’αžšαžΈαž”αžšαž”αžŸαŸ‹αž’αŸ’αž“αž€ αž αžΎαž™αžŠαŸ„αžαžœαžΆαž‘αŸ…αž€αŸ’αž“αž»αž„αž”αŸ’αžšαž–αŸαž“αŸ’αž’αž”αž“αŸ’αž‘αžΆαžαŸ‹αž–αžΆαž€αŸ’αž™αž”αž‰αŸ’αž‡αžΆαžšαž”αžŸαŸ‹αž’αŸ’αž“αž€αŸ”

5.3 αž€αžΆαžšαž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹αž”αŸ’αžšαž–αŸαž“αŸ’αž’αžαžΆαž˜αžŠαžΆαž“

αž…αŸ†αžŽαž»αž…αž‘αžΆαŸ†αž„αž˜αžΌαž›αž“αŸƒαž‚αŸ†αžšαžΌαž‚αžΊαžŠαžΎαž˜αŸ’αž”αžΈαž”αž„αŸ’αž€αžΎαžαž›αž‘αŸ’αž’αž•αž›αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž€αžΆαžšαžŸαž·αž€αŸ’αžŸαžΆαž”αž“αŸ’αžαŸ‚αž˜ αž αžΎαž™αž”αŸ’αžšαž–αŸαž“αŸ’αž’αžαžΆαž˜αžŠαžΆαž“ ns-3 αž‚αžΊαž‡αžΆαž™αž“αŸ’αžαž€αžΆαžšαž…αž˜αŸ’αž”αž„αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αžšαžΏαž„αž“αŸαŸ‡αŸ” αžŠαŸ„αž™αžŸαžΆαžš ns-3 αž‚αžΊαž‡αžΆαž€αž˜αŸ’αž˜αžœαž·αž’αžΈ C++ αž˜αž’αŸ’αž™αŸ„αž”αžΆαž™αžŸαŸ’αžαž„αŸ‹αžŠαžΆαžšαž“αŸƒαž€αžΆαžšαž”αž„αŸ’αž€αžΎαžαž›αž‘αŸ’αž’αž•αž›αž–αžΈαž€αž˜αŸ’αž˜αžœαž·αž’αžΈ C++ αž’αžΆαž…αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αŸ’αžšαžΎαŸ–

#include <iostream>
...
int main ()
{
...
std::cout << "The value of x is " << x << std::endl;
...
}

αž’αŸ’αž“αž€αžαŸ‚αž˜αž‘αžΆαŸ†αž„αž’αžΆαž…αž”αŸ’αžšαžΎαž˜αŸ‰αžΌαžŒαž»αž›αž€αžαŸ‹αžαŸ’αžšαžΆαžŠαžΎαž˜αŸ’αž”αžΈαž”αž“αŸ’αžαŸ‚αž˜αžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’αžαžΌαž…αž˜αž½αž™αž‘αŸ…αžŠαŸ†αžŽαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™αžšαž”αžŸαŸ‹αž’αŸ’αž“αž€αŸ” αž˜αžΆαž“αž”αž‰αŸ’αž αžΆαžŠαŸ‚αž›αž‚αŸαžŸαŸ’αž‚αžΆαž›αŸ‹αž‡αžΆαž…αŸ’αžšαžΎαž“αžŠαŸ‚αž›αž”αžŽαŸ’αžαžΆαž›αž˜αž€αž–αžΈαžœαž·αž’αžΈαžŸαžΆαžŸαŸ’αžšαŸ’αžαž“αŸαŸ‡ αžŠαžΌαž…αŸ’αž“αŸαŸ‡αž αžΎαž™αž™αžΎαž„αž”αžΆαž“αž•αŸ’αžαž›αŸ‹αž”αŸ’αžšαž–αŸαž“αŸ’αž’αžšαž„αžαžΆαž˜αžŠαžΆαž“αž–αŸ’αžšαžΉαžαŸ’αžαž·αž€αžΆαžšαžŽαŸαž‘αžΌαž‘αŸ…αžŠαžΎαž˜αŸ’αž”αžΈαžŠαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™αž”αž‰αŸ’αž αžΆαž‘αžΆαŸ†αž„αž“αŸαŸ‡αŸ”

αž‚αŸ„αž›αžŠαŸ…αžŸαŸ†αžαžΆαž“αŸ‹αž“αŸƒαž”αŸ’αžšαž–αŸαž“αŸ’αž’αžαžΆαž˜αžŠαžΆαž“ ns-3 αž‚αžΊαŸ–

  • αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž€αž·αž…αŸ’αž…αž€αžΆαžšαž˜αžΌαž›αžŠαŸ’αž‹αžΆαž“ αž”αŸ’αžšαž–αŸαž“αŸ’αž’αžαžΆαž˜αžŠαžΆαž“αž‚αž½αžšαžαŸ‚αž’αž“αž»αž‰αŸ’αž‰αžΆαžαž±αŸ’αž™αž’αŸ’αž“αž€αž”αŸ’αžšαžΎαž”αž„αŸ’αž€αžΎαžαžŠαžΆαž“αžŸαŸ’αžαž„αŸ‹αžŠαžΆαžšαžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž”αŸ’αžšαž—αž–αž–αŸαž‰αž“αž·αž™αž˜ αž“αž·αž„αž‡αŸ’αžšαžΎαžŸαžšαžΎαžŸαžœαžαŸ’αžαž»αžŠαŸ‚αž›αž”αž„αŸ’αž€αžΎαžαžŠαžΆαž“αŸ”

  • αž’αŸ’αž“αž€αž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹αž€αž˜αŸ’αžšαž·αžαž˜αž’αŸ’αž™αž˜αž‚αž½αžšαžαŸ‚αž’αžΆαž…αž–αž„αŸ’αžšαžΈαž€αž”αŸ’αžšαž–αŸαž“αŸ’αž’αžαžΆαž˜αžŠαžΆαž“ αžŠαžΎαž˜αŸ’αž”αžΈαž•αŸ’αž›αžΆαžŸαŸ‹αž”αŸ’αžαžΌαžšαž‘αŸ’αžšαž„αŸ‹αž‘αŸ’αžšαžΆαž™αž›αž‘αŸ’αž’αž•αž›αžŠαŸ‚αž›αž”αžΆαž“αž”αž„αŸ’αž€αžΎαž αž¬αž”αž‰αŸ’αž…αžΌαž›αž”αŸ’αžšαž—αž–αžŠαžΆαž“αžαŸ’αž˜αžΈ αžŠαŸ„αž™αž˜αž·αž“αž…αžΆαŸ†αž”αžΆαž…αŸ‹αž€αŸ‚αž”αŸ’αžšαŸ‚αžŸαŸ’αž“αžΌαž›αž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž€αŸ’αž›αŸ‚αž„αž’αŸ’αžœαžΎαŸ”

  • αž’αŸ’αž“αž€αž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹αž€αž˜αŸ’αžšαž·αžαžαŸ’αž–αžŸαŸ‹αž’αžΆαž…αž€αŸ‚αž”αŸ’αžšαŸ‚αžŸαŸ’αž“αžΌαž›αž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž€αŸ’αž›αŸ‚αž„αž’αŸ’αžœαžΎ αžŠαžΎαž˜αŸ’αž”αžΈαž”αž“αŸ’αžαŸ‚αž˜αž”αŸ’αžšαž—αž–αžŠαžΆαž“αžαŸ’αž˜αžΈ αž“αž·αž„αž›αž·αž…αŸ” αž”αŸ’αžšαž–αŸαž“αŸ’αž’αžαžΆαž˜αžŠαžΆαž“ ns-3 αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αž„αŸ’αž€αžΎαžαž‘αžΎαž„αž“αŸ…αž›αžΎαž‚αŸ„αž›αž€αžΆαžšαžŽαŸαž“αŸƒαž”αŸ’αžšαž—αž–αžαžΆαž˜αžŠαžΆαž“αž―αž€αžšαžΆαž‡αŸ’αž™ αž“αž·αž„αž’αŸ’αž“αž€αž‘αž‘αž½αž› αž€αŸαžŠαžΌαž…αž‡αžΆαž™αž“αŸ’αžαž€αžΆαžšαž”αž„αŸ’αžšαž½αž”αž”αž„αŸ’αžšαž½αž˜αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž—αŸ’αž‡αžΆαž”αŸ‹αž”αŸ’αžšαž—αž–αž‘αŸ…αž€αžΆαž“αŸ‹αž’αŸ’αž“αž€αž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹αŸ”

αž”αŸ’αžšαž–αŸαž“αŸ’αž’αžαžΆαž˜αžŠαžΆαž“ ns-3 αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αž„αŸ’αž€αžΎαžαž‘αžΎαž„αž“αŸ…αž›αžΎαž‚αŸ„αž›αž€αžΆαžšαžŽαŸαž“αŸƒαž”αŸ’αžšαž—αž–αžαžΆαž˜αžŠαžΆαž“αž―αž€αžšαžΆαž‡αŸ’αž™ αž“αž·αž„αž’αŸ’αž“αž€αž‘αž‘αž½αž› αž€αŸαžŠαžΌαž…αž‡αžΆαž™αž“αŸ’αžαž€αžΆαžšαž”αž„αŸ’αžšαž½αž”αž”αž„αŸ’αžšαž½αž˜αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž—αŸ’αž‡αžΆαž”αŸ‹αž”αŸ’αžšαž—αž–αž‘αŸ…αž€αžΆαž“αŸ‹αž’αŸ’αž“αž€αž‘αž‘αž½αž›αŸ” αž”αŸ’αžšαž—αž–αžŠαžΆαž“αž‚αžΊαž‡αžΆαžœαžαŸ’αžαž»αžŠαŸ‚αž›αž’αžΆαž…αž•αŸ’αžαž›αŸ‹αžŸαž‰αŸ’αž‰αžΆαž’αŸ†αž–αžΈαž–αŸ’αžšαžΉαžαŸ’αžαž·αž€αžΆαžšαžŽαŸαžŠαŸ‚αž›αž€αžΎαžαž‘αžΎαž„αž“αŸ…αž€αŸ’αž“αž»αž„αž€αžΆαžšαž€αŸ’αž›αŸ‚αž„αž’αŸ’αžœαžΎ αž“αž·αž„αž•αŸ’αžαž›αŸ‹αž“αžΌαžœαž€αžΆαžšαž…αžΌαž›αž‘αŸ…αž€αžΆαž“αŸ‹αž‘αž·αž“αŸ’αž“αž“αŸαž™αž˜αžΌαž›αžŠαŸ’αž‹αžΆαž“αžŠαŸ‚αž›αž…αžΆαž”αŸ‹αž’αžΆαžšαž˜αŸ’αž˜αžŽαŸαŸ” αž§αž‘αžΆαž αžšαžŽαŸ αž”αŸ’αžšαž—αž–β€‹αžŠαžΆαž“β€‹αž’αžΆαž…β€‹αž”αž„αŸ’αž αžΆαž‰β€‹αž–αžΈβ€‹αž–αŸαž›β€‹αžŠαŸ‚αž›β€‹αž§αž”αž€αžšαžŽαŸβ€‹αž”αžŽαŸ’αžŠαžΆαž‰β€‹αž”αžΆαž“β€‹αž‘αž‘αž½αž›β€‹αž€αž‰αŸ’αž…αž”αŸ‹β€‹αž–αŸαžαŸŒαž˜αžΆαž“ αž αžΎαž™β€‹αž’αŸ’αžœαžΎβ€‹αž±αŸ’αž™β€‹αž˜αžΆαžαž·αž€αžΆβ€‹αž“αŸƒβ€‹αž€αž‰αŸ’αž…αž”αŸ‹β€‹αž˜αžΆαž“β€‹αžŸαž˜αŸ’αžšαžΆαž”αŸ‹β€‹αž’αŸ’αž“αž€β€‹αž‘αž‘αž½αž›β€‹αžŠαžΆαž“β€‹αžŠαŸ‚αž›β€‹αž…αžΆαž”αŸ‹β€‹αž’αžΆαžšαž˜αŸ’αž˜αžŽαŸαŸ”

αž”αŸ’αžšαž—αž–αžŠαžΆαž“αžŠαŸ„αž™αžαŸ’αž›αž½αž“αž―αž„αž‚αžΊαž‚αŸ’αž˜αžΆαž“αž”αŸ’αžšαž™αŸ„αž‡αž“αŸαž‘αŸ αž›αž»αŸ‡αžαŸ’αžšαžΆαžαŸ‚αž–αž½αž€αž‚αŸαžαŸ’αžšαžΌαžœαž”αžΆαž“ "αž—αŸ’αž‡αžΆαž”αŸ‹" αž‡αžΆαž˜αž½αž™αž•αŸ’αž“αŸ‚αž€αž•αŸ’αžŸαŸαž„αž‘αŸ€αžαž“αŸƒαž€αžΌαžŠαžŠαŸ‚αž›αž–αž·αžαž‡αžΆαž’αŸ’αžœαžΎαž’αŸ’αžœαžΈαž˜αž½αž™αžŠαŸ‚αž›αž˜αžΆαž“αž”αŸ’αžšαž™αŸ„αž‡αž“αŸαž‡αžΆαž˜αž½αž™αž“αžΉαž„αž–αŸαžαŸŒαž˜αžΆαž“αžŠαŸ‚αž›αž•αŸ’αžαž›αŸ‹αžŠαŸ„αž™αž›αž·αž…αŸ” Tracers αž‚αžΊαž‡αžΆαž’αŸ’αž“αž€αž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹αž–αŸ’αžšαžΉαžαŸ’αžαž·αž€αžΆαžšαžŽαŸ αž“αž·αž„αž‘αž·αž“αŸ’αž“αž“αŸαž™αžŠαŸ‚αž›αž•αŸ’αžαž›αŸ‹αžŠαŸ„αž™αž”αŸ’αžšαž—αž–αžŠαžΆαž“αŸ” αž§αž‘αžΆαž αžšαžŽαŸ αž’αŸ’αž“αž€αž’αžΆαž…αž”αž„αŸ’αž€αžΎαžαžŠαžΆαž“αžŠαžΆαž“αžŠαŸ‚αž›αž“αžΉαž„ (αž“αŸ…αž–αŸαž›αž—αŸ’αž‡αžΆαž”αŸ‹αž‘αŸ…αž”αŸ’αžšαž—αž–αžŠαžΆαž“αž“αŸƒαž§αž‘αžΆαž αžšαžŽαŸαž˜αž»αž“) αž”αŸ„αŸ‡αž–αž»αž˜αŸ’αž–αž•αŸ’αž“αŸ‚αž€αžŠαŸ‚αž›αž…αžΆαž”αŸ‹αž’αžΆαžšαž˜αŸ’αž˜αžŽαŸαž“αŸ…αž€αŸ’αž“αž»αž„αž€αž‰αŸ’αž…αž”αŸ‹αž–αŸαžαŸŒαž˜αžΆαž“αžŠαŸ‚αž›αž‘αž‘αž½αž›αž”αžΆαž“αŸ”

αž αŸαžαž»αž•αž›αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž€αžΆαžšαž”αŸ†αž”αŸ‚αž€αž™αŸ‰αžΆαž„αž…αŸ’αž”αžΆαžŸαŸ‹αž›αžΆαžŸαŸ‹αž“αŸαŸ‡αž‚αžΊαžŠαžΎαž˜αŸ’αž”αžΈαž’αž“αž»αž‰αŸ’αž‰αžΆαžαž±αŸ’αž™αž’αŸ’αž“αž€αž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹αž—αŸ’αž‡αžΆαž”αŸ‹αž”αŸ’αžšαž—αŸαž‘αž›αž·αž…αžαŸ’αž˜αžΈαž‘αŸ…αž“αžΉαž„αž”αŸ’αžšαž—αž–αžŠαžΆαž“αžŠαŸ‚αž›αž˜αžΆαž“αžŸαŸ’αžšαžΆαž”αŸ‹αžŠαŸ„αž™αž˜αž·αž“αž…αžΆαŸ†αž”αžΆαž…αŸ‹αž€αŸ‚αžŸαž˜αŸ’αžšαž½αž› αž“αž·αž„αž…αž„αž€αŸ’αžšαž„αžŸαŸ’αž“αžΌαž›αž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž€αŸ’αž›αŸ‚αž„αž’αŸ’αžœαžΎαž‘αžΎαž„αžœαž·αž‰αŸ” αžŠαžΌαž…αŸ’αž“αŸαŸ‡αž€αŸ’αž“αž»αž„αž§αž‘αžΆαž αžšαžŽαŸαžαžΆαž„αž›αžΎ αž’αŸ’αž“αž€αž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹αž’αžΆαž…αž€αŸ†αžŽαžαŸ‹αžŠαžΆαž“αžαŸ’αž˜αžΈαž“αŸ…αž€αŸ’αž“αž»αž„αžŸαŸ’αž‚αŸ’αžšαžΈαž”αžšαž”αžŸαŸ‹αž–αž½αž€αž‚αŸ αž αžΎαž™αž—αŸ’αž‡αžΆαž”αŸ‹αžœαžΆαž‘αŸ…αž”αŸ’αžšαž—αž–αžŠαžΆαž“αžŠαŸ‚αž›αž˜αžΆαž“αžŸαŸ’αžšαžΆαž”αŸ‹αžŠαŸ‚αž›αž”αžΆαž“αž€αŸ†αžŽαžαŸ‹αž€αŸ’αž“αž»αž„αžŸαŸ’αž“αžΌαž›αž€αŸ’αž›αŸ‚αž„αž’αŸ’αžœαžΎαžŠαŸ„αž™αž‚αŸ’αžšαžΆαž“αŸ‹αžαŸ‚αž€αŸ‚αžŸαž˜αŸ’αžšαž½αž›αžŸαŸ’αž‚αŸ’αžšαžΈαž”αž’αŸ’αž“αž€αž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹αž”αŸ‰αž»αžŽαŸ’αžŽαŸ„αŸ‡αŸ”

αž“αŸ…αž€αŸ’αž“αž»αž„αž€αžΆαžšαž”αž„αŸ’αžšαŸ€αž“αž“αŸαŸ‡ αž™αžΎαž„αž“αžΉαž„αž†αŸ’αž›αž„αž€αžΆαžαŸ‹αž”αŸ’αžšαž—αž–αžŠαŸ‚αž›αž”αžΆαž“αž€αŸ†αžŽαžαŸ‹αž‡αžΆαž˜αž»αž“ αž“αž·αž„αž›αž·αž…αž˜αž½αž™αž…αŸ†αž“αž½αž“ αž αžΎαž™αž”αž„αŸ’αž αžΆαž‰αž–αžΈαžšαž”αŸ€αž”αžŠαŸ‚αž›αž–αž½αž€αžœαžΆαž’αžΆαž…αžαŸ’αžšαžΌαžœαž”αžΆαž“αž€αŸ†αžŽαžαŸ‹αžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’αžŠαŸ„αž™αž”αŸ’αžšαžΎαž…αŸ†αž“αž½αž“αžαž·αž…αž”αŸ†αž•αž»αžαž“αŸƒαž€αžΆαžšαžαž·αžαžαŸ†αž”αŸ’αžšαžΉαž„αž”αŸ’αžšαŸ‚αž„αž›αžΎαž•αŸ’αž“αŸ‚αž€αžšαž”αžŸαŸ‹αž’αŸ’αž“αž€αž”αŸ’αžšαžΎαŸ” αžŸαžΌαž˜αž˜αžΎαž›αžŸαŸ€αžœαž—αŸ…αžŽαŸ‚αž“αžΆαŸ† ns-3 αž¬αž•αŸ’αž“αŸ‚αž€αžšαž”αŸ€αž”αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž–αŸαžαŸŒαž˜αžΆαž“αž’αŸ†αž–αžΈαž€αžΆαžšαž€αŸ†αžŽαžαŸ‹αžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’αžŠαžΆαž“αž€αž˜αŸ’αžšαž·αžαžαŸ’αž–αžŸαŸ‹ αžšαž½αž˜αž‘αžΆαŸ†αž„αž€αžΆαžšαž–αž„αŸ’αžšαžΈαž€αž‘αŸ†αž αŸ†αžˆαŸ’αž˜αŸ„αŸ‡αžŠαžΆαž“ αž“αž·αž„αž€αžΆαžšαž”αž„αŸ’αž€αžΎαžαž”αŸ’αžšαž—αž–αžŠαžΆαž“αžαŸ’αž˜αžΈαŸ”

5.3.1 αž€αžΆαžšαžαžΆαž˜αžŠαžΆαž“ ASCII

ns-3 αž•αŸ’αžαž›αŸ‹αž“αžΌαžœαž˜αž»αžαž„αžΆαžšαž‡αŸ†αž“αž½αž™αžŠαŸ‚αž›αž•αŸ’αžαž›αŸ‹αž“αžΌαžœαž”αŸ’αžšαž–αŸαž“αŸ’αž’αžαžΆαž˜αžŠαžΆαž“αž€αž˜αŸ’αžšαž·αžαž‘αžΆαž” αžŠαžΎαž˜αŸ’αž”αžΈαž‡αž½αž™αž’αŸ’αž“αž€αž“αžΌαžœαž–αŸαžαŸŒαž˜αžΆαž“αž›αž˜αŸ’αž’αž·αžαž“αŸ…αž–αŸαž›αžšαŸ€αž”αž…αŸ†αž€αžΆαžšαžαžΆαž˜αžŠαžΆαž“αž€αž‰αŸ’αž…αž”αŸ‹αž–αŸαžαŸŒαž˜αžΆαž“αžŸαžΆαž˜αž‰αŸ’αž‰αŸ” αž”αŸ’αžšαžŸαž·αž“αž”αžΎαž’αŸ’αž“αž€αž”αžΎαž€αž˜αž»αžαž„αžΆαžšαž“αŸαŸ‡ αž’αŸ’αž“αž€αž“αžΉαž„αžƒαžΎαž‰αž›αž‘αŸ’αž’αž•αž›αž“αŸ…αž€αŸ’αž“αž»αž„αž―αž€αžŸαžΆαžš ASCII αŸ” αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž’αŸ’αž“αž€αžŠαŸ‚αž›αžŸαŸ’αž‚αžΆαž›αŸ‹αž›αž‘αŸ’αž’αž•αž› ns-2 αž”αŸ’αžšαž—αŸαž‘αž“αŸƒαžŠαžΆαž“αž“αŸαŸ‡αž‚αžΊαžŸαŸ’αžšαžŠαŸ€αž„αž‘αŸ…αž“αžΉαž„ out.trαžŠαŸ‚αž›αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αž„αŸ’αž€αžΎαžαžŠαŸ„αž™αžŸαŸ’αž‚αŸ’αžšαžΈαž”αž‡αžΆαž…αŸ’αžšαžΎαž“αŸ”

αžαŸ„αŸ‡αž…αž»αŸ‡αž‘αŸ…αž’αžΆαž‡αžΈαžœαž€αž˜αŸ’αž˜ αž αžΎαž™αž”αž“αŸ’αžαŸ‚αž˜αž›αž‘αŸ’αž’αž•αž›αžαžΆαž˜αžŠαžΆαž“ ASCII αž˜αž½αž™αž…αŸ†αž“αž½αž“αž‘αŸ…αžŸαŸ’αž‚αŸ’αžšαžΈαž” scratch/myfirst.cc αžšαž”αžŸαŸ‹αž™αžΎαž„αŸ” αž˜αž»αž“αž–αŸαž›αž€αžΆαžšαž αŸ… Simulator :: Run ()αž”αž“αŸ’αžαŸ‚αž˜αž€αžΌαžŠαžαžΆαž„αž€αŸ’αžšαŸ„αž˜αŸ–
AsciiTraceHelper ascii;

pointToPoint.EnableAsciiAll (ascii.CreateFileStream ("myfirst.tr"));

αžŠαžΌαž…αžŸαž–αŸ’αžœαžœαž…αž“αžΆαž’αž·αž”αŸ’αž”αžΆαž™ ns-3 αž•αŸ’αžŸαŸαž„αž‘αŸ€αž αž€αžΌαžŠαž“αŸαŸ‡αž”αŸ’αžšαžΎαžœαžαŸ’αžαž»αž‡αŸ†αž“αž½αž™αžŠαžΎαž˜αŸ’αž”αžΈαž”αž„αŸ’αž€αžΎαžαžŠαžΆαž“ ASCII αŸ” αž‡αž½αžšαž‘αžΈαž–αžΈαžšαž˜αžΆαž“αž€αžΆαžšαž αŸ…αžαžΆαž˜αžœαž·αž’αžΈαžŸαžΆαžŸαŸ’αžšαŸ’αžŠαž–αžΈαžšαŸ” αžœαž·αž’αžΈαžŸαžΆαžŸαŸ’αžšαŸ’αž "αžαžΆαž„αž€αŸ’αž“αž»αž„" αž”αž„αŸ’αž€αžΎαžFileStream() αž”αŸ’αžšαžΎαžŸαž–αŸ’αžœαžœαž…αž“αžΆαž’αž·αž”αŸ’αž”αžΆαž™αžœαžαŸ’αžαž»αž’αž“αžΆαž˜αž·αž€αžŠαžΎαž˜αŸ’αž”αžΈαž”αž„αŸ’αž€αžΎαžαžœαžαŸ’αžαž»αžŸαŸ’αž‘αŸ’αžšαžΈαž˜αž―αž€αžŸαžΆαžšαž“αŸ…αž›αžΎαž‡αž„αŸ‹ (αžŠαŸ„αž™αž‚αŸ’αž˜αžΆαž“αžˆαŸ’αž˜αŸ„αŸ‡αžœαžαŸ’αžαž») αž αžΎαž™αž”αž‰αŸ’αž‡αžΌαž“αžœαžΆαž‘αŸ…αžœαž·αž’αžΈαžŸαžΆαžŸαŸ’αžαŸ’αžšαžŠαŸ‚αž›αž αŸ…αžαžΆαŸ” αž™αžΎαž„β€‹αž“αžΉαž„β€‹αž…αžΌαž›β€‹αž‘αŸ…β€‹αž‡αŸ’αžšαŸ…β€‹αž‘αŸ…β€‹αž€αŸ’αž“αž»αž„β€‹αžšαžΏαž„β€‹αž“αŸαŸ‡β€‹αž“αŸ…β€‹αž–αŸαž›β€‹αž’αž“αžΆαž‚αž αž”αŸ‰αž»αž“αŸ’αžαŸ‚β€‹αž’αŸ’αžœαžΈβ€‹αžŠαŸ‚αž›β€‹αž’αŸ’αž“αž€β€‹αžαŸ’αžšαžΌαžœβ€‹αžŠαžΉαž„β€‹αž“αŸ…β€‹αžαŸ’αžšαž„αŸ‹β€‹αž…αŸ†αžŽαž»αž…β€‹αž“αŸαŸ‡β€‹αž‚αžΊβ€‹αžαžΆβ€‹αž’αŸ’αž“αž€β€‹αž€αŸ†αž–αž»αž„β€‹αž”αž„αŸ’αž€αžΎαžβ€‹αžœαžαŸ’αžαž»β€‹αžŠαŸ‚αž›β€‹αžαŸ†αžŽαžΆαž„β€‹αž±αŸ’αž™β€‹αž―αž€αžŸαžΆαžšβ€‹αžŠαŸ‚αž›β€‹αž‚αŸβ€‹αž αŸ…β€‹αžαžΆ myfirst.tr αž αžΎαž™αž•αŸ’αž‘αŸαžšαžœαžΆαž‘αŸ… ns-3 αŸ” αž™αžΎαž„αž”αŸ’αžšαž‚αž›αŸ‹ ns-3 αž±αŸ’αž™αžαŸ‚αž‘αžΆαŸ†αžœαžαŸ’αžαž»αžŠαŸ‚αž›αž”αžΆαž“αž”αž„αŸ’αž€αžΎαžαž–αŸαž‰αž˜αž½αž™αž‡αžΈαžœαž·αžαžšαž”αžŸαŸ‹αžœαžΆ αž€αŸ’αž“αž»αž„αž’αŸ†αž‘αž»αž„αž–αŸαž›αžŠαŸ‚αž›αžœαžΆαžŠαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™αž”αž‰αŸ’αž αžΆαžŠαŸ‚αž›αž”αž„αŸ’αž€αž‘αžΎαž„αžŠαŸ„αž™αžŠαŸ‚αž“αž€αŸ†αžŽαžαŸ‹αžŠαŸ‚αž›αž‚αŸαžŸαŸ’αž‚αžΆαž›αŸ‹αžαž·αž…αžαž½αž… (αžŠαŸ„αž™αž…αŸαžαž“αžΆ) αžŠαŸ‚αž›αž‘αžΆαž€αŸ‹αž‘αž„αž“αžΉαž„αž’αŸ’αž“αž€αž”αž„αŸ’αž€αžΎαžαž…αž˜αŸ’αž›αž„αžœαžαŸ’αžαž»αžŸαŸ’αž‘αŸ’αžšαžΈαž˜ C ++ αŸ”

αž€αžΆαžšαž αŸ…αžαžΆαž„αž€αŸ’αžšαŸ… αž”αžΎαž€αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšAsciiAll() αž”αŸ’αžšαžΆαž”αŸ‹αž‡αŸ†αž“αž½αž™αž€αžΆαžšαžαžΆαž’αŸ’αž“αž€αž…αž„αŸ‹αž”αž‰αŸ’αž…αžΌαž›αž€αžΆαžšαžαžΆαž˜αžŠαžΆαž“ ASCII αž€αŸ’αž“αž»αž„αž€αžΆαžšαž€αŸ’αž›αŸ‚αž„αž’αŸ’αžœαžΎαžšαž”αžŸαŸ‹αž’αŸ’αž“αž€αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž€αžΆαžšαž—αŸ’αž‡αžΆαž”αŸ‹αž§αž”αž€αžšαžŽαŸαž–αžΈαž…αŸ†αžŽαž»αž…αž˜αž½αž™αž‘αŸ…αž…αŸ†αžŽαž»αž…αž‘αžΆαŸ†αž„αž’αžŸαŸ‹ αž αžΎαž™αž’αŸ’αž“αž€αž…αž„αŸ‹αž±αŸ’αž™αž’αŸ’αž“αž€αž‘αž‘αž½αž›αžŠαžΆαž“ (αž‡αžΆαž€αŸ‹αž›αžΆαž€αŸ‹) αž€αžαŸ‹αžαŸ’αžšαžΆαž–αŸαžαŸŒαž˜αžΆαž“αž…αž›αž“αžΆαž€αž‰αŸ’αž…αž”αŸ‹αž–αŸαžαŸŒαž˜αžΆαž“αž€αŸ’αž“αž»αž„αž‘αž˜αŸ’αžšαž„αŸ‹ ASCII αŸ”

αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž’αŸ’αž“αž€αžŠαŸ‚αž›αžŸαŸ’αž‚αžΆαž›αŸ‹αž‡αžΆαž˜αž½αž™ ns-2 αž–αŸ’αžšαžΉαžαŸ’αžαž·αž€αžΆαžšαžŽαŸαžŠαŸ‚αž›αž”αžΆαž“αžαžΆαž˜αžŠαžΆαž“αž‚αžΊαžŸαŸ’αž˜αžΎαž“αžΉαž„αž…αŸ†αžŽαž»αž…αžŠαžΆαž“αžŠαŸ‚αž›αž‚αŸαžŸαŸ’αž‚αžΆαž›αŸ‹αžŠαŸ‚αž›αž€αžαŸ‹αžαŸ’αžšαžΆαž–αŸ’αžšαžΉαžαŸ’αžαž·αž€αžΆαžšαžŽαŸ "+", "-", "d" αž“αž·αž„ "r" αŸ”
αž₯αž‘αžΌαžœαž’αŸ’αž“αž€αž’αžΆαž…αž”αž„αŸ’αž€αžΎαžαžŸαŸ’αž‚αŸ’αžšαžΈαž” αž αžΎαž™αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαžœαžΆαž–αžΈαž”αž“αŸ’αž‘αžΆαžαŸ‹αž–αžΆαž€αŸ’αž™αž”αž‰αŸ’αž‡αžΆαŸ–

$ ./waf --run scratch/myfirst

αžŠαžΌαž…αž…αŸ’αžšαžΎαž“αžŠαž„αž–αžΈαž˜αž»αž“αžŠαŸ‚αžš αž’αŸ’αž“αž€αž“αžΉαž„αžƒαžΎαž‰αžŸαžΆαžšαž‡αžΆαž…αŸ’αžšαžΎαž“αž–αžΈ Waf αž αžΎαž™αž”αž“αŸ’αž‘αžΆαž”αŸ‹αž˜αž€ "'build' αž”αžΆαž“αž”αž‰αŸ’αž…αž”αŸ‹αžŠαŸ„αž™αž‡αŸ„αž‚αž‡αŸαž™" αž‡αžΆαž˜αž½αž™αž“αžΉαž„αžŸαžΆαžšαž˜αž½αž™αž…αŸ†αž“αž½αž“αž–αžΈαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαžŠαŸ‚αž›αž€αŸ†αž–αž»αž„αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαŸ”

αž“αŸ…αž–αŸαž›αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž“αžΉαž„αž”αž„αŸ’αž€αžΎαžαž―αž€αžŸαžΆαžšαžŠαŸ‚αž›αž˜αžΆαž“αžˆαŸ’αž˜αŸ„αŸ‡ myfirst.tr. αžŠαŸ„αž™αžŸαžΆαžšαžαŸ‚αž’αž˜αŸ’αž˜αž‡αžΆαžαž·αž“αŸƒαž€αžΆαžšαž„αžΆαžš αžœαŸ‰αžΆαžαžΆαž˜αž›αŸ†αž“αžΆαŸ†αžŠαžΎαž˜ αž―αž€αžŸαžΆαžšαžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αž„αŸ’αž€αžΎαžαž˜αž·αž“αž“αŸ…αž€αŸ’αž“αž»αž„αžαžαž˜αžΌαž›αžŠαŸ’αž‹αžΆαž“ αž”αŸ‰αž»αž“αŸ’αžαŸ‚αž“αŸ…αž€αŸ’αž“αž»αž„αžαžαž€αž˜αŸ’αžšαž·αžαž€αŸ†αž–αžΌαž›αž“αŸƒαžƒαŸ’αž›αžΆαŸ†αž„αŸ” αž”αŸ’αžšαžŸαž·αž“αž”αžΎαž’αŸ’αž“αž€αž…αž„αŸ‹αž•αŸ’αž›αžΆαžŸαŸ‹αž”αŸ’αžαžΌαžšαž•αŸ’αž›αžΌαžœαžŠαŸ‚αž›αžŠαžΆαž“αžαŸ’αžšαžΌαžœαž”αžΆαž“αžšαž€αŸ’αžŸαžΆαž‘αž»αž€ αž“αŸ„αŸ‡αž’αŸ’αž“αž€αž’αžΆαž…αž”αŸ’αžšαžΎαž”αŸ‰αžΆαžšαŸ‰αžΆαž˜αŸ‰αŸ‚αžαŸ’αžš Waf αžŠαžΎαž˜αŸ’αž”αžΈαž”αž‰αŸ’αž‡αžΆαž€αŸ‹αžœαžΆ --cwd. αž™αžΎαž„αž˜αž·αž“αž”αžΆαž“αž’αŸ’αžœαžΎαžœαžΆαž‘αŸ αžŠαžΌαž…αŸ’αž“αŸαŸ‡αžŠαžΎαž˜αŸ’αž”αžΈαž˜αžΎαž›αž―αž€αžŸαžΆαžšαžαžΆαž˜αžŠαžΆαž“ ASCII myfirst.tr αž“αŸ…αž€αŸ’αž“αž»αž„αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž“αž·αž–αž“αŸ’αž’αžŠαŸ‚αž›αž’αŸ’αž“αž€αž…αžΌαž›αž…αž·αžαŸ’αž αž™αžΎαž„αž“αžΉαž„αžαŸ’αžšαžΌαžœαž€αžΆαžšαžšαž»αž€αžšαž€αž‘αŸ…αžαžαž€αž˜αŸ’αžšαž·αžαž€αŸ†αž–αžΌαž›αž“αŸƒαžƒαŸ’αž›αžΆαŸ†αž„αžšαž”αžŸαŸ‹αž™αžΎαž„αŸ”

αž€αžΆαžšαž‰αŸ‚αž€αžŠαžΆαž“ ASCII

αž˜αžΆαž“αž–αŸαžαŸŒαž˜αžΆαž“αž‡αžΆαž…αŸ’αžšαžΎαž“αž“αŸ…αž‘αžΈαž“αŸ„αŸ‡αž€αŸ’αž“αž»αž„αž‘αž˜αŸ’αžšαž„αŸ‹αž€αŸ’αžšαžΆαžŸαŸ‹αž›αŸ’αž˜αž˜ αž”αŸ‰αž»αž“αŸ’αžαŸ‚αžšαžΏαž„αžŠαŸ†αž”αžΌαž„αžŠαŸ‚αž›αž’αŸ’αž“αž€αžαŸ’αžšαžΌαžœαž€αžαŸ‹αžŸαž˜αŸ’αž‚αžΆαž›αŸ‹αž‚αžΊαžαžΆ αž―αž€αžŸαžΆαžšαž˜αžΆαž“αž”αž“αŸ’αž‘αžΆαžαŸ‹αž“αžΈαž˜αž½αž™αŸ—αŸ” αžœαžΆαž“αžΉαž„αž€αŸ’αž›αžΆαž™αž‡αžΆαž’αžΆαž…αž˜αžΎαž›αžƒαžΎαž‰αž™αŸ‰αžΆαž„αž…αŸ’αž”αžΆαžŸαŸ‹αž”αŸ’αžšαžŸαž·αž“αž”αžΎαž’αŸ’αž“αž€αž–αž„αŸ’αžšαžΈαž€αž”αž„αŸ’αž’αž½αž…αž˜αžΎαž›αž±αŸ’αž™αž€αžΆαž“αŸ‹αžαŸ‚αž‘αžΌαž›αŸ†αž‘αžΌαž›αžΆαž™αŸ”

αž”αž“αŸ’αž‘αžΆαžαŸ‹αž“αžΈαž˜αž½αž™αŸ—αž“αŸ…αž€αŸ’αž“αž»αž„αž―αž€αžŸαžΆαžšαžαŸ’αžšαžΌαžœαž‚αŸ’αž“αžΆαž‘αŸ…αž“αžΉαž„αž–αŸ’αžšαžΉαžαŸ’αžαž·αž€αžΆαžšαžŽαŸαžαžΆαž˜αžŠαžΆαž“αŸ” αž€αŸ’αž“αž»αž„αž€αžšαžŽαžΈαž“αŸαŸ‡ αž™αžΎαž„αžαžΆαž˜αžŠαžΆαž“αž–αŸ’αžšαžΉαžαŸ’αžαž·αž€αžΆαžšαžŽαŸαž“αŸ…αž€αŸ’αž“αž»αž„αž‡αž½αžšαž”αž‰αŸ’αž‡αžΌαž“αžŠαŸ‚αž›αž˜αžΆαž“αžœαžαŸ’αžαž˜αžΆαž“αž“αŸ…αž€αŸ’αž“αž»αž„αž§αž”αž€αžšαžŽαŸαž”αžŽαŸ’αžαžΆαž‰αž–αžΈαž…αŸ†αžŽαž»αž…αž˜αž½αž™αž‘αŸ…αž…αŸ†αžŽαž»αž…αž“αžΈαž˜αž½αž™αŸ—αž“αŸ…αž€αŸ’αž“αž»αž„αž€αžΆαžšαž€αŸ’αž›αŸ‚αž„αž’αŸ’αžœαžΎαŸ” αž‡αž½αžšαž”αž‰αŸ’αž‡αžΌαž“αž‚αžΊαž‡αžΆαž‡αž½αžšαžŠαŸ‚αž›αž€αž‰αŸ’αž…αž”αŸ‹αž–αŸαžαŸŒαž˜αžΆαž“αž“αžΈαž˜αž½αž™αŸ—αžαŸ’αžšαžΌαžœαž†αŸ’αž›αž„αž€αžΆαžαŸ‹αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αžαŸ†αžŽαž–αžΈαž…αŸ†αžŽαž»αž…αž˜αž½αž™αž‘αŸ…αž…αŸ†αžŽαž»αž…αž˜αž½αž™αŸ” αž…αŸ†αžŽαžΆαŸ†αžαžΆαž”αž“αŸ’αž‘αžΆαžαŸ‹αž“αžΈαž˜αž½αž™αŸ—αž“αŸ…αž€αŸ’αž“αž»αž„αž―αž€αžŸαžΆαžšαžŠαžΆαž“αž…αžΆαž”αŸ‹αž•αŸ’αžαžΎαž˜αžŠαŸ„αž™αžαž½αž’αž€αŸ’αžŸαžšαžαŸ‚αž˜αž½αž™ (αž αžΎαž™αž˜αžΆαž“αžŠαž€αžƒαŸ’αž›αžΆαž”αž“αŸ’αž‘αžΆαž”αŸ‹αž–αžΈαžœαžΆ)αŸ” αž“αž·αž˜αž·αžαŸ’αžαžŸαž‰αŸ’αž‰αžΆαž“αŸαŸ‡αž“αžΉαž„αž˜αžΆαž“αž’αžαŸ’αžαž“αŸαž™αžŠαžΌαž…αžαžΆαž„αž€αŸ’αžšαŸ„αž˜αŸˆ

+: αž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž€αžΆαžšαžαž˜αŸ’αžšαž„αŸ‹αž‡αž½αžšαž”αžΆαž“αž€αžΎαžαž‘αžΎαž„αž“αŸ…αž›αžΎαž‡αž½αžšαž§αž”αž€αžšαžŽαŸαŸ”
-: αž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž€αžΆαžšαž‘αžΆαž‰αž™αž€αž’αžΆαžαž»αž”αžΆαž“αž€αžΎαžαž‘αžΎαž„αž“αŸ…αž€αŸ’αž“αž»αž„αž‡αž½αžšαž§αž”αž€αžšαžŽαŸαŸ”
αžƒαŸ– αž€αž‰αŸ’αž…αž”αŸ‹αž–αŸαžαŸŒαž˜αžΆαž“αžαŸ’αžšαžΌαžœαž”αžΆαž“αž‘αž˜αŸ’αž›αžΆαž€αŸ‹ αž‡αžΆαž’αž˜αŸ’αž˜αžαžΆαžŠαŸ„αž™αžŸαžΆαžšαžαŸ‚αž‡αž½αžšαž–αŸαž‰αŸ”
rαŸ– αž€αž‰αŸ’αž…αž”αŸ‹αž–αŸαžαŸŒαž˜αžΆαž“αžαŸ’αžšαžΌαžœαž”αžΆαž“αž‘αž‘αž½αž›αžŠαŸ„αž™αž§αž”αž€αžšαžŽαŸαž”αžŽαŸ’αžαžΆαž‰αŸ”

αž…αžΌαžšαž™αžΎαž„αž–αž·αž“αž·αžαŸ’αž™αž˜αžΎαž›αž€αžΆαž“αŸ‹αžαŸ‚αžŠαž·αžαžŠαž›αŸ‹αž“αžΌαžœαž”αž“αŸ’αž‘αžΆαžαŸ‹αž‘αžΈαž˜αž½αž™αž“αŸ…αž€αŸ’αž“αž»αž„αž―αž€αžŸαžΆαžšαžŠαžΆαž“αŸ” αžαŸ’αž‰αž»αŸ†β€‹αž“αžΉαž„β€‹αž”αŸ†αž”αŸ‚αž€β€‹αžœαžΆβ€‹αž‡αžΆβ€‹αž•αŸ’αž“αŸ‚αž€ (αžŠαŸ„αž™β€‹αž˜αžΆαž“β€‹αž€αžΆαžšβ€‹αž…αžΌαž›β€‹αž”αž“αŸ’αž‘αžΆαžαŸ‹β€‹αžŠαžΎαž˜αŸ’αž”αžΈβ€‹αž—αžΆαž–β€‹αž…αŸ’αž”αžΆαžŸαŸ‹) αž“αž·αž„β€‹αž›αŸαžβ€‹αž”αž“αŸ’αž‘αžΆαžαŸ‹β€‹αž“αŸ…β€‹αžαžΆαž„β€‹αž†αŸ’αžœαŸαž„αŸ–

0 +
1 2
2 /NodeList/0/DeviceList/0/$ns3::PointToPointNetDevice/TxQueue/Enqueue
3 ns3::PppHeader (
4   Point-to-Point Protocol: IP (0x0021))
6   ns3::Ipv4Header (
7     tos 0x0 ttl 64 id 0 protocol 17 offset 0 flags [none]
8     length: 1052 10.1.1.1 > 10.1.1.2)
9     ns3::UdpHeader (
10      length: 1032 49153 > 9)
11      Payload (size=1024)

αž•αŸ’αž“αŸ‚αž€αžŠαŸ†αž”αžΌαž„αž“αŸƒαž–αŸ’αžšαžΉαžαŸ’αžαž·αž€αžΆαžšαžŽαŸαžαžΆαž˜αžŠαžΆαž“αžŠαŸ‚αž›αž”αžΆαž“αž–αž„αŸ’αžšαžΈαž€αž“αŸαŸ‡ (αž”αž“αŸ’αž‘αžΆαžαŸ‹ 0) αž‚αžΊαž‡αžΆαž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž€αžΆαžšαŸ” αž™αžΎαž„αž˜αžΆαž“αž“αž·αž˜αž·αžαŸ’αžαžŸαž‰αŸ’αž‰αžΆ + αž“αŸ…αž‘αžΈαž“αŸαŸ‡ αžŠαŸ‚αž›αžαŸ’αžšαžΌαžœαž“αžΉαž„αž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž€αžΆαžšαž“αŸƒαž‡αž½αžšαžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž€αžΆαžšαž”αž‰αŸ’αž‡αžΌαž“αŸ” αž•αŸ’αž“αŸ‚αž€αž‘αžΈαž–αžΈαžš (αž”αž“αŸ’αž‘αžΆαžαŸ‹αž‘αžΈ 1) αž‚αžΊαž‡αžΆαž–αŸαž›αžœαŸαž›αžΆαž€αŸ’αž›αŸ‚αž„αž’αŸ’αžœαžΎ αžŠαŸ‚αž›αž”αž„αŸ’αž αžΆαž‰αž‡αžΆαžœαž·αž“αžΆαž‘αžΈαŸ” αž’αŸ’αž“αž€β€‹αž”αŸ’αžšαž αŸ‚αž›β€‹αž‡αžΆβ€‹αž…αžΆαŸ†β€‹αž’αŸ’αžœαžΈβ€‹αžŠαŸ‚αž›β€‹αž™αžΎαž„β€‹αž”αžΆαž“β€‹αžŸαž½αžš αž€αž˜αŸ’αž˜αžœαž·αž’αžΈ UdpEchoClient αž…αžΆαž”αŸ‹αž•αŸ’αžαžΎαž˜αž•αŸ’αž‰αžΎαž€αž‰αŸ’αž…αž”αŸ‹αž€αŸ’αž“αž»αž„αžšαž™αŸˆαž–αŸαž›αž–αžΈαžšαžœαž·αž“αžΆαž‘αžΈαŸ” αž“αŸ…αž‘αžΈαž“αŸαŸ‡αž™αžΎαž„αžƒαžΎαž‰αž€αžΆαžšαž”αž‰αŸ’αž‡αžΆαž€αŸ‹αžαžΆαž“αŸαŸ‡αž–αž·αžαž‡αžΆαž€αžΎαžαž‘αžΎαž„αŸ”

αž•αŸ’αž“αŸ‚αž€αž”αž“αŸ’αž‘αžΆαž”αŸ‹αž“αŸƒαž§αž‘αžΆαž αžšαžŽαŸαžŠαžΆαž“ (αž–αžΈαž”αž“αŸ’αž‘αžΆαžαŸ‹αž‘αžΈ 2) αž”αž„αŸ’αž αžΆαž‰αž”αŸ’αžšαž—αž–αžŠαžΆαž“αžŽαžΆαž˜αž½αž™αžŠαŸ‚αž›αž”αž„αŸ’αž€αžΎαžαž–αŸ’αžšαžΉαžαŸ’αžαž·αž€αžΆαžšαžŽαŸαž“αŸαŸ‡ (αž”αž„αŸ’αž αžΆαž‰αž–αžΈαž€αžΆαžšαžαžΆαž˜αžŠαžΆαž“αž›αŸ†αž αžˆαŸ’αž˜αŸ„αŸ‡)αŸ” αž’αŸ’αž“αž€β€‹αž’αžΆαž…β€‹αž‚αž·αžβ€‹αž’αŸ†αž–αžΈβ€‹αž…αž“αŸ’αž›αŸ„αŸ‡β€‹αžˆαŸ’αž˜αŸ„αŸ‡β€‹αžŠαžΆαž“β€‹αžŠαžΌαž…β€‹αž‡αžΆβ€‹αž’αŸ’αž“αž€β€‹αž“αžΉαž„β€‹αž”αŸ’αžšαžΎβ€‹αž…αž“αŸ’αž›αŸ„αŸ‡β€‹αžˆαŸ’αž˜αŸ„αŸ‡β€‹αž”αŸ’αžšαž–αŸαž“αŸ’αž’β€‹αž―αž€αžŸαžΆαžšαŸ” αž«αžŸαž‚αž›αŸ‹αž“αŸƒαž›αŸ†αž αžˆαŸ’αž˜αŸ„αŸ‡αž‚αžΊ αž”αž‰αŸ’αž‡αžΈ NodeList. αžœαžΆβ€‹αžαŸ’αžšαžΌαžœβ€‹αž“αžΉαž„β€‹αž€αž»αž„αžŠαž„αŸ‹β€‹αžŠαŸ‚αž›β€‹αž”αžΆαž“β€‹αž‚αŸ’αžšαž”αŸ‹αž‚αŸ’αžšαž„β€‹αž€αŸ’αž“αž»αž„β€‹αž€αžΌαžŠ ns-3 αžŸαŸ†αžαžΆαž“αŸ‹αŸ” αžœαžΆαž˜αžΆαž“αžαŸ’αž“αžΆαŸ†αž„αž‘αžΆαŸ†αž„αž’αžŸαŸ‹αžŠαŸ‚αž›αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αž„αŸ’αž€αžΎαžαž“αŸ…αž€αŸ’αž“αž»αž„αžŸαŸ’αž‚αŸ’αžšαžΈαž”αŸ” αžŠαžΌαž…αž‡αžΆαž”αŸ’αžšαž–αŸαž“αŸ’αž’αž―αž€αžŸαžΆαžšαž’αžΆαž…αž˜αžΆαž“αžαžαž“αŸ…αž«αžŸαžšαž”αžŸαŸ‹αžœαžΆ αž”αž‰αŸ’αž‡αžΈ NodeList αž™αžΎαž„αž’αžΆαž…αž˜αžΆαž“αžαŸ’αž“αžΆαŸ†αž„αž‡αžΆαž…αŸ’αžšαžΎαž“αŸ” αžŠαžΌαž…αŸ’αž“αŸαŸ‡ αž”αž“αŸ’αž‘αžΆαžαŸ‹ /NodeList/0 αžŸαŸ†αžŠαŸ…αž›αžΎαžαŸ’αž“αžΆαŸ†αž„ null αž“αŸ…αž€αŸ’αž“αž»αž„ NodeList αžŠαŸ‚αž›αž‡αžΆαž’αž˜αŸ’αž˜αžαžΆαž™αžΎαž„αž‚αž·αžαžαžΆαž‡αžΆ "node 0" αŸ” αžαŸ’αž“αžΆαŸ†αž„αž“αžΈαž˜αž½αž™αŸ—αž˜αžΆαž“αž”αž‰αŸ’αž‡αžΈαž§αž”αž€αžšαžŽαŸαžŠαŸ‚αž›αžαŸ’αžšαžΌαžœαž”αžΆαž“αžŠαŸ†αž‘αžΎαž„αŸ” αž”αž‰αŸ’αž‡αžΈαž“αŸαŸ‡αž˜αžΆαž“αž‘αžΈαžαžΆαŸ†αž„αž“αŸ…αž”αž“αŸ’αž‘αžΆαž”αŸ‹αž€αŸ’αž“αž»αž„ namespace αŸ” αž’αŸ’αž“αž€αž’αžΆαž…αž˜αžΎαž›αžƒαžΎαž‰αžαžΆαž–αŸ’αžšαžΉαžαŸ’αžαž·αž€αžΆαžšαžŽαŸαžŠαžΆαž“αž“αŸαŸ‡αž˜αž€αž–αžΈ αž”αž‰αŸ’αž‡αžΈαž§αž”αž€αžšαžŽαŸ/0αžŠαŸ‚αž›αž‡αžΆαž§αž”αž€αžšαžŽαŸ null αžŠαŸ‚αž›αž”αžΆαž“αžŠαŸ†αž‘αžΎαž„αž“αŸ…αž€αŸ’αž“αž»αž„ node αŸ”

αžαŸ’αžŸαŸ‚αž’αž€αŸ’αžŸαžšαžšαž„αž”αž“αŸ’αž‘αžΆαž”αŸ‹, $ ns3 :: PointToPointNetDeviceαž”αŸ’αžšαžΆαž”αŸ‹αž§αž”αž€αžšαžŽαŸαž˜αž½αž™αžŽαžΆαž“αŸ…αž‘αžΈαžαžΆαŸ†αž„αžŸαžΌαž“αŸ’αž™αŸ– αž”αž‰αŸ’αž‡αžΈαž§αž”αž€αžšαžŽαŸαž“αŸƒαž›αŸαžαžŸαžΌαž“αŸ’αž™αŸ” αžŸαžΌαž˜αž…αžΆαŸ†αžαžΆαž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž€αžΆαžš + αž”αžΆαž“αžšαž€αžƒαžΎαž‰αž“αŸ…αž€αŸ’αž“αž»αž„αž”αž“αŸ’αž‘αžΆαžαŸ‹ 0 αž˜αžΆαž“αž“αŸαž™αžαžΆαž’αžΆαžαž»αž˜αž½αž™αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αž“αŸ’αžαŸ‚αž˜αž‘αŸ…αž‡αž½αžšαž”αž‰αŸ’αž‡αžΌαž“αžšαž”αžŸαŸ‹αž§αž”αž€αžšαžŽαŸαŸ” αž“αŸαŸ‡αžαŸ’αžšαžΌαžœαž”αžΆαž“αž†αŸ’αž›αž»αŸ‡αž”αž‰αŸ’αž…αžΆαŸ†αž„αž“αŸ…αž€αŸ’αž“αž»αž„αž•αŸ’αž“αŸ‚αž€αž…αž»αž„αž€αŸ’αžšαŸ„αž™αž“αŸƒ "αž•αŸ’αž›αžΌαžœαž”αž‘"αŸ– TxQueue/Enqueue.

αž•αŸ’αž“αŸ‚αž€αžŠαŸ‚αž›αž“αŸ…αžŸαž›αŸ‹αž“αŸ…αž€αŸ’αž“αž»αž„αžŠαžΆαž“αž‚αž½αžšαžαŸ‚αž˜αžΆαž“αž›αž€αŸ’αžαžŽαŸˆαžœαž·αž…αžΆαžšαžŽαž‰αžΆαžŽαž™αž»αžαŸ’αžαž·αž’αž˜αŸŒαŸ” αž”αž“αŸ’αž‘αžΆαžαŸ‹ 3-4 αž”αž„αŸ’αž αžΆαž‰αžαžΆαž€αž‰αŸ’αž…αž”αŸ‹αž–αŸαžαŸŒαž˜αžΆαž“αžαŸ’αžšαžΌαžœαž”αžΆαž“αžšαž»αŸ†αž–αŸαž‘αŸ’αž’αž€αŸ’αž“αž»αž„αž–αž·αž’αžΈαž€αžΆαžšαž–αžΈαž…αŸ†αžŽαž»αž…αž˜αž½αž™αž‘αŸ…αž…αŸ†αžŽαž»αž…αž˜αž½αž™αŸ” αž”αž“αŸ’αž‘αžΆαžαŸ‹ 5-7 αž”αž„αŸ’αž αžΆαž‰αžαžΆαž€αž‰αŸ’αž…αž”αŸ‹αž–αŸαžαŸŒαž˜αžΆαž“αž˜αžΆαž“αž”αž‹αž˜αž€αžαžΆαž€αŸ†αžŽαŸ‚ IP4 αž αžΎαž™αž˜αžΆαž“αž”αŸ’αžšαž—αž–αž˜αž€αž–αžΈαž’αžΆαžŸαž™αžŠαŸ’αž‹αžΆαž“ IP 10.1.1.1 αž“αž·αž„αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αž˜αŸ’αžšαž»αž„αž‘αž»αž€αžŸαž˜αŸ’αžšαžΆαž”αŸ‹ 10.1.1.2. αž‡αž½αžšαž‘αžΈ 8-9 αž”αž„αŸ’αž αžΆαž‰αžαžΆαž€αž‰αŸ’αž…αž”αŸ‹αž–αŸαžαŸŒαž˜αžΆαž“αž“αŸαŸ‡αž˜αžΆαž“αž”αž‹αž˜αž€αžαžΆ UDP αž αžΎαž™αž…αž»αž„αž€αŸ’αžšαŸ„αž™αž”αž“αŸ’αž‘αžΆαžαŸ‹αž‘αžΈ 10 αž”αž„αŸ’αž αžΆαž‰αžαžΆαž”αž“αŸ’αž‘αž»αž€αž‚αžΊ 1024 αž”αŸƒαžŠαŸ‚αž›αžšαŸ†αž–αžΉαž„αž‘αž»αž€αŸ”

αž”αž“αŸ’αž‘αžΆαžαŸ‹αž”αž“αŸ’αž‘αžΆαž”αŸ‹αž“αŸ…αž€αŸ’αž“αž»αž„αž―αž€αžŸαžΆαžšαžŠαžΆαž“αž”αž„αŸ’αž αžΆαž‰αžαžΆαž€αž‰αŸ’αž…αž”αŸ‹αž–αŸαžαŸŒαž˜αžΆαž“αžŠαžΌαž…αž‚αŸ’αž“αžΆαžαŸ’αžšαžΌαžœαž”αžΆαž“αž‘αžΆαž‰αž…αŸαž‰αž–αžΈαž‡αž½αžšαž”αž‰αŸ’αž‡αžΌαž“αž“αŸ…αž›αžΎαžαŸ’αž“αžΆαŸ†αž„αžŠαžΌαž…αž‚αŸ’αž“αžΆαŸ”

αž”αž“αŸ’αž‘αžΆαžαŸ‹αž‘αžΈαž”αžΈαž“αŸ…αž€αŸ’αž“αž»αž„αž―αž€αžŸαžΆαžšαžŠαžΆαž“αž”αž„αŸ’αž αžΆαž‰αžαžΆαž€αž‰αŸ’αž…αž”αŸ‹αž–αŸαžαŸŒαž˜αžΆαž“αžαŸ’αžšαžΌαžœαž”αžΆαž“αž‘αž‘αž½αž›αžŠαŸ„αž™αž§αž”αž€αžšαžŽαŸαž”αžŽαŸ’αžαžΆαž‰αž“αŸ…αž›αžΎαž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž˜αŸαž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž˜αŸαž’αŸαž€αžΌαŸ” αžαŸ’αž‰αž»αŸ†αž”αžΆαž“αž•αž›αž·αžαž‘αžΎαž„αžœαž·αž‰αž“αžΌαžœαž–αŸ’αžšαžΉαžαŸ’αžαž·αž€αžΆαžšαžŽαŸαžαžΆαž„αž€αŸ’αžšαŸ„αž˜αŸ”

0 r
1 2.25732
2 /NodeList/1/DeviceList/0/$ns3::PointToPointNetDevice/MacRx
3   ns3::Ipv4Header (
4     tos 0x0 ttl 64 id 0 protocol 17 offset 0 flags [none]
5     length: 1052 10.1.1.1 > 10.1.1.2)
6     ns3::UdpHeader (
7       length: 1032 49153 > 9)
8       Payload (size=1024)

αž…αŸ†αžŽαžΆαŸ†αžαžΆαž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž€αžΆαžšαžαžΆαž˜αžŠαžΆαž“αž₯αž‘αžΌαžœαž“αŸαŸ‡αž‚αžΊ r αž αžΎαž™αž–αŸαž›αžœαŸαž›αžΆαž€αŸ’αž›αŸ‚αž„αž’αŸ’αžœαžΎαžαŸ’αžšαžΌαžœαž”αžΆαž“αž€αžΎαž“αž‘αžΎαž„αžŠαž›αŸ‹ 2,25732 αžœαž·αž“αžΆαž‘αžΈαŸ” αž”αŸ’αžšαžŸαž·αž“αž”αžΎαž’αŸ’αž“αž€αž’αŸ’αžœαžΎαžαžΆαž˜αž€αžΆαžšαžŽαŸ‚αž“αžΆαŸ†αžŠαŸ„αž™αž”αŸ’αžšαž»αž„αž”αŸ’αžšαž™αŸαžαŸ’αž“ αž“αŸαŸ‡αž˜αžΆαž“αž“αŸαž™αžαžΆαž’αŸ’αž“αž€αž”αžΆαž“αž…αžΆαž€αž…αŸαž‰αž–αžΈ DataRate αž“αž·αž„ Link Delay αžšαž”αžŸαŸ‹αž§αž”αž€αžšαžŽαŸαž”αžŽαŸ’αžαžΆαž‰αžαžΆαž˜αžαž˜αŸ’αž›αŸƒαž›αŸ†αž“αžΆαŸ†αžŠαžΎαž˜αžšαž”αžŸαŸ‹αžœαžΆαŸ” αž—αžΆαž–αžαžΆαž“αžαžΉαž„αž“αŸαŸ‡αž‚αž½αžšαžαŸ‚αžŸαŸŠαžΆαŸ†αžŠαžΌαž…αžŠαŸ‚αž›αž’αŸ’αž“αž€αž”αžΆαž“αžƒαžΎαž‰αž“αŸ…αž€αŸ’αž“αž»αž„αž•αŸ’αž“αŸ‚αž€αž˜αž»αž“αŸ”

αž’αžΆαžαž»αžˆαŸ’αž˜αŸ„αŸ‡αž›αŸ†αž αž”αŸ’αžšαž—αž–αžŠαžΆαž“ (αž‡αž½αžšαž‘αžΈ 2) αžαŸ’αžšαžΌαžœαž”αžΆαž“αž€αŸ‚αž”αŸ’αžšαŸ‚αžŠαžΎαž˜αŸ’αž”αžΈαž†αŸ’αž›αž»αŸ‡αž”αž‰αŸ’αž…αžΆαŸ†αž„αžαžΆαž–αŸ’αžšαžΉαžαŸ’αžαž·αž€αžΆαžšαžŽαŸαž“αŸαŸ‡αž˜αžΆαž“αž”αŸ’αžšαž—αž–αž˜αž€αž–αžΈαžαŸ’αž“αžΆαŸ†αž„ 1 (/αž”αž‰αŸ’αž‡αžΈ NodeList/1) αž αžΎαž™αž€αž‰αŸ’αž…αž”αŸ‹αž–αŸαžαŸŒαž˜αžΆαž“αžαŸ’αžšαžΌαžœαž”αžΆαž“αž‘αž‘αž½αž›αžŠαŸ„αž™αž”αŸ’αžšαž—αž–αžŠαžΆαž“ (/MacRx) αžœαžΆαž‚αž½αžšαžαŸ‚αž˜αžΆαž“αž—αžΆαž–αž„αžΆαž™αžŸαŸ’αžšαž½αž›αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž’αŸ’αž“αž€αž€αŸ’αž“αž»αž„αž€αžΆαžšαžαžΆαž˜αžŠαžΆαž“αž…αž›αž“αžΆαžšαž”αžŸαŸ‹αž€αž‰αŸ’αž…αž”αŸ‹αž–αŸαžαŸŒαž˜αžΆαž“αžαžΆαž˜αžšαž™αŸˆ topology αžŠαŸ„αž™αž˜αžΎαž›αžŠαžΆαž“αžŠαŸ‚αž›αž“αŸ…αžŸαž›αŸ‹αž€αŸ’αž“αž»αž„αž―αž€αžŸαžΆαžšαŸ”

5.3.2 PCAP αžŠαžΆαž“

αž§αž”αž€αžšαžŽαŸαž‡αŸ†αž“αž½αž™αž§αž”αž€αžšαžŽαŸ ns-3 αž€αŸαž’αžΆαž…αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αŸ’αžšαžΎαžŠαžΎαž˜αŸ’αž”αžΈαž”αž„αŸ’αž€αžΎαžαž―αž€αžŸαžΆαžšαžŠαžΆαž“αž€αŸ’αž“αž»αž„αž‘αž˜αŸ’αžšαž„αŸ‹ .pcap αž•αž„αžŠαŸ‚αžšαŸ” αž’αž€αŸ’αžŸαžšαž€αžΆαžαŸ‹ pcap (αž‡αžΆαž’αž˜αŸ’αž˜αžαžΆαžαŸ’αžšαžΌαžœαž”αžΆαž“αžŸαžšαžŸαŸαžšαž‡αžΆαž’αž€αŸ’αžŸαžšαžαžΌαž…) αžαŸ†αžŽαžΆαž„αž±αŸ’αž™αž€αžΆαžšαž…αžΆαž”αŸ‹αž™αž€αž€αž‰αŸ’αž…αž”αŸ‹αž–αŸαžαŸŒαž˜αžΆαž“ αž αžΎαž™αž‡αžΆαž€αžΆαžšαž–αž·αž API αžŠαŸ‚αž›αžšαž½αž˜αž”αž‰αŸ’αž…αžΌαž›αž€αžΆαžšαž€αŸ†αžŽαžαŸ‹αž‘αž˜αŸ’αžšαž„αŸ‹αž―αž€αžŸαžΆαžš .pcap αŸ” αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž–αŸαž‰αž“αž·αž™αž˜αž”αŸ†αž•αž»αžαžŠαŸ‚αž›αž’αžΆαž…αž’αžΆαž“ αž“αž·αž„αž”αž„αŸ’αž αžΆαž‰αž‘αž˜αŸ’αžšαž„αŸ‹αž“αŸαŸ‡αž‚αžΊ Wireshark (αž–αžΈαž˜αž»αž“αž αŸ…αžαžΆ Ethereal) αž‘αŸ„αŸ‡αž™αŸ‰αžΆαž„αžŽαžΆαž€αŸαžŠαŸ„αž™ αž˜αžΆαž“αž§αž”αž€αžšαžŽαŸαžœαž·αž—αžΆαž‚αžŠαžΆαž“αž…αžšαžΆαž…αžšαžŽαŸαž‡αžΆαž…αŸ’αžšαžΎαž“αžŠαŸ‚αž›αž”αŸ’αžšαžΎαž‘αž˜αŸ’αžšαž„αŸ‹αž€αž‰αŸ’αž…αž”αŸ‹αž–αŸαžαŸŒαž˜αžΆαž“αž“αŸαŸ‡αŸ” αž™αžΎαž„αž›αžΎαž€αž‘αžΉαž€αž…αž·αžαŸ’αžαž’αŸ’αž“αž€αž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹αž±αŸ’αž™αž”αŸ’αžšαžΎαž§αž”αž€αžšαžŽαŸαž‡αžΆαž…αŸ’αžšαžΎαž“αžŠαŸ‚αž›αž˜αžΆαž“αžŠαžΎαž˜αŸ’αž”αžΈαžœαž·αž—αžΆαž‚αžŠαžΆαž“ pcap αŸ” αž“αŸ…αž€αŸ’αž“αž»αž„αž˜αŸαžšαŸ€αž“αž“αŸαŸ‡ αž™αžΎαž„αž“αžΉαž„αž•αŸ’αžαŸ„αžαž›αžΎαž€αžΆαžšαž˜αžΎαž›αžŠαžΆαž“ pcap αžŠαŸ„αž™αž”αŸ’αžšαžΎ tcpdump.

αž€αžΆαžšαž”αžΎαž€αžŠαŸ†αžŽαžΎαžšαž€αžΆαžš pcap tracing αžαŸ’αžšαžΌαžœαž”αžΆαž“αž’αŸ’αžœαžΎαžŠαŸ„αž™αž”αž“αŸ’αž‘αžΆαžαŸ‹αž˜αž½αž™αž“αŸƒαž€αžΌαžŠαŸ”

pointToPoint.EnablePcapAll ("myfirst");

αž”αž·αž‘αž—αŸ’αž‡αžΆαž”αŸ‹αž”αž“αŸ’αž‘αžΆαžαŸ‹αž“αŸƒαž€αžΌαžŠαž“αŸαŸ‡αž”αž“αŸ’αž‘αžΆαž”αŸ‹αž–αžΈαž›αŸαžαž€αžΌαžŠαžαžΆαž˜αžŠαžΆαž“ ASCII αžŠαŸ‚αž›αž™αžΎαž„αž‘αžΎαž”αžαŸ‚αž”αžΆαž“αž”αž‰αŸ’αž…αžΌαž› scratch/myfirst.cc. αž…αŸ†αžŽαžΆαŸ†αžαžΆαž™αžΎαž„αž‚αŸ’αžšαžΆαž“αŸ‹αžαŸ‚αž†αŸ’αž›αž„αž€αžΆαžαŸ‹αžαŸ’αžŸαŸ‚αž’αž€αŸ’αžŸαžš "myfirst" αž˜αž·αž“αž˜αŸ‚αž“ "myfirst.pcap" αž¬αž’αŸ’αžœαžΈαžŸαŸ’αžšαžŠαŸ€αž„αž‚αŸ’αž“αžΆαž“αŸ„αŸ‡αž‘αŸαŸ” αž“αŸαŸ‡αž‚αžΊαžŠαŸ„αž™αžŸαžΆαžšαžαŸ‚αž”αŸ‰αžΆαžšαŸ‰αžΆαž˜αŸ‰αŸ‚αžαŸ’αžšαž‚αžΊαž‡αžΆαž”αž»αž–αŸ’αžœαž”αž‘ αž˜αž·αž“αž˜αŸ‚αž“αž‡αžΆαžˆαŸ’αž˜αŸ„αŸ‡αž―αž€αžŸαžΆαžšαž–αŸαž‰αž›αŸαž‰αž‘αŸαŸ” αž€αŸ’αž“αž»αž„αž’αŸ†αž‘αž»αž„αž–αŸαž›αž“αŸƒαž€αžΆαžšαž€αŸ’αž›αŸ‚αž„αž’αŸ’αžœαžΎ αž‡αŸ†αž“αž½αž™αž€αžΆαžšαž–αž·αžαž‡αžΆαž“αžΉαž„αž”αž„αŸ’αž€αžΎαžαž―αž€αžŸαžΆαžšαžαžΆαž˜αžŠαžΆαž“αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž§αž”αž€αžšαžŽαŸαž–αžΈαž…αŸ†αžŽαž»αž…αž˜αž½αž™αž‘αŸ…αž…αŸ†αžŽαž»αž…αž“αžΈαž˜αž½αž™αŸ—αŸ” αžˆαŸ’αž˜αŸ„αŸ‡αž―αž€αžŸαžΆαžšαž“αžΉαž„αžαŸ’αžšαžΌαžœαž”αžΆαž“αžŸαžΆαž„αžŸαž„αŸ‹αžŠαŸ„αž™αž”αŸ’αžšαžΎαž”αž»αž–αŸ’αžœαž”αž‘ αž›αŸαžαžαŸ’αž“αžΆαŸ†αž„ αž›αŸαžαž§αž”αž€αžšαžŽαŸ αž“αž·αž„αž”αž…αŸ’αž…αŸαž™ "αŸ”pcap"αŸ”

αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž§αž‘αžΆαž αžšαžŽαŸαžŸαŸ’αž‚αŸ’αžšαžΈαž”αžšαž”αžŸαŸ‹αž™αžΎαž„ αž™αžΎαž„αž“αžΉαž„αžƒαžΎαž‰αž―αž€αžŸαžΆαžšαžŠαŸ‚αž›αž˜αžΆαž“αžˆαŸ’αž˜αŸ„αŸ‡ "myfirst-0-0.pcap"αž αžΎαž™"myfirst-1-0.pcap" αžŠαŸ‚αž›αž‡αžΆαžŠαžΆαž“ pcap αžŸαž˜αŸ’αžšαžΆαž”αŸ‹ node 0-device 0 αž“αž·αž„ node 1-device 0 αžšαŸ€αž„αž‚αŸ’αž“αžΆαŸ” αž“αŸ…αž–αŸαž›αžŠαŸ‚αž›αž’αŸ’αž“αž€αž”αžΆαž“αž”αž“αŸ’αžαŸ‚αž˜αž”αž“αŸ’αž‘αžΆαžαŸ‹αž€αžΌαžŠαžŠαžΎαž˜αŸ’αž”αžΈαž”αžΎαž€αžŠαŸ†αžŽαžΎαžšαž€αžΆαžš pcap tracing αž’αŸ’αž“αž€αž’αžΆαž…αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαžŸαŸ’αž‚αŸ’αžšαžΈαž”αžαžΆαž˜αžšαž”αŸ€αž”αž’αž˜αŸ’αž˜αžαžΆαŸ–

$ ./waf --run scratch/myfirst

αž”αŸ’αžšαžŸαž·αž“αž”αžΎαž’αŸ’αž“αž€αžšαž€αž˜αžΎαž›αž“αŸ…αž€αŸ’αž“αž»αž„αžαžαž€αž˜αŸ’αžšαž·αžαž€αŸ†αž–αžΌαž›αž“αŸƒαž€αžΆαžšαž…αŸ‚αž€αž…αžΆαž™αžšαž”αžŸαŸ‹αž’αŸ’αž“αž€ αž’αŸ’αž“αž€αž‚αž½αžšαžαŸ‚αžƒαžΎαž‰αž―αž€αžŸαžΆαžšαž”αžΈαŸ– αž―αž€αžŸαžΆαžšαžαžΆαž˜αžŠαžΆαž“ ASCII myfirst.trαž―αž€αžŸαžΆαžšαžŠαŸ‚αž›αž™αžΎαž„αž”αžΆαž“αžŸαž·αž€αŸ’αžŸαžΆαž–αžΈαž˜αž»αž“αž˜αž€ myfirst-0-0.pcap ΠΈ myfirst-1-0.pcap - αž―αž€αžŸαžΆαžš pcap αžαŸ’αž˜αžΈαžŠαŸ‚αž›αž™αžΎαž„αž‘αžΎαž”αžαŸ‚αž”αž„αŸ’αž€αžΎαžαŸ”

αž€αžΆαžšαž’αžΆαž“αž›αž‘αŸ’αž’αž•αž›αž‡αžΆαž˜αž½αž™ tcpdump

αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž–αŸαž›αž“αŸαŸ‡ αžœαž·αž’αžΈαž„αžΆαž™αžŸαŸ’αžšαž½αž›αž”αŸ†αž•αž»αžαžŠαžΎαž˜αŸ’αž”αžΈαž˜αžΎαž›αž―αž€αžŸαžΆαžš pcap αž‚αžΊαžαŸ’αžšαžΌαžœαž”αŸ’αžšαžΎ tcpdump αŸ”

$ tcpdump -nn -tt -r myfirst-0-0.pcap
reading from file myfirst-0-0.pcap, link-type PPP (PPP)
2.000000 IP 10.1.1.1.49153 > 10.1.1.2.9: UDP, length 1024
2.514648 IP 10.1.1.2.9 > 10.1.1.1.49153: UDP, length 1024
tcpdump -nn -tt -r myfirst-1-0.pcap
reading from file myfirst-1-0.pcap, link-type PPP (PPP)
2.257324 IP 10.1.1.1.49153 > 10.1.1.2.9: UDP, length 1024
2.257324 IP 10.1.1.2.9 > 10.1.1.1.49153: UDP, length 1024

αž“αŸ…αž€αŸ’αž“αž»αž„αž€αž“αŸ’αž›αŸ‚αž„αž…αžΆαž€αŸ‹αžŸαŸ†αžšαžΆαž˜ myfirst-0-0.pcap (αž§αž”αž€αžšαžŽαŸαž’αžαž·αžαž·αž‡αž“) αž’αŸ’αž“αž€αž’αžΆαž…αž˜αžΎαž›αžƒαžΎαž‰αž€αž‰αŸ’αž…αž”αŸ‹αž’αŸαž€αžΌαžαŸ’αžšαžΌαžœαž”αžΆαž“αž•αŸ’αž‰αžΎαž”αž“αŸ’αž‘αžΆαž”αŸ‹αž–αžΈ 2 αžœαž·αž“αžΆαž‘αžΈαž“αŸƒαž€αžΆαžšαž€αŸ’αž›αŸ‚αž„αž’αŸ’αžœαžΎαŸ” αž”αŸ’αžšαžŸαž·αž“αž”αžΎαž’αŸ’αž“αž€αž€αŸ’αžšαž‘αŸαž€αž˜αžΎαž›αž€αž“αŸ’αž›αŸ‚αž„αž…αžΆαž€αŸ‹αžŸαŸ†αžšαžΆαž˜αž‘αžΈαž–αžΈαžš (myfirst-1-0.pcap) αž’αŸ’αž“αž€αž“αžΉαž„αžƒαžΎαž‰αžαžΆαž€αž‰αŸ’αž…αž”αŸ‹αž–αŸαžαŸŒαž˜αžΆαž“αžαŸ’αžšαžΌαžœαž”αžΆαž“αž‘αž‘αž½αž›αž“αŸ… 2,257324 αžœαž·αž“αžΆαž‘αžΈαŸ” αž’αŸ’αž“αž€β€‹αž“αžΉαž„β€‹αžƒαžΎαž‰β€‹αž“αŸ…β€‹αž€αŸ’αž“αž»αž„β€‹αž€αžΆαžšβ€‹αž”αŸ„αŸ‡αž…αŸ„αž›β€‹αž‘αžΈβ€‹αž–αžΈαžšβ€‹αžŠαŸ‚αž›β€‹αž€αž‰αŸ’αž…αž”αŸ‹β€‹αžαŸ’αžšαžΌαžœβ€‹αž”αžΆαž“β€‹αžαŸ’αžšαž‘αž”αŸ‹β€‹αž˜αž€β€‹αžœαž·αž‰β€‹αž“αŸ…β€‹αž˜αŸ‰αŸ„αž„ 2.257324 αžœαž·αž“αžΆαž‘αžΈ αž αžΎαž™β€‹αž‘αžΈαž”αŸ†αž•αž»αžβ€‹αž€αž‰αŸ’αž…αž”αŸ‹β€‹αž–αŸαžαŸŒαž˜αžΆαž“β€‹αžαŸ’αžšαžΌαžœβ€‹αž”αžΆαž“β€‹αž‘αž‘αž½αž›β€‹αžœαž·αž‰β€‹αžŠαŸ„αž™β€‹αž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž—αŸ’αž‰αŸ€αžœβ€‹αž€αŸ’αž“αž»αž„β€‹αž€αžΆαžšβ€‹αž”αŸ„αŸ‡αž…αŸ„αž›β€‹αž›αžΎαž€β€‹αž‘αžΈβ€‹αž˜αž½αž™β€‹αž“αŸ…β€‹αž˜αŸ‰αŸ„αž„ 2.514648 αžœαž·αž“αžΆαž‘αžΈαŸ”

αž€αžΆαžšαž’αžΆαž“αž›αž‘αŸ’αž’αž•αž›αž‡αžΆαž˜αž½αž™ Wireshark

αž”αŸ’αžšαžŸαž·αž“αž”αžΎαž’αŸ’αž“αž€αž˜αž·αž“αžŸαžΌαžœαžŸαŸ’αž‚αžΆαž›αŸ‹ Wiresharkαž˜αžΆαž“αž‚αŸαž αž‘αŸ†αž–αŸαžšαž˜αž½αž™αžŠαŸ‚αž›αž’αŸ’αž“αž€αž’αžΆαž…αž‘αžΆαž‰αž™αž€αž€αž˜αŸ’αž˜αžœαž·αž’αžΈ αž“αž·αž„αž―αž€αžŸαžΆαžšαŸ– http://www.wireshark.org/. Wireshark αž‚αžΊαž‡αžΆ GUI αžŠαŸ‚αž›αž’αžΆαž…αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αŸ’αžšαžΎαžŠαžΎαž˜αŸ’αž”αžΈαž”αž„αŸ’αž αžΆαž‰αž―αž€αžŸαžΆαžšαžŠαžΆαž“αž‘αžΆαŸ†αž„αž“αŸαŸ‡αŸ” αž”αŸ’αžšαžŸαž·αž“αž”αžΎαž’αŸ’αž“αž€αž˜αžΆαž“ Wireshark αž’αŸ’αž“αž€αž’αžΆαž…αž”αžΎαž€αž―αž€αžŸαžΆαžšαžŠαžΆαž“αžŽαžΆαž˜αž½αž™ αž αžΎαž™αž”αž„αŸ’αž αžΆαž‰αž˜αžΆαžαž·αž€αžΆαžŠαžΌαž…αž‡αžΆαž’αŸ’αž“αž€αž”αžΆαž“αž…αžΆαž”αŸ‹αž™αž€αž€αž‰αŸ’αž…αž”αŸ‹αž–αŸαžαŸŒαž˜αžΆαž“αžŠαŸ„αž™αž”αŸ’αžšαžΎ packet snifferαŸ”

αž”αŸ’αžšαž—αž–: www.habr.com

αž”αž“αŸ’αžαŸ‚αž˜αž˜αžαž·αž™αŸ„αž”αž›αŸ‹