
4 ΠΡΠ΅Π³Π»Π΅Π΄ Π½Π° ΠΊΠΎΠ½ΡΠ΅ΠΏΡΠΈΡΡΠ°
4.1 ΠΠ»ΡΡΠΎΠ²ΠΈ Π°Π±ΡΡΡΠ°ΠΊΡΠΈΠΈ
4.1.1 ΠΡΠ·Π΅Π» (Node)
4.1.2 ΠΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ (Application)
4.1.3 ΠΠ°Π½Π°Π» (Channel)
4.1.4 ΠΡΠ΅ΠΆΠΎΠ²ΠΎ ΡΡΡΡΠΎΠΉΡΡΠ²ΠΎ (Net Device)
4.1.5 Π’ΠΎΠΏΠΎΠ»ΠΎΠ³ΠΈΡΠ½ΠΈ ΠΏΠΎΠΌΠΎΡΠ½ΠΈΡΠΈ
4.2 ΠΡΡΠ²ΠΈ ΡΠΊΡΠΈΠΏΡ ns-3
4.2.1 ΠΡΠ½ΠΎΠ²Π΅Π½ ΠΊΠΎΠ΄
4.2.2 ΠΠΊΠ»ΡΡΠ²Π°Π΅ΠΌΠΈ ΠΌΠΎΠ΄ΡΠ»ΠΈ
4.2.3 ΠΡΠΎΡΡΡΠ°Π½ΡΡΠ²ΠΎ ΠΎΡ ΠΈΠΌΠ΅Π½Π° ns3
4.2.4 ΠΠΎΠ³Π²Π°Π½Π΅ (Logging)
4.2.5 ΠΠ»Π°Π²Π½Π° ΡΡΠ½ΠΊΡΠΈΡ
4.2.6 ΠΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° ΡΠΎΠΏΠΎΠ»ΠΎΠ³ΠΈΡΠ½ΠΈ ΠΏΠΎΠΌΠΎΡΠ½ΠΈΡΠΈ
4.2.7 ΠΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΡΠΎ
4.2.8 Π‘ΠΈΠΌΡΠ»Π°ΡΠΎΡ
4.2.9 Π‘Π³Π»ΠΎΠ±ΡΠ²Π°Π½Π΅ Π½Π° ΡΡΠ΅Π½Π°ΡΠΈΠΈΡΠ΅ Π²ΠΈ
4.3 ΠΡΡ
ΠΎΠ΄Π΅Π½ ΠΊΠΎΠ΄ Π½Π° ns-3
ΠΠ»Π°Π²Π° 4
ΠΡΠ΅Π³Π»Π΅Π΄ Π½Π° ΠΊΠΎΠ½ΡΠ΅ΠΏΡΠΈΡΡΠ°
ΠΡΡΠ²ΠΎΡΠΎ, ΠΊΠΎΠ΅ΡΠΎ ΡΡΡΠ±Π²Π° Π΄Π° Π½Π°ΠΏΡΠ°Π²ΠΈΠΌ ΠΏΡΠ΅Π΄ΠΈ Π΄Π° Π·Π°ΠΏΠΎΡΠ½Π΅ΠΌ Π΄Π° ΠΈΠ·ΡΡΠ°Π²Π°ΠΌΠ΅ ΠΈΠ»ΠΈ ΠΏΠΈΡΠ΅ΠΌ ΠΊΠΎΠ΄ ns-3, Π΅ Π΄Π° ΠΎΠ±ΡΡΠ½ΠΈΠΌ Π½ΡΠΊΠΎΠ»ΠΊΠΎ ΠΎΡΠ½ΠΎΠ²Π½ΠΈ ΠΏΠΎΠ½ΡΡΠΈΡ ΠΈ Π°Π±ΡΡΡΠ°ΠΊΡΠΈΠΈ Π² ΡΠΈΡΡΠ΅ΠΌΠ°ΡΠ°. ΠΠ½ΠΎΠ³ΠΎ ΠΎΡ ΡΠΎΠ²Π° ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΈΠ·Π³Π»Π΅ΠΆΠ΄Π° ΠΎΡΠ΅Π²ΠΈΠ΄Π½ΠΎ Π·Π° Π½ΡΠΊΠΎΠΈ, Π½ΠΎ ΠΏΡΠ΅ΠΏΠΎΡΡΡΠ²Π°ΠΌΠ΅ Π΄Π° ΠΎΡΠ΄Π΅Π»ΠΈΡΠ΅ Π²ΡΠ΅ΠΌΠ΅ Π·Π° ΡΠ΅ΡΠ΅Π½Π΅ Π½Π° ΡΠ°Π·ΠΈ ΡΠ°ΡΡ, Π·Π° Π΄Π° ΡΠ΅ ΡΠ²Π΅ΡΠΈΡΠ΅, ΡΠ΅ Π·Π°ΠΏΠΎΡΠ²Π°ΡΠ΅ Π½Π° ΡΡΠ°Π±ΠΈΠ»Π½Π° ΠΎΡΠ½ΠΎΠ²Π°.
4.1 ΠΠ»ΡΡΠΎΠ²ΠΈ Π°Π±ΡΡΡΠ°ΠΊΡΠΈΠΈ
Π ΡΠ°Π·ΠΈ ΡΠ°ΡΡ ΡΠ΅ ΡΠ°Π·Π³Π»Π΅Π΄Π°ΠΌΠ΅ Π½ΡΠΊΠΎΠΈ ΡΠ΅ΡΠΌΠΈΠ½ΠΈ, ΠΊΠΎΠΈΡΠΎ ΠΎΠ±ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΎ ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ Π² ΠΌΡΠ΅ΠΆΠ°ΡΠ°, Π½ΠΎ ΠΈΠΌΠ°Ρ ΡΠΏΠ΅ΡΠΈΡΠΈΡΠ½ΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Π² ns-3.
4.1.1 ΠΡΠ·Π΅Π» (Node)
Π ΠΈΠ½ΡΠ΅ΡΠ½Π΅Ρ ΠΆΠ°ΡΠ³ΠΎΠ½Π° ΠΊΠΎΠΌΠΏΡΡΡΡΠ½ΠΎΡΠΎ ΡΡΡΡΠΎΠΉΡΡΠ²ΠΎ, ΠΊΠΎΠ΅ΡΠΎ ΡΠ΅ ΡΠ²ΡΡΠ·Π²Π° Ρ ΠΌΡΠ΅ΠΆΠ°ΡΠ°, ΡΠ΅ Π½Π°ΡΠΈΡΠ° Ρ ΠΎΡΡ ΠΈΠ»ΠΈ ΠΏΠΎΠ½ΡΠΊΠΎΠ³Π° ΠΊΡΠ°ΠΉΠ½Π° ΡΠΈΡΡΠ΅ΠΌΠ°. ΠΠΎΡΠ°Π΄ΠΈ ΡΠ°ΠΊΡΠ°, ΡΠ΅ ns-3 Π΅ ΡΠΈΠΌΡΠ»Π°ΡΠΎΡ Π½Π° ΠΌΡΠ΅ΠΆΠ°, Π° Π½Π΅ ΡΠΈΠΌΡΠ»Π°ΡΠΎΡ Π½Π° ΠΠ½ΡΠ΅ΡΠ½Π΅Ρ, Π½ΠΈΠ΅ ΡΠ΅Π»Π΅Π½Π°ΡΠΎΡΠ΅Π½ΠΎ Π½Π΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌΠ΅ ΡΠ΅ΡΠΌΠΈΠ½Π° Ρ ΠΎΡΡ, ΡΡΠΉ ΠΊΠ°ΡΠΎ ΡΠΎΠΉ Π΅ ΡΡΡΠ½ΠΎ ΡΠ²ΡΡΠ·Π°Π½ Ρ ΠΠ½ΡΠ΅ΡΠ½Π΅Ρ ΠΈ Π½Π΅Π³ΠΎΠ²ΠΈΡΠ΅ ΠΏΡΠΎΡΠΎΠΊΠΎΠ»ΠΈ. ΠΠΌΠ΅ΡΡΠΎ ΡΠΎΠ²Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌΠ΅ ΠΏΠΎ-ΠΎΠ±Ρ ΡΠ΅ΡΠΌΠΈΠ½, ΡΡΡΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½ ΠΎΡ Π΄ΡΡΠ³ΠΈ ΡΠΈΠΌΡΠ»Π°ΡΠΎΡΠΈ, ΠΊΠΎΠΉΡΠΎ ΠΏΡΠΎΠΈΠ·Ρ ΠΎΠΆΠ΄Π° ΠΎΡ ΡΠ΅ΠΎΡΠΈΡΡΠ° Π½Π° Π³ΡΠ°ΡΠΈΡΠ΅ β Π²ΡΠ·Π΅Π» (Node).node).
Π ns-3 ΠΎΡΠ½ΠΎΠ²Π½Π°ΡΠ° Π°Π±ΡΡΡΠ°ΠΊΡΠΈΡ Π½Π° ΠΈΠ·ΡΠΈΡΠ»ΠΈΡΠ΅Π»Π½ΠΎ ΡΡΡΡΠΎΠΉΡΡΠ²ΠΎ ΡΠ΅ Π½Π°ΡΠΈΡΠ° Π²ΡΠ·Π΅Π». Π’Π°Π·ΠΈ Π°Π±ΡΡΡΠ°ΠΊΡΠΈΡ Π΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π΅Π½Π° Π² C++ Ρ ΠΊΠ»Π°ΡΠ° Node. NodeNode (Π²ΡΠ·Π΅Π») ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Ρ ΠΌΠ΅ΡΠΎΠ΄ΠΈ Π·Π° ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π½Π° ΠΏΡΠ΅Π΄ΡΡΠ°Π²ΡΠ½ΠΈΡΡΠ° Π½Π° ΠΈΠ·ΡΠΈΡΠ»ΠΈΡΠ΅Π»Π½ΠΈΡΠ΅ ΡΡΡΡΠΎΠΉΡΡΠ²Π° Π² ΡΠΈΠΌΡΠ»Π°ΡΠΈΠΈΡΠ΅.
ΠΠΈΠ΅ ΡΡΡΠ±Π²Π° Π΄Π° ΡΠ°Π·Π±ΠΈΡΠ°ΡΠ΅ Π£Π·Π΅Π» ΠΊΠ°ΡΠΎ ΠΊΠΎΠΌΠΏΡΡΡΡ, Π½Π° ΠΊΠΎΠΉΡΠΎ ΡΠ΅ Π΄ΠΎΠ±Π°Π²ΠΈΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»Π½ΠΎΡΡ. Π©Π΅ Π΄ΠΎΠ±Π°Π²ΠΈΡΠ΅ Π½Π΅ΡΠ° ΠΊΠ°ΡΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, ΠΏΡΠΎΡΠΎΠΊΠΎΠ»Π½ΠΈ ΡΡΠ΅ΠΊΠΎΠ²Π΅ ΠΈ ΠΏΠ΅ΡΠΈΡΠ΅ΡΠ½ΠΈ ΠΊΠ°ΡΡΠΈ Ρ Π΄ΡΠ°ΠΉΠ²Π΅ΡΠΈ, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π°ΡΠΈ Π½Π° ΠΊΠΎΠΌΠΏΡΡΡΡΠ° Π΄Π° ΠΈΠ·Π²ΡΡΡΠ²Π° ΠΏΠΎΠ»Π΅Π·Π½Π° ΡΠ°Π±ΠΎΡΠ°. ΠΠΈΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌΠ΅ ΡΡΡΠ°ΡΠ° Π±Π°Π·ΠΎΠ²Π° ΠΌΠΎΠ΄Π΅Π» Π² ns-3.
4.1.2 ΠΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ (Application)
ΠΠ±ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΎ ΠΊΠΎΠΌΠΏΡΡΡΡΠ½ΠΈΡΡ ΡΠΎΡΡΡΠ΅Ρ ΡΠ΅ ΡΠ°Π·Π΄Π΅Π»Ρ Π½Π° Π΄Π²Π° ΡΠΈΡΠΎΠΊΠΈ ΠΊΠ»Π°ΡΠ°. Π‘ΠΈΡΡΠ΅ΠΌΠ½ΠΈΡΡ ΡΠΎΡΡΡΠ΅Ρ ΠΎΡΠ³Π°Π½ΠΈΠ·ΠΈΡΠ° ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ ΠΊΠΎΠΌΠΏΡΡΡΡΠ½ΠΈ ΡΠ΅ΡΡΡΡΠΈ ΠΊΠ°ΡΠΎ ΠΏΠ°ΠΌΠ΅Ρ, ΡΠΈΠΊΠ»ΠΈ Π½Π° ΠΏΡΠΎΡΠ΅ΡΠΎΡΠ°, Π΄ΠΈΡΠΊ, ΠΌΡΠ΅ΠΆΠ° ΠΈ Ρ.Π½., Π² ΡΡΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΠ΅ Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π° ΠΈΠ·ΡΠΈΡΠ»ΠΈΡΠ΅Π»Π½Π° ΠΌΠΎΠ΄Π΅Π». Π‘ΠΈΡΡΠ΅ΠΌΠ½ΠΈΡΡ ΡΠΎΡΡΡΠ΅Ρ ΠΎΠ±ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΎ Π½Π΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° ΡΠ΅Π·ΠΈ ΡΠ΅ΡΡΡΡΠΈ Π·Π° ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ Π½Π° Π·Π°Π΄Π°ΡΠΈ, ΠΊΠΎΠΈΡΠΎ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²ΡΡ Π½Π΅ΠΏΠΎΡΡΠ΅Π΄ΡΡΠ²Π΅Π½Π° ΠΏΠΎΠ»Π·Π° Π·Π° ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»Ρ. ΠΠ° Π΄Π° ΠΏΠΎΡΡΠΈΠ³Π½Π΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π° ΡΠ΅Π», ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»ΡΡ ΠΎΠ±ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΎ ΡΡΠ°ΡΡΠΈΡΠ° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, ΠΊΠΎΠ΅ΡΠΎ ΠΏΠΎΠ»ΡΡΠ°Π²Π° ΠΈ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° ΡΠ΅ΡΡΡΡΠΈ, ΠΊΠΎΠ½ΡΡΠΎΠ»ΠΈΡΠ°Π½ΠΈ ΠΎΡ ΡΠΈΡΡΠ΅ΠΌΠ½ΠΈΡ ΡΠΎΡΡΡΠ΅Ρ.
Π§Π΅ΡΡΠΎ Π³ΡΠ°Π½ΠΈΡΠ°ΡΠ° ΠΌΠ΅ΠΆΠ΄Ρ ΡΠΈΡΡΠ΅ΠΌΠ½ΠΈΡ ΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ½ΠΈΡ ΡΠΎΡΡΡΠ΅Ρ ΡΠ΅ ΠΏΡΠΎΠ²Π΅ΠΆΠ΄Π° ΠΏΡΠΈ ΠΏΡΠΎΠΌΡΠ½Π° Π½Π° Π½ΠΈΠ²ΠΎΡΠΎ Π½Π° ΠΏΡΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΠΈ, ΠΊΠΎΡΡΠΎ ΡΠ΅ ΡΠ΅Π°Π»ΠΈΠ·ΠΈΡΠ° Π² Π»ΠΎΠ²ΡΡΠΊΠΈΡΠ΅ Π½Π° ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΎΠ½Π½Π°ΡΠ° ΡΠΈΡΡΠ΅ΠΌΠ°. Π nsβ3 Π½ΡΠΌΠ° ΡΠ΅Π°Π»Π½Π° ΠΊΠΎΠ½ΡΠ΅ΠΏΡΠΈΡ Π·Π° ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΎΠ½Π½Π° ΡΠΈΡΡΠ΅ΠΌΠ° ΠΈ ΡΡΠΎΡΠ²Π΅ΡΠ½ΠΎ Π½ΡΠΌΠ° ΠΏΠΎΠ½ΡΡΠΈΡ Π·Π° Π½ΠΈΠ²Π° Π½Π° ΠΏΡΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΠΈ ΠΈΠ»ΠΈ ΡΠΈΡΡΠ΅ΠΌΠ½ΠΈ ΠΈΠ·Π²ΠΈΠΊΠ²Π°Π½ΠΈΡ. ΠΡΠΏΡΠ΅ΠΊΠΈ ΡΠΎΠ²Π°, ΠΈΠΌΠ°ΠΌΠ΅ ΠΊΠΎΠ½ΡΠ΅ΠΏΡΠΈΡΡΠ° Π·Π° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅. ΠΠ°ΠΊΡΠΎ Π² "ΡΠ΅Π°Π»Π½ΠΈΡ ΡΠ²ΡΡ", Π·Π° Π΄Π° ΠΈΠ·ΠΏΡΠ»Π½ΡΡ Π·Π°Π΄Π°ΡΠΈ, ΡΠΎΡΡΡΠ΅ΡΠ½ΠΈΡΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΡΠ°Π±ΠΎΡΡΡ Π½Π° ΠΊΠΎΠΌΠΏΡΡΡΠΈ, ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡΡΠ° Π½Π° nsβ3 ΡΠ°Π±ΠΎΡΡΡ Π½Π° Π²ΡΠ·Π»ΠΈ nsβ3 Π·Π° ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π½Π° ΡΠΈΠΌΡΠ»Π°ΡΠΈΠΈ Π² ΡΠΈΠΌΡΠ»ΠΈΡΠ°Π½ΠΈΡ ΡΠ²ΡΡ.
Π nsβ3 ΠΎΡΠ½ΠΎΠ²Π½Π°ΡΠ° Π°Π±ΡΡΡΠ°ΠΊΡΠΈΡ Π·Π° ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»ΡΠΊΠ° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠ°, ΠΊΠΎΡΡΠΎ Π³Π΅Π½Π΅ΡΠΈΡΠ° ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π° Π΄Π΅ΠΉΠ½ΠΎΡΡ Π·Π° ΠΌΠΎΠ΄Π΅Π»ΠΈΡΠ°Π½Π΅, Π΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΡΠΎ. Π’Π°Π·ΠΈ Π°Π±ΡΡΡΠ°ΠΊΡΠΈΡ Π΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π΅Π½Π° Π² C++ Ρ ΠΊΠ»Π°ΡΠ° Application (ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅). ΠΠ»Π°ΡΡΡ Application ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Ρ ΠΌΠ΅ΡΠΎΠ΄ΠΈ Π·Π° ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π² ΡΠΈΠΌΡΠ»Π°ΡΠΈΠΈ Π½Π° ΠΏΡΠ΅Π΄ΡΡΠ°Π²ΡΠ½ΠΈΡΡΠ° Π½Π° Π½Π°ΡΠ°ΡΠ° Π²Π΅ΡΡΠΈΡ Π½Π° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡΡΠ° Π½Π° Π½ΠΈΠ²ΠΎ ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π». ΠΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΡΠΈΡΠ΅ ΡΠ΅ ΠΎΡΠ°ΠΊΠ²Π°, ΡΠ΅ Π·Π° Π΄Π° ΡΡΠ·Π΄Π°Π΄Π°Ρ Π½ΠΎΠ²ΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, ΡΠ΅ ΡΠΏΠ΅ΡΠΈΡΠΈΡΠΈΡΠ°Ρ ΠΊΠ»Π°ΡΠ° Application Π² ΡΠΌΠΈΡΡΠ» Π½Π° ΠΎΠ±Π΅ΠΊΡΠ½ΠΎ-ΠΎΡΠΈΠ΅Π½ΡΠΈΡΠ°Π½ΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΈΡΠ°Π½Π΅. Π ΡΠΎΠ²Π° ΡΡΠΊΠΎΠ²ΠΎΠ΄ΡΡΠ²ΠΎ ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌΠ΅ ΡΠΏΠ΅ΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ Π½Π° ΠΊΠ»Π°ΡΠ° Application, Π½Π°ΡΠ΅ΡΠ΅Π½ΠΈ UdpEchoClientApplication ΠΈ UdpEchoServerApplication. ΠΠ°ΠΊΡΠΎ ΡΠ΅ ΠΎΡΠ°ΠΊΠ²Π°ΡΠ΅, ΡΠ΅Π·ΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΡΠΎΡΠΌΠΈΡΠ°Ρ Π½Π°Π±ΠΎΡ ΠΎΡ ΠΊΠ»ΠΈΠ΅Π½Ρ-ΡΡΡΠ²ΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½ΠΈ Π·Π° Π³Π΅Π½Π΅ΡΠΈΡΠ°Π½Π΅ ΠΈ Π΅Ρ ΠΎ-ΡΠΈΠΌΡΠ»Π°ΡΠΈΡ Π½Π° ΠΌΡΠ΅ΠΆΠΎΠ²ΠΈ ΠΏΠ°ΠΊΠ΅ΡΠΈ.
4.1.3 ΠΠ°Π½Π°Π» (Channel)
Π ΡΠ΅Π°Π»Π½ΠΈΡ ΡΠ²ΡΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΡΠ²ΡΡΠΆΠ΅ΡΠ΅ ΠΊΠΎΠΌΠΏΡΡΡΡ Π² ΠΌΡΠ΅ΠΆΠ°ΡΠ°. Π§Π΅ΡΡΠΎ ΡΡΠ΅Π΄ΠΈΡΠ΅, ΠΏΡΠ΅Π· ΠΊΠΎΠΈΡΠΎ ΡΠ΅ ΠΏΡΠ΅Π΄Π°Π²Π°Ρ Π΄Π°Π½Π½ΠΈ Π² ΡΠ΅Π·ΠΈ ΠΌΡΠ΅ΠΆΠΈ, ΡΠ΅ Π½Π°ΡΠΈΡΠ°Ρ ΠΊΠ°Π½Π°Π»ΠΈ. ΠΠΎΠ³Π°ΡΠΎ ΡΠ²ΡΡΠ·Π²Π°ΡΠ΅ Ethernet ΠΊΠ°Π±Π΅Π» ΠΊΡΠΌ ΠΊΠΎΠ½ΡΠ°ΠΊΡ Π½Π° ΡΡΠ΅Π½Π°ΡΠ°, Π²ΠΈΠ΅ ΡΠ²ΡΡΠ·Π²Π°ΡΠ΅ ΠΊΠΎΠΌΠΏΡΡΡΡΠ° Ρ Ethernet ΠΊΠΎΠΌΡΠ½ΠΈΠΊΠ°ΡΠΈΠΎΠ½Π΅Π½ ΠΊΠ°Π½Π°Π». Π ΡΠΈΠΌΡΠ»ΠΈΡΠ°Π½ΠΈΡ ΡΠ²ΡΡ Π½Π° ns-3, Π²ΡΠ·Π΅Π» ΡΠ΅ ΡΠ²ΡΡΠ·Π²Π° Ρ ΠΎΠ±Π΅ΠΊΡ, ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ²Π°Ρ ΠΊΠΎΠΌΡΠ½ΠΈΠΊΠ°ΡΠΈΠΎΠ½Π΅Π½ ΠΊΠ°Π½Π°Π». Π’ΡΠΊ ΠΎΡΠ½ΠΎΠ²Π½Π°ΡΠ° Π°Π±ΡΡΡΠ°ΠΊΡΠΈΡ Π½Π° ΠΊΠΎΠΌΡΠ½ΠΈΠΊΠ°ΡΠΈΠΎΠ½Π½Π°ΡΠ° ΠΏΠΎΠ΄ΠΌΡΠ΅ΠΆΠ° ΡΠ΅ Π½Π°ΡΠΈΡΠ° ΠΊΠ°Π½Π°Π» ΠΈ ΡΠ΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Ρ Π² C++ Ρ ΠΊΠ»Π°Ρ Channel (ΠΊΠ°Π½Π°Π»).
ΠΠ»Π°Ρ ChannelChannel ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Ρ ΠΌΠ΅ΡΠΎΠ΄ΠΈ Π·Π° ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π½Π° Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΠ΅ΡΠΎ ΠΌΠ΅ΠΆΠ΄Ρ ΠΎΠ±Π΅ΠΊΡΠΈΡΠ΅ Π² ΠΏΠΎΠ΄ΠΌΡΠ΅ΠΆΠ°ΡΠ° ΠΈ ΡΠ²ΡΡΠ·Π²Π°Π½Π΅ΡΠΎ ΠΈΠΌ Ρ Π²ΡΠ·Π»ΠΈ. ΠΠ°Π½Π°Π»ΠΈΡΠ΅ ΠΌΠΎΠ³Π°Ρ ΡΡΡΠΎ Π΄Π° Π±ΡΠ΄Π°Ρ ΡΠΏΠ΅ΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠ°Π½ΠΈ ΠΎΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΡΠΈΡΠ΅ Π² ΡΠΌΠΈΡΡΠ» Π½Π° ΠΎΠ±Π΅ΠΊΡΠ½ΠΎ-ΠΎΡΠΈΠ΅Π½ΡΠΈΡΠ°Π½ΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΈΡΠ°Π½Π΅. Π‘ΠΏΠ΅ΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡΡΠ° Π½Π° ΠΊΠ°Π½Π°Π»Π° ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΌΠΎΠ΄Π΅Π»ΠΈΡΠ° Π½Π΅ΡΠΎ ΠΏΡΠΎΡΡΠΎ ΠΊΠ°ΡΠΎ ΠΏΡΠΎΠ²ΠΎΠ΄Π½ΠΈΠΊ. Π‘ΠΏΠ΅ΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠ°Π½ΠΈΡΡ ΠΊΠ°Π½Π°Π» ΠΌΠΎΠΆΠ΅ ΡΡΡΠΎ Π΄Π° ΠΌΠΎΠ΄Π΅Π»ΠΈΡΠ° ΡΠ»ΠΎΠΆΠ½ΠΈ Π½Π΅ΡΠ° ΠΊΠ°ΡΠΎ Π³ΠΎΠ»ΡΠΌ Ethernet ΠΊΠΎΠΌΡΡΠ°ΡΠΎΡ ΠΈΠ»ΠΈ ΡΡΠΈΠΈΠ·ΠΌΠ΅ΡΠ½ΠΎ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²ΠΎ, ΠΏΡΠ»Π½ΠΎ Ρ ΠΏΡΠ΅ΠΏΡΡΡΡΠ²ΠΈΡ Π² ΡΠ»ΡΡΠ°ΠΉ Π½Π° Π±Π΅Π·ΠΆΠΈΡΠ½ΠΈ ΠΌΡΠ΅ΠΆΠΈ.
Π ΡΠΎΠ²Π° ΡΡΠΊΠΎΠ²ΠΎΠ΄ΡΡΠ²ΠΎ ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌΠ΅ ΡΠΏΠ΅ΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠ°Π½ΠΈ Π²Π΅ΡΡΠΈΠΈ Π½Π° ΠΊΠ°Π½Π°Π»Π°, Π½Π°ΡΠ΅ΡΠ΅Π½ΠΈ CsmaChannelCsmaChannel, PointToPointChannelPointToPointChannel ΠΈ WifiChannelWifiChannel. CsmaChannel, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΌΠΎΠ΄Π΅Π»ΠΈΡΠ° Π²Π΅ΡΡΠΈΡ Π½Π° ΠΊΠΎΠΌΡΠ½ΠΈΠΊΠ°ΡΠΈΠΎΠ½Π½Π°ΡΠ° ΠΏΠΎΠ΄ΠΌΡΠ΅ΠΆΠ°, ΠΊΠΎΡΡΠΎ ΡΠ΅Π°Π»ΠΈΠ·ΠΈΡΠ° ΠΊΠΎΠΌΡΠ½ΠΈΠΊΠ°ΡΠΈΠΎΠ½Π½Π° ΡΡΠ΅Π΄Π° Ρ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ Π΄ΠΎΡΡΡΠΏΠΈ Ρ ΠΊΠΎΠ½ΡΡΠΎΠ» Π½Π° Π½ΠΎΡΠΈΡΠ΅Π»Ρ. Π’ΠΎΠ²Π° Π½ΠΈ Π΄Π°Π²Π° ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»Π½ΠΎΡΡ, ΠΏΠΎΠ΄ΠΎΠ±Π½Π° Π½Π° Ethernet.
4.1.4 ΠΡΠ΅ΠΆΠΎΠ²ΠΎ ΡΡΡΡΠΎΠΉΡΡΠ²ΠΎ (Net Device)
ΠΠΎ-ΡΠ°Π½ΠΎ, ΠΊΠΎΠ³Π°ΡΠΎ ΠΈΡΠΊΠ°ΡΠ΅ Π΄Π° ΡΠ²ΡΡΠΆΠ΅ΡΠ΅ ΠΊΠΎΠΌΠΏΡΡΡΡ Π² ΠΌΡΠ΅ΠΆΠ°ΡΠ°, ΡΡΡΠ±Π²Π°ΡΠ΅ Π΄Π° Π·Π°ΠΊΡΠΏΠΈΡΠ΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ ΠΌΡΠ΅ΠΆΠΎΠ² ΠΊΠ°Π±Π΅Π» ΠΈ Ρ Π°ΡΠ΄ΡΠ΅ΡΠ½ΠΎ ΡΡΡΡΠΎΠΉΡΡΠ²ΠΎ, Π½Π°ΡΠ΅ΡΠ΅Π½ΠΎ (Π² ΡΠ΅ΡΠΌΠΈΠ½ΠΎΠ»ΠΎΠ³ΠΈΡΡΠ° Π½Π° ΠΠ) ΠΏΠ΅ΡΠΈΡΠ΅ΡΠ½Π° ΠΏΠ»Π°ΡΠΊΠ°, ΠΊΠΎΡΡΠΎ ΡΡΡΠ±Π²Π°ΡΠ΅ Π΄Π° ΡΠ΅ ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ° Π² ΠΊΠΎΠΌΠΏΡΡΡΡΠ°. ΠΠΊΠΎ Π½Π° ΠΏΠ΅ΡΠΈΡΠ΅ΡΠ½Π°ΡΠ° ΠΏΠ»Π°ΡΠΊΠ° ΡΠ° ΡΠ΅Π°Π»ΠΈΠ·ΠΈΡΠ°Π½ΠΈ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈ ΠΌΡΠ΅ΠΆΠΎΠ²ΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ, ΡΠ΅ ΡΠ΅ Π½Π°ΡΠΈΡΠ°Ρ Π° ΠΌΡΠ΅ΠΆΠΎΠ²ΠΈ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ½ΠΈ ΠΏΠ»Π°ΡΠΊΠΈ ΠΈΠ»ΠΈ ΠΌΡΠ΅ΠΆΠΎΠ²ΠΈ ΠΊΠ°ΡΡΠΈ. ΠΠ½Π΅Ρ ΠΏΠΎΠ²Π΅ΡΠ΅ΡΠΎ ΠΊΠΎΠΌΠΏΡΡΡΠΈ ΡΠ΅ ΠΏΡΠ΅Π΄Π»Π°Π³Π°Ρ Ρ Π²Π³ΡΠ°Π΄Π΅Π½ΠΈ ΠΌΡΠ΅ΠΆΠΎΠ²ΠΈ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ½ΠΈ ΡΡΡΡΠΎΠΉΡΡΠ²Π°, ΠΈ ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»ΠΈΡΠ΅ Π½Π΅ Π³ΠΈ Π²ΡΠ·ΠΏΡΠΈΠ΅ΠΌΠ°Ρ ΠΊΠ°ΡΠΎ ΠΎΡΠ΄Π΅Π»Π½ΠΈ ΡΡΡΡΠΎΠΉΡΡΠ²Π°.
ΠΡΠ΅ΠΆΠΎΠ²Π°ΡΠ° ΠΊΠ°ΡΡΠ° Π½ΡΠΌΠ° Π΄Π° ΡΠ°Π±ΠΎΡΠΈ Π±Π΅Π· ΡΠΎΡΡΡΠ΅ΡΠ΅Π½ Π΄ΡΠ°ΠΉΠ²Π΅Ρ, ΠΊΠΎΠΉΡΠΎ ΡΠΏΡΠ°Π²Π»ΡΠ²Π° Π½Π΅ΠΉΠ½ΠΎΡΠΎ ΠΎΠ±ΠΎΡΡΠ΄Π²Π°Π½Π΅. Π Unix (ΠΈΠ»ΠΈ Linux), ΡΠ°ΡΡ ΠΎΡ ΠΏΠ΅ΡΠΈΡΠ΅ΡΠ½ΠΎΡΠΎ ΠΎΠ±ΠΎΡΡΠ΄Π²Π°Π½Π΅ ΡΠ΅ ΠΊΠ»Π°ΡΠΈΡΠΈΡΠΈΡΠ° ΠΊΠ°ΡΠΎ ΡΡΡΡΠΎΠΉΡΡΠ²ΠΎ. Π£ΡΡΡΠΎΠΉΡΡΠ²Π°ΡΠ° ΡΠ΅ ΡΠΏΡΠ°Π²Π»ΡΠ²Π°Ρ Ρ ΠΏΠΎΠΌΠΎΡΡΠ° Π½Π° Π΄ΡΠ°ΠΉΠ²Π΅ΡΠΈ Π½Π° ΡΡΡΡΠΎΠΉΡΡΠ²Π°, Π° ΠΌΡΠ΅ΠΆΠΎΠ²ΠΈΡΠ΅ ΡΡΡΡΠΎΠΉΡΡΠ²Π° (NIC) ΡΠ΅ ΡΠΏΡΠ°Π²Π»ΡΠ²Π°Ρ Ρ Π΄ΡΠ°ΠΉΠ²Π΅ΡΠΈ Π·Π° ΠΌΡΠ΅ΠΆΠΎΠ²ΠΈ ΡΡΡΡΠΎΠΉΡΡΠ²Π° (network device drivers) ΠΈ ΠΈΠΌΠ°Ρ ΠΎΠ±ΠΎΠ±ΡΠ΅Π½ΠΎ Π½Π°ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΌΡΠ΅ΠΆΠΎΠ²ΠΈ ΡΡΡΡΠΎΠΉΡΡΠ²Π° (net devices). Π Unix ΠΈ Linux ΡΠ΅ ΡΠ²ΡΡΠ·Π²Π°ΡΠ΅ Ρ ΠΌΡΠ΅ΠΆΠΎΠ²ΠΈΡΠ΅ ΡΡΡΡΠΎΠΉΡΡΠ²Π° ΡΡΠ΅Π· ΠΈΠΌΠ΅Π½Π°ΡΠ° ΠΈΠΌ, ΠΊΠ°ΡΠΎ Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ eth0.
Π ns-3 Π°Π±ΡΡΡΠ°ΠΊΡΠΈΡΡΠ° Π½Π° ΠΌΡΠ΅ΠΆΠΎΠ²ΠΎΡΠΎ ΡΡΡΡΠΎΠΉΡΡΠ²ΠΎ ΠΎΠ±Ρ Π²Π°ΡΠ° ΠΊΠ°ΠΊΡΠΎ ΡΠΎΡΡΡΠ΅ΡΠ½ΠΈΡ Π΄ΡΠ°ΠΉΠ²Π΅Ρ, ΡΠ°ΠΊΠ° ΠΈ ΠΌΠΎΠ΄Π΅Π»ΠΈΡΠ°Π½ΠΎΡΠΎ ΠΎΠ±ΠΎΡΡΠ΄Π²Π°Π½Π΅. ΠΡΠΈ ΡΠΈΠΌΡΠ»Π°ΡΠΈΡ ΠΌΡΠ΅ΠΆΠΎΠ²ΠΎΡΠΎ ΡΡΡΡΠΎΠΉΡΡΠ²ΠΎ ΡΠ΅ "ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ°" Π² Π²ΡΠ·Π΅Π», Π·Π° Π΄Π° ΠΌΡ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈ Π΄Π° ΠΊΠΎΠΌΡΠ½ΠΈΠΊΠΈΡΠ° Ρ Π΄ΡΡΠ³ΠΈ Π²ΡΠ·Π»ΠΈ ΡΡΠ΅Π· ΠΊΠ°Π½Π°Π»ΠΈ. ΠΠ°ΠΊΡΠΎ ΠΏΡΠΈ ΠΈΡΡΠΈΠ½ΡΠΊΠΈ ΠΊΠΎΠΌΠΏΡΡΡΡ, Π²ΡΠ·Π΅Π»ΡΡ ΠΌΠΎΠΆΠ΅ Π΄Π° Π±ΡΠ΄Π΅ ΡΠ²ΡΡΠ·Π°Π½ ΠΊΡΠΌ Π½ΡΠΊΠΎΠ»ΠΊΠΎ ΠΊΠ°Π½Π°Π»Π° ΡΡΠ΅Π· ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ ΡΡΡΡΠΎΠΉΡΡΠ²Π°. NetDevices.
ΠΡΠ΅ΠΆΠΎΠ²Π°ΡΠ° Π°Π±ΡΡΡΠ°ΠΊΡΠΈΡ Π½Π° ΡΡΡΡΠΎΠΉΡΡΠ²ΠΎΡΠΎ Π΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π΅Π½Π° Π² C++ ΡΡΠ΅Π· ΠΊΠ»Π°ΡΠ° NetDevice. ΠΠ»Π°ΡΡΡ NetDevice ΠΎΡΠΈΠ³ΡΡΡΠ²Π° ΠΌΠ΅ΡΠΎΠ΄ΠΈ Π·Π° ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π½Π° Π²ΡΡΠ·ΠΊΠΈΡΠ΅ Ρ ΠΎΠ±Π΅ΠΊΡΠΈΡΠ΅ Node ΠΈ Channel; ΠΈ ΠΌΠΎΠΆΠ΅ Π΄Π° Π±ΡΠ΄Π΅ ΡΠΏΠ΅ΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠ°Π½ ΠΎΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΡΠΈΡΠ΅ Π² ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ° Π½Π° ΠΎΠ±Π΅ΠΊΡΠ½ΠΎ-ΠΎΡΠΈΠ΅Π½ΡΠΈΡΠ°Π½ΠΎΡΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΈΡΠ°Π½Π΅. Π ΡΠΎΠ²Π° ΡΡΠΊΠΎΠ²ΠΎΠ΄ΡΡΠ²ΠΎ ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌΠ΅ Π½ΡΠΊΠΎΠ»ΠΊΠΎ ΡΠΏΠ΅ΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠ°Π½ΠΈ Π²Π΅ΡΡΠΈΠΈ Π½Π° NetDevice Ρ ΠΈΠΌΠ΅Π½Π°ΡΠ° CsmaNetDevice, PointToPointNetDevice ΠΈ WifiNetDevice. ΠΠΎΠ΄ΠΎΠ±Π½ΠΎ Π½Π° ΠΌΡΠ΅ΠΆΠΎΠ²ΠΈΡ Π°Π΄Π°ΠΏΡΠ΅Ρ Ethernet, ΠΊΠΎΠΉΡΠΎ Π΅ ΠΏΡΠ΅Π΄Π½Π°Π·Π½Π°ΡΠ΅Π½ Π·Π° ΡΠ°Π±ΠΎΡΠ° Ρ ΠΌΡΠ΅ΠΆΠ°, Ethernet, CsmaNetDevice Π΅ ΠΏΡΠ΅Π΄Π½Π°Π·Π½Π°ΡΠ΅Π½ Π·Π° ΡΠ°Π±ΠΎΡΠ° Ρ CsmaChannel, PointToPointNetDevice Π΅ ΠΏΡΠ΅Π΄Π½Π°Π·Π½Π°ΡΠ΅Π½ Π·Π° ΡΠ°Π±ΠΎΡΠ° Ρ PointToPointChannel, Π° WifiNetDevice β ΠΏΡΠ΅Π΄Π½Π°Π·Π½Π°ΡΠ΅Π½ Π·Π° ΡΠ°Π±ΠΎΡΠ° Ρ WifiChannel.
4.1.5 Π’ΠΎΠΏΠΎΠ»ΠΎΠ³ΠΈΡΠ½ΠΈ ΠΏΠΎΠΌΠΎΡΠ½ΠΈΡΠΈ
Π ΡΠ΅Π°Π»Π½Π° ΠΌΡΠ΅ΠΆΠ° ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° Π½Π°ΠΌΠ΅ΡΠΈΡΠ΅ Ρ ΠΎΡΡ-ΠΊΠΎΠΌΠΏΡΡΡΠΈ Ρ Π΄ΠΎΠ±Π°Π²Π΅Π½ΠΈ (ΠΈΠ»ΠΈ Π²Π³ΡΠ°Π΄Π΅Π½ΠΈ) ΠΌΡΠ΅ΠΆΠΎΠ²ΠΈ ΠΊΠ°ΡΡΠΈ. Π ns-3 Π±ΠΈΡ ΠΌΠ΅ ΠΊΠ°Π·Π°Π»ΠΈ, ΡΠ΅ ΡΠ΅ Π²ΠΈΠ΄ΠΈΡΠ΅ Π²ΡΠ·Π»ΠΈ Ρ ΠΏΡΠΈΠΊΡΠ΅ΠΏΠ΅Π½ΠΈ NetDevices. Π Π³ΠΎΠ»ΡΠΌΠ° ΠΌΠΎΠ΄Π΅Π»ΠΈΡΠ°Π½Π° ΠΌΡΠ΅ΠΆΠ° ΡΠ΅ ΡΡΡΠ±Π²Π° Π΄Π° ΠΎΡΠ³Π°Π½ΠΈΠ·ΠΈΡΠ°ΡΠ΅ Π²ΡΡΠ·ΠΊΠΈ ΠΌΠ΅ΠΆΠ΄Ρ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ ΠΎΠ±Π΅ΠΊΡΠΈ. Π£Π·Π΅Π», NetDevice ΠΈ Channel.
Π’ΡΠΉ ΠΊΠ°ΡΠΎ ΡΠ²ΡΡΠ·Π²Π°Π½Π΅ΡΠΎ Π½Π° NetDevices ΠΊΡΠΌ Π²ΡΠ·Π»ΠΈ, NetDevices ΠΊΡΠΌ ΠΊΠ°Π½Π°Π»ΠΈ, Π·Π°Π΄Π°Π²Π°Π½Π΅ Π½Π° IP Π°Π΄ΡΠ΅ΡΠΈ ΠΈ Ρ.Π½. Π² ns-3 ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ²Π° ΠΎΠ±ΡΠ° Π·Π°Π΄Π°ΡΠ°, Π·Π° Π΄Π° ΡΠ΅ Π½Π°ΠΏΡΠ°Π²ΠΈ ΡΠΎΠ²Π° ΠΊΠΎΠ»ΠΊΠΎΡΠΎ ΡΠ΅ ΠΌΠΎΠΆΠ΅ ΠΏΠΎ-Π»Π΅ΡΠ½ΠΎ, ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²ΡΠΌΠ΅ ΡΠ°ΠΊΠ° Π½Π°ΡΠ΅ΡΠ΅Π½ΠΈΡΠ΅ ΡΠΎΠΏΠΎΠ»ΠΎΠ³ΠΈΡΠ½ΠΈ ΠΏΠΎΠΌΠΎΡΠ½ΠΈΡΠΈ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π·Π° Π΄Π° ΡΡΠ·Π΄Π°Π΄Π΅ΡΠ΅ NetDevice, Π΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ Π΄Π° ΠΈΠ·Π²ΡΡΡΠΈΡΠ΅ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²Π° ΠΎΡΠ½ΠΎΠ²Π½ΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ Π½Π° ns-3, Π΄Π° Π΄ΠΎΠ±Π°Π²ΠΈΡΠ΅ MAC Π°Π΄ΡΠ΅Ρ, Π΄Π° ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ°ΡΠ΅ ΡΠΎΠ²Π° ΠΌΡΠ΅ΠΆΠΎΠ²ΠΎ ΡΡΡΡΠΎΠΉΡΡΠ²ΠΎ Π² Node, Π΄Π° ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠΈΡΠ°ΡΠ΅ ΡΡΠ΅ΠΊ ΠΏΡΠΎΡΠΎΠΊΠΎΠ»ΠΈ Π½Π° Π²ΡΠ·Π΅Π»Π° ΠΈ ΡΠ»Π΅Π΄ ΡΠΎΠ²Π° Π΄Π° ΡΠ²ΡΡΠΆΠ΅ΡΠ΅ NetDevice Ρ Channel. ΠΡΠ΅ ΠΏΠΎΠ²Π΅ΡΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ ΡΠ΅ Π±ΡΠ΄Π°Ρ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΈ, Π·Π° Π΄Π° ΡΠ²ΡΡΠΆΠ΅ΡΠ΅ Π½ΡΠΊΠΎΠ»ΠΊΠΎ ΡΡΡΡΠΎΠΉΡΡΠ²Π° ΠΊΡΠΌ ΠΌΠ½ΠΎΠ³ΠΎΡΠΎΡΠΊΠΎΠ²ΠΈ ΠΊΠ°Π½Π°Π»ΠΈ ΠΈ ΡΠ»Π΅Π΄ ΡΠΎΠ²Π° Π΄Π° ΡΠ²ΡΡΠΆΠ΅ΡΠ΅ ΠΎΡΠ΄Π΅Π»Π½ΠΈ ΠΌΡΠ΅ΠΆΠΈ Π² ΠΎΠ±Π΅Π΄ΠΈΠ½Π΅Π½Π° ΠΌΡΠ΅ΠΆΠ° (Internetworks). ΠΡΠ΅Π΄ΠΎΡΡΠ°Π²ΡΠΌΠ΅ ΠΏΠΎΠΌΠΎΡΠ½ΠΈ ΠΎΠ±Π΅ΠΊΡΠΈ Π·Π° ΡΠΎΠΏΠΎΠ»ΠΎΠ³ΠΈΡ, ΠΊΠΎΠΈΡΠΎ Π·Π° Π²Π°ΡΠ΅ ΡΠ΄ΠΎΠ±ΡΡΠ²ΠΎ ΠΎΠ±Π΅Π΄ΠΈΠ½ΡΠ²Π°Ρ ΡΠ΅Π·ΠΈ ΠΌΠ½ΠΎΠ³ΠΎΡΠΈΡΠ»Π΅Π½ΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ Π² ΠΏΡΠΎΡΡΠ° Π·Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ ΠΌΠΎΠ΄Π΅Π».
4.2 ΠΡΡΠ²ΠΈ ΡΠΊΡΠΈΠΏΡ ns-3
ΠΠΊΠΎ ΡΡΠ΅ ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ°Π»ΠΈ ΡΠΈΡΡΠ΅ΠΌΠ°ΡΠ°, ΠΊΠ°ΠΊΡΠΎ Π±Π΅ΡΠ΅ ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΎ ΠΏΠΎ-Π³ΠΎΡΠ΅, ΡΠ΅ ΠΈΠΌΠ°ΡΠ΅ Π²Π΅ΡΡΠΈΡ ns-3 Π² Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡ Ρ ΠΈΠΌΠ΅ repos Π² Π΄ΠΎΠΌΠ°ΡΠ½Π°ΡΠ° Π²ΠΈ Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡ. ΠΡΠΈΠ΄Π΅ΡΠ΅ Π² Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡΡΠ°. release
ΠΠΊΠΎ Π½ΡΠΌΠ°ΡΠ΅ ΡΠ°ΠΊΠ°Π²Π° Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡ, Π·Π½Π°ΡΠΈΡ ΠΏΡΠΈ ΠΊΠΎΠΌΠΏΠΈΠ»Π°ΡΠΈΡ Π½Π° ΡΠ΅Π»ΠΈΠ·Π½Π°ΡΠ° Π²Π΅ΡΡΠΈΡ Π½Π° nsβ3 Π½Π΅ ΡΡΠ΅ ΡΠΊΠ°Π·Π°Π»ΠΈ ΠΈΠ·Ρ ΠΎΠ΄Π½Π°ΡΠ° Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡ, ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠ°ΠΉΡΠ΅ ΡΠ°ΠΊΠ°:
$ ./waf configure βbuild-profile=release βout=build/release,
$ ./waf build
ΡΠ°ΠΌ ΡΡΡΠ±Π²Π° Π΄Π° Π²ΠΈΠ΄ΠΈΡΠ΅ ΡΡΡΡΠΊΡΡΡΠ° Π½Π° Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡ, ΠΏΠΎΠ΄ΠΎΠ±Π½Π° Π½Π° ΡΠ»Π΅Π΄Π½Π°ΡΠ°:
AUTHORS examples scratch utils waf.bat*
bindings LICENSE src utils.py waf-tools
build ns3 test.py* utils.pyc wscript
CHANGES.html README testpy-output VERSION wutils.py
doc RELEASE_NOTES testpy.supp waf* wutils.pycΠΡΠ΅ΠΌΠΈΠ½Π΅ΡΠ΅ Π² Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡΡΠ° examples/tutorial. Π’ΡΡΠ±Π²Π° Π΄Π° Π²ΠΈΠ΄ΠΈΡΠ΅ ΡΠ°ΠΉΠ» Ρ ΠΈΠΌΠ΅ first.cc. Π’ΠΎΠ²Π° Π΅ ΡΠΊΡΠΈΠΏΡ, ΠΊΠΎΠΉΡΠΎ ΡΠ΅ ΡΡΠ·Π΄Π°Π΄Π΅ ΠΏΡΠΎΡΡo ΡΠΎΡΠΊΠ°-ΡΠΎΡΠΊΠ° ΡΠ²ΡΡΠ·Π²Π°Π½Π΅ ΠΌΠ΅ΠΆΠ΄Ρ Π΄Π²Π° Π²ΡΠ·Π΅Π»Π° ΠΈ ΡΠ΅ ΠΏΡΠ΅Ρ Π²ΡΡΠ»ΠΈ Π΅Π΄ΠΈΠ½ ΠΏΠ°ΠΊΠ΅Ρ ΠΌΠ΅ΠΆΠ΄Ρ ΡΡΡ . ΠΠ΅ΠΊΠ° ΡΠ°Π·Π³Π»Π΅Π΄Π°ΠΌΠ΅ ΡΠΎΠ·ΠΈ ΡΠΊΡΠΈΠΏΡ ΡΠ΅Π΄ ΠΏΠΎ ΡΠ΅Π΄, Π·Π° ΡΠ΅Π»ΡΠ° ΠΎΡΠ²ΠΎΡΠ΅ΡΠ΅ first.cc Π² Π»ΡΠ±ΠΈΠΌΠΈΡ ΡΠΈ ΡΠ΅Π΄Π°ΠΊΡΠΎΡ.
4.2.1 ΠΡΠ½ΠΎΠ²Π΅Π½ ΠΊΠΎΠ΄
ΠΡΡΠ²ΠΈΡΡ ΡΠ΅Π΄ Π²ΡΠ² ΡΠ°ΠΉΠ»Π° Π΅ ΡΠ΅Π΄ Π½Π° ΡΠ΅ΠΆΠΈΠΌ Π½Π° ΡΠ΅Π΄Π°ΠΊΡΠΎΡΠ° emacs. Π’ΠΎΠΉ ΠΊΠ°Π·Π²Π° Π½Π° emacs ΠΎΡΠ½ΠΎΡΠ½ΠΎ ΡΠΎΡΠΌΠ°ΡΠΈΡΠ΅ Π½Π° ΠΊΠΎΠ΄ΠΈΡΠ°Π½Π΅ΡΠΎ, ΠΊΠΎΠΈΡΠΎ ΡΡΡΠ±Π²Π° Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌΠ΅ Π² Π½Π°ΡΠΈΡ ΠΈΠ·Ρ
ΠΎΠ΄Π΅Π½ ΠΊΠΎΠ΄.
/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */Π’ΠΎΠ²Π° Π΅ Π²ΠΈΠ½Π°Π³ΠΈ Π΄ΠΎΡΡΠ° ΡΠΏΠΎΡΠ΅Π½ Π²ΡΠΏΡΠΎΡ, Π·Π°ΡΠΎΠ²Π° ΡΡΡΠ±Π²Π° Π΄Π° Π²Π½Π΅ΡΠ΅ΠΌ ΡΡΠ½ΠΎΡΠ°, Π·Π° Π΄Π° Π³ΠΎ ΠΏΡΠ΅ΠΌΠ°Ρ Π½Π΅ΠΌ ΠΎΡ ΠΏΡΡΡ. ΠΡΠΎΠ΅ΠΊΡΡΡ nsβ3, ΠΊΠ°ΠΊΡΠΎ ΠΈ ΠΏΠΎΠ²Π΅ΡΠ΅ΡΠΎ Π³ΠΎΠ»Π΅ΠΌΠΈ ΠΏΡΠΎΠ΅ΠΊΡΠΈ, Π΅ ΠΏΡΠΈΠ΅Π» ΡΡΠΈΠ» Π½Π° ΠΊΠΎΠ΄ΠΈΡΠ°Π½Π΅, Ρ ΠΊΠΎΠΉΡΠΎ ΡΡΡΠ±Π²Π° Π΄Π° ΠΎΡΠ³ΠΎΠ²Π°ΡΡ ΡΠ΅Π»ΠΈΡΡ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π΅Π½ ΠΊΠΎΠ΄. ΠΠΊΠΎ ΠΈΡΠΊΠ°ΡΠ΅ Π΄Π° Π²Π½Π΅ΡΠ΅ΡΠ΅ ΡΠ²ΠΎΡ ΠΊΠΎΠ΄ Π² ΠΏΡΠΎΠ΅ΠΊΡΠ°, Π² ΠΊΡΠ°ΠΉΠ½Π° ΡΠΌΠ΅ΡΠΊΠ° ΡΠ΅ ΡΡΡΠ±Π²Π° Π΄Π° ΠΎΡΠ³ΠΎΠ²Π°ΡΡΡΠ΅ Π½Π° ΡΡΠ°Π½Π΄Π°ΡΡΠ° Π·Π° ΠΊΠΎΠ΄ΠΈΡΠ°Π½Π΅ Π½Π° nsβ3, ΠΊΠ°ΠΊΡΠΎ Π΅ ΠΎΠΏΠΈΡΠ°Π½ΠΎ Π² ΡΠ°ΠΉΠ»Π° doc/codingstd.txt ΠΈΠ»ΠΈ ΠΏΠΎΠΊΠ°Π·Π°Π½ Π½Π° ΡΠ΅Π± ΡΡΡΠ°Π½ΠΈΡΠ°ΡΠ° Π½Π° ΠΏΡΠΎΠ΅ΠΊΡΠ°: .
ΠΡΠ΅ΠΏΠΎΡΡΡΠ²Π°ΠΌΠ΅ Π²ΠΈ Π΄Π° ΡΠ²ΠΈΠΊΠ½Π΅ΡΠ΅ Ρ Π²ΠΈΠ΄Π° Π½Π° ΠΊΠΎΠ΄Π° Π½Π° nsβ3 ΠΈ Π΄Π° ΠΏΡΠΈΠ»Π°Π³Π°ΡΠ΅ ΡΠΎΠ·ΠΈ ΡΡΠ°Π½Π΄Π°ΡΡ Π²ΡΠ΅ΠΊΠΈ ΠΏΡΡ, ΠΊΠΎΠ³Π°ΡΠΎ ΡΠ°Π±ΠΎΡΠΈΡΠ΅ Ρ Π½Π°ΡΠΈΡ ΠΊΠΎΠ΄. Π¦Π΅Π»ΠΈΡΡ Π΅ΠΊΠΈΠΏ ΠΎΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΡΠΈ ΠΈ ΡΡΡΡΡΠ΄Π½ΠΈΡΠΈ ΡΠ΅ ΡΡΠ³Π»Π°ΡΠΈ Ρ ΡΠΎΠ²Π° ΡΠ»Π΅Π΄ ΠΈΠ·Π²Π΅ΡΡΠ½ΠΎ Π½Π΅Π΄ΠΎΠ²ΠΎΠ»ΡΡΠ²ΠΎ. Π Π΅Π΄ΡΡ Π½Π° ΡΠ΅ΠΆΠΈΠΌΠ° emacs, ΠΏΠΎΡΠΎΡΠ΅Π½ ΠΏΠΎ-Π³ΠΎΡΠ΅, ΠΎΠΏΡΠΎΡΡΡΠ²Π° ΠΏΡΠ°Π²ΠΈΠ»Π½ΠΎΡΠΎ ΡΠΎΡΠΌΠ°ΡΠΈΡΠ°Π½Π΅, Π°ΠΊΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΡΠ΅ ΡΠ΅Π΄Π°ΠΊΡΠΎΡΠ° emacs.
Π‘ΠΈΠΌΡΠ»Π°ΡΠΎΡΡΡ nsβ3 ΡΠ΅ Π»ΠΈΡΠ΅Π½Π·ΠΈΡΠ° Ρ ΠΏΠΎΠΌΠΎΡΡΠ° Π½Π° GNU General Public License. Π©Π΅ Π²ΠΈΠ΄ΠΈΡΠ΅ ΡΡΠΎΡΠ²Π΅ΡΠ½ΠΈΡ ΡΡΠΈΠ΄ΠΈΡΠ΅ΡΠΊΠΈ Π·Π°Π³Π»Π°Π²ΠΈΠ΅ Π½Π° GNU Π²ΡΠ² Π²ΡΠ΅ΠΊΠΈ ΡΠ°ΠΉΠ» ΠΎΡ Π΄ΠΈΡΡΡΠΈΠ±ΡΡΠΈΡΡΠ° Π½Π° nsβ3. Π§Π΅ΡΡΠΎ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° Π²ΠΈΠ΄ΠΈΡΠ΅ ΠΈΠ·Π²Π΅ΡΡΠΈΠ΅ Π·Π° Π°Π²ΡΠΎΡΡΠΊΠΈ ΠΏΡΠ°Π²Π° Π·Π° Π΅Π΄Π½ΠΎ ΠΎΡ ΡΡΠ°ΡΡΠ²Π°ΡΠΈΡΠ΅ ΡΡΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΡ Π² ΠΏΡΠΎΠ΅ΠΊΡΠ° nsβ3 Π½Π°Π΄ ΡΠ΅ΠΊΡΡΠ° Π½Π° GPL ΠΈ Π°Π²ΡΠΎΡΠ°, ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ ΠΏΠΎ-Π΄ΠΎΠ»Ρ.
/*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2 as
* published by the Free Software Foundation;
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/4.2.2 ΠΠΊΠ»ΡΡΠ²Π°Π΅ΠΌΠΈ ΠΌΠΎΠ΄ΡΠ»ΠΈ
Π‘ΠΎΠ±ΡΡΠ²Π΅Π½ΠΈΡΡ ΠΊΠΎΠ΄ Π·Π°ΠΏΠΎΡΠ²Π° Ρ ΡΠ΅Π΄ΠΈΡΠ° ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠΈ Π·Π° Π²ΠΊΠ»ΡΡΠ²Π°Π½Π΅ (include).
#include "ns3/core-module.h"
#include "ns3/network-module.h"
#include "ns3/internet-module.h"
#include "ns3/point-to-point-module.h"
#include "ns3/applications-module.h"ΠΠ° Π΄Π° ΠΏΠΎΠΌΠΎΠ³Π½Π΅ΠΌ Π½Π° Π½Π°ΡΠΈΡΠ΅ ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»ΠΈ Π½Π° Π²ΠΈΡΠΎΠΊΠΎΠ½Π°Π΄Π΅ΠΆΠ΄Π½ΠΈ ΡΡΠ΅Π½Π°ΡΠΈΠΈ Π΄Π° ΡΠ΅ ΡΠΏΡΠ°Π²ΡΡ Ρ Π³ΠΎΠ»ΡΠΌΠΎΡΠΎ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ Π·Π°Π³Π»Π°Π²Π½ΠΈ ΡΠ°ΠΉΠ»ΠΎΠ²Π΅, ΠΏΡΠΈΡΡΡΡΠ²Π°ΡΠΈ Π² ΡΠΈΡΡΠ΅ΠΌΠ°ΡΠ°, Π½ΠΈΠ΅ Π³ΠΈ Π³ΡΡΠΏΠΈΡΠ°ΠΌΠ΅ Π² Π³ΠΎΠ»Π΅ΠΌΠΈ ΠΌΠΎΠ΄ΡΠ»ΠΈ ΡΠΏΠΎΡΠ΅Π΄ ΡΡΡ Π½Π°ΡΠ° ΡΠΏΠΎΡΡΠ΅Π±Π°. ΠΡΠ΅Π΄ΠΎΡΡΠ°Π²ΡΠΌΠ΅ Π΅Π΄ΠΈΠ½ Π·Π°Π³Π»Π°Π²Π΅Π½ ΡΠ°ΠΉΠ», ΠΊΠΎΠΉΡΠΎ ΡΠ΅ Π·Π°ΡΠ΅ΠΆΠ΄Π° ΡΠ΅ΠΊΡΡΡΠΈΠ²Π½ΠΎ Π²ΡΠΈΡΠΊΠΈ Π·Π°Π³Π»Π°Π²Π½ΠΈ ΡΠ°ΠΉΠ»ΠΎΠ²Π΅, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½ΠΈ Π² Π΄Π°Π΄Π΅Π½ΠΈΡ ΠΌΠΎΠ΄ΡΠ». ΠΠΌΠ΅ΡΡΠΎ Π΄Π° ΡΡΡΡΠΈΡΠ΅ ΠΊΠΎΡ Π·Π°Π³Π»Π°Π²ΠΊΠ° Π²ΠΈ Π΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠ° ΠΈ Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎ Π΄Π° ΠΏΠΎΠ»ΡΡΠΈΡΠ΅ ΠΏΡΠ°Π²ΠΈΠ»Π΅Π½ ΡΠΏΠΈΡΡΠΊ Ρ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ, Π²ΠΈ Π΄Π°Π²Π°ΠΌΠ΅ Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ Π΄Π° Π·Π°ΡΠ΅ΠΆΠ΄Π°ΡΠ΅ Π³ΡΡΠΏΠ° ΡΠ°ΠΉΠ»ΠΎΠ²Π΅ Ρ Π²ΠΈΡΠΎΠΊΠ° ΡΡΠ΅ΠΏΠ΅Π½ Π½Π° Π΄Π΅ΡΠ°ΠΉΠ»Π½ΠΎΡΡ. Π’ΠΎΠ²Π° Π½Π΅ Π΅ Π½Π°ΠΉ-Π΅ΡΠ΅ΠΊΡΠΈΠ²Π½ΠΈΡΡ ΠΏΠΎΠ΄Ρ ΠΎΠ΄, Π½ΠΎ ΡΡΡ ΡΠΈΠ³ΡΡΠ½ΠΎΡΡ ΠΏΡΠ°Π²ΠΈ Π½Π°ΠΏΠΈΡΠ²Π°Π½Π΅ΡΠΎ Π½Π° ΡΡΠ΅Π½Π°ΡΠΈΠΈ ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠΎ-Π»Π΅ΡΠ½ΠΎ.
ΠΡΠ΅ΠΊΠΈ ΠΎΡ Π²ΠΊΠ»ΡΡΠ΅Π½ΠΈΡΠ΅ ΡΠ°ΠΉΠ»ΠΎΠ²Π΅ ns-3 Π΅ ΠΏΠΎΡΡΠ°Π²Π΅Π½ Π² Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡ Ρ ΠΈΠΌΠ΅ΡΠΎ ns3 (ΠΏΠΎΠ΄ΡΠΊΡΠΎΠ²Π° Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡ Π½Π° ΡΠ±ΠΎΡΠΊΠ°ΡΠ°), Π·Π° Π΄Π° ΠΈΠ·Π±Π΅Π³Π½Π΅ΠΌ ΠΊΠΎΠ½ΡΠ»ΠΈΠΊΡΠΈΡΠ΅ Ρ ΠΈΠΌΠ΅Π½Π°ΡΠ° Π½Π° ΡΠ°ΠΉΠ»ΠΎΠ²Π΅ΡΠ΅ ΠΏΠΎ Π²ΡΠ΅ΠΌΠ΅ Π½Π° ΡΠ±ΠΎΡΠ½ΠΈΡ ΠΏΡΠΎΡΠ΅Ρ. Π€Π°ΠΉΠ»ΡΡ ns3/core-module.h ΡΡΠΎΡΠ²Π΅ΡΡΡΠ²Π° Π½Π° ΠΌΠΎΠ΄ΡΠ»Π° ns-3, ΠΊΠΎΠΉΡΠΎ ΡΠ΅ Π½Π°ΠΌΠ΅ΡΠΈΡΠ΅ Π² Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡΡΠ° src/core Π² ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ°Π½ΠΎΡΠΎ ΠΎΡ Π²Π°Ρ ΠΈΠ·Π΄Π°Π½ΠΈΠ΅. Π ΡΠΏΠΈΡΡΠΊΠ° Π½Π° ΡΠ°Π·ΠΈ Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡ ΡΠ΅ Π½Π°ΠΌΠ΅ΡΠΈΡΠ΅ Π³ΠΎΠ»ΡΠΌ Π±ΡΠΎΠΉ Π·Π°Π³Π»Π°Π²Π½ΠΈ ΡΠ°ΠΉΠ»ΠΎΠ²Π΅. ΠΠΎΠ³Π°ΡΠΎ ΠΏΡΠ°Π²ΠΈΡΠ΅ ΡΠ±ΠΎΡΠΊΠ°, Waf ΠΏΠΎΡΡΠ°Π²Ρ ΠΏΡΠ±Π»ΠΈΡΠ½ΠΈΡΠ΅ Π·Π°Π³Π»Π°Π²Π½ΠΈ ΡΠ°ΠΉΠ»ΠΎΠ²Π΅ Π² Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡΡΠ° ns3 Π² ΠΏΠΎΠ΄Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡΡΠ° build/debug
ΠΠΊΠΎ Π½ΡΠΌΠ°ΡΠ΅ ΡΠ°ΠΊΠ°Π²Π° Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡ, Π·Π½Π°ΡΠΈΡ ΠΏΡΠΈ ΠΊΠΎΠΌΠΏΠΈΠ»Π°ΡΠΈΡ Π½Π° ΡΠ΅Π»ΠΈΠ·Π½Π°ΡΠ° Π²Π΅ΡΡΠΈΡ Π½Π° nsβ3 Π½Π΅ ΡΡΠ΅ ΡΠΊΠ°Π·Π°Π»ΠΈ ΠΈΠ·Ρ ΠΎΠ΄Π½Π°ΡΠ° Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡ, ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠ°ΠΉΡΠ΅ ΡΠ°ΠΊΠ°:
$ ./waf configure --build-profile=debug --out=build/debug
$ ./waf build
ΠΈΠ»ΠΈ
$ ./waf configure --build-profile=optimized --out=build/optimized
$ ./waf build
ΠΈΠ»ΠΈ build/optimized, Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ ΠΎΡ Π²Π°ΡΠ°ΡΠ° ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡ. Waf ΡΡΡΠΎ ΡΠ°ΠΊΠ° ΡΠ΅ Π³Π΅Π½Π΅ΡΠΈΡΠ° Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ½ΠΎ Π²ΠΊΠ»ΡΡΠ²Π°Ρ ΡΠ°ΠΉΠ» Π½Π° ΠΌΠΎΠ΄ΡΠ»Π° Π·Π° Π·Π°ΡΠ΅ΠΆΠ΄Π°Π½Π΅ Π½Π° Π²ΡΠΈΡΠΊΠΈ ΠΏΡΠ±Π»ΠΈΡΠ½ΠΈ Π·Π°Π³Π»Π°Π²Π½ΠΈ ΡΠ°ΠΉΠ»ΠΎΠ²Π΅. ΠΠΎΠ½Π΅ΠΆΠ΅, ΡΠ°Π·Π±ΠΈΡΠ° ΡΠ΅, ΡΡΡΠΈΠΊΡΠ½ΠΎ ΡΠ»Π΅Π΄Π²Π°ΡΠ΅ ΡΠΎΠ²Π° ΡΡΠΊΠΎΠ²ΠΎΠ΄ΡΡΠ²ΠΎ, Π²ΠΈΠ΅ Π²Π΅ΡΠ΅ ΡΡΠ΅ Π½Π°ΠΏΡΠ°Π²ΠΈΠ»ΠΈ
$ ./waf -d debug --enable-examples --enable-tests configureΠ·Π° Π΄Π° ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠΈΡΠ°ΡΠ΅ ΠΏΡΠΎΠ΅ΠΊΡΠ° Π·Π° ΠΈΠ·Π²ΡΡΡΠ²Π°Π½Π΅ Π½Π° Π΄Π΅Π±ΡΠ³ ΡΠ±ΠΎΡΠΊΠΈ, Π²ΠΊΠ»ΡΡΠ²Π°ΡΠΈ ΠΏΡΠΈΠΌΠ΅ΡΠΈ ΠΈ ΡΠ΅ΡΡΠΎΠ²Π΅. ΠΠΈΠ΅ ΡΡΡΠΎ ΡΠ°ΠΊΠ° Π½Π°ΠΏΡΠ°Π²ΠΈΡ ΡΠ΅
$ .\/wafΠ·Π° Π΄Π° ΡΡΠ±Π΅ΡΠ΅ΡΠ΅ ΠΏΡΠΎΠ΅ΠΊΡΠ°. Π‘Π΅Π³Π°, ΠΊΠΎΠ³Π°ΡΠΎ ΠΏΠΎΠ³Π»Π΅Π΄Π½Π΅ΡΠ΅ Π² Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡΡΠ° ../..//build/debug/ns3, ΡΠ°ΠΌ ΡΡΠ΅Π΄ Π΄ΡΡΠ³ΠΈΡΠ΅ ΡΠ΅ Π½Π°ΠΌΠ΅ΡΠΈΡΠ΅ Π·Π°Π³Π»Π°Π²Π½ΠΈ ΡΠ°ΠΉΠ»ΠΎΠ²Π΅ ΠΎΡ ΡΠ΅ΡΠΈΡΠΈΡΠ΅ ΠΌΠΎΠ΄ΡΠ»Π°, ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΈ ΠΏΠΎ-Π³ΠΎΡΠ΅. ΠΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΡΠ°Π·Π³Π»Π΅Π΄Π°ΡΠ΅ ΡΡΠ΄ΡΡΠΆΠ°Π½ΠΈΠ΅ΡΠΎ Π½Π° ΡΠ΅Π·ΠΈ ΡΠ°ΠΉΠ»ΠΎΠ²Π΅ ΠΈ Π΄Π° ΠΎΡΠΊΡΠΈΠ΅ΡΠ΅, ΡΠ΅ ΡΠ΅ Π²ΠΊΠ»ΡΡΠ²Π°Ρ Π²ΡΠΈΡΠΊΠΈ ΠΏΡΠ±Π»ΠΈΡΠ½ΠΈ ΡΠ°ΠΉΠ»ΠΎΠ²Π΅, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½ΠΈ ΠΎΡ ΡΡΠΎΡΠ²Π΅ΡΠ½ΠΈΡΠ΅ ΠΌΠΎΠ΄ΡΠ»ΠΈ.
4.2.3 ΠΡΠΎΡΡΡΠ°Π½ΡΡΠ²ΠΎ ΠΎΡ ΠΈΠΌΠ΅Π½Π° ns3
Π‘Π»Π΅Π΄Π²Π°ΡΠΈΡΡ ΡΠ΅Π΄ Π² ΡΠΊΡΠΈΠΏΡΠ° first.cc Π΅ ΠΎΠ±ΡΠ²Π»Π΅Π½ΠΈΠ΅ Π½Π° ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²ΠΎΡΠΎ ΠΎΡ ΠΈΠΌΠ΅Π½Π°.
using namespace ns3;ΠΡΠΎΠ΅ΠΊΡ nsβ3 Π΅ ΡΠ΅Π°Π»ΠΈΠ·ΠΈΡΠ°Π½ Π² ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²ΠΎΡΠΎ Π½Π° C++, Π½Π°ΡΠ΅ΡΠ΅Π½ΠΎ ns3. Π’ΠΎΠ²Π° Π³ΡΡΠΏΠΈΡΠ° Π²ΡΠΈΡΠΊΠΈ nsβ3 ΡΠ²ΡΡΠ·Π°Π½ΠΈ Π΄Π΅ΠΊΠ»Π°ΡΠ°ΡΠΈΠΈ Π² ΠΎΠ±Ρ
Π²Π°ΡΠ° ΠΈΠ·Π²ΡΠ½ Π³Π»ΠΎΠ±Π°Π»Π½ΠΎΡΠΎ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²ΠΎ Π½Π° ΠΈΠΌΠ΅Π½Π°ΡΠ°, ΠΊΠΎΠ΅ΡΠΎ, Π½Π°Π΄ΡΠ²Π°ΠΌΠ΅ ΡΠ΅, Π΄Π° ΠΏΠΎΠΌΠΎΠ³Π½Π΅ Π·Π° ΠΈΠ½ΡΠ΅Π³ΡΠΈΡΠ°Π½Π΅ΡΠΎ Ρ Π΄ΡΡΠ³ ΠΊΠΎΠ΄. ΠΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ΡΠΎ Π½Π° ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠ° C++ Π²ΡΠ²Π΅ΠΆΠ΄Π° ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²ΠΎΡΠΎ Π½Π° ΠΈΠΌΠ΅Π½Π°ΡΠ° nsβ3 Π² ΡΠ΅ΠΊΡΡΠΈΡ (Π³Π»ΠΎΠ±Π°Π»Π΅Π½) Π΄Π΅ΠΊΠ»Π°ΡΠ°ΡΠΈΠ²Π΅Π½ ΡΠ΅Π³ΠΈΠΎΠ½. Π’ΠΎΠ²Π° Π΅ ΡΡΡΠ°Π½Π΅Π½ Π½Π°ΡΠΈΠ½ Π΄Π° ΡΠ΅ ΠΊΠ°ΠΆΠ΅, ΡΠ΅ ΡΠ»Π΅Π΄ ΡΠΎΠ²Π° ΠΈΠ·ΡΠ²Π»Π΅Π½ΠΈΠ΅, Π½ΡΠΌΠ° Π΄Π° Π΅ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎ Π΄Π° Π²ΡΠ²Π΅ΠΆΠ΄Π°ΡΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠ° Π·Π° ΡΠ°Π·ΡΠ΅ΡΠ°Π²Π°Π½Π΅ ns3:: ΠΏΡΠ΅Π΄ΠΈ ΡΠ΅Π»ΠΈΡ ΠΊΠΎΠ΄ Π½Π° nsβ3, Π·Π° Π΄Π° Π³ΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΡΠ΅. ΠΠΊΠΎ Π½Π΅ ΡΡΠ΅ Π·Π°ΠΏΠΎΠ·Π½Π°ΡΠΈ Ρ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²Π°ΡΠ° Π½Π° ΠΈΠΌΠ΅Π½Π°ΡΠ°, ΠΎΠ±ΡΡΠ½Π΅ΡΠ΅ ΡΠ΅ ΠΊΡΠΌ ΠΏΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ Π²ΡΡΠΊΠΎ ΡΡΠΊΠΎΠ²ΠΎΠ΄ΡΡΠ²ΠΎ ΠΏΠΎ C++ ΠΈ ΡΡΠ°Π²Π½Π΅ΡΠ΅ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²ΠΎΡΠΎ Π½Π° ΠΈΠΌΠ΅Π½Π°ΡΠ° ns3 Ρ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ΡΠΎ Π½Π° ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²ΠΎΡΠΎ Π½Π° ΠΈΠΌΠ΅Π½Π°ΡΠ° std ΠΈ Π΄Π΅ΠΊΠ»Π°ΡΠ°ΡΠΈΠΈ. using namespace std; Π² ΠΏΡΠΈΠΌΠ΅ΡΠΈ Π·Π° ΡΠ°Π±ΠΎΡΠ° Ρ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠ° Π·Π° ΠΈΠ·Π²Π΅ΠΆΠ΄Π°Π½Π΅ cout ΠΈ ΠΏΠΎΡΠΎΠΊΠΎΠ²Π΅ΡΠ΅.
4.2.4 ΠΠΎΠ³Π²Π°Π½Π΅ (Logging)
Π‘Π»Π΅Π΄Π²Π°ΡΠΈΡΡ ΡΠ΅Π΄ Π½Π° ΡΠΊΡΠΈΠΏΡΠ° Π΅:
NS_LOG_COMPONENT_DEFINE ("FirstScriptExample");Π©Π΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌΠ΅ ΡΠΎΠ²Π° ΠΈΠ·ΡΠ²Π»Π΅Π½ΠΈΠ΅ ΠΊΠ°ΡΠΎ ΡΠ΄ΠΎΠ±Π½ΠΎ ΠΌΡΡΡΠΎ Π·Π° ΠΎΠ±ΡΡΠΆΠ΄Π°Π½Π΅ Π½Π° Π½Π°ΡΠ°ΡΠ° ΡΠΈΡΡΠ΅ΠΌΠ° Π·Π° Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡ. DoxygenΠΠΊΠΎ ΠΏΠΎΠ³Π»Π΅Π΄Π½Π΅ΡΠ΅ ΡΠ΅Π±ΡΠ°ΠΉΡΠ° Π½Π° ΠΏΡΠΎΠ΅ΠΊΡΠ° nsβ3, ΡΠ΅ Π½Π°ΠΌΠ΅ΡΠΈΡΠ΅ Π»ΠΈΠ½ΠΊ βΠΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡβ (Documentation) Π² Π½Π°Π²ΠΈΠ³Π°ΡΠΈΠΎΠ½Π½ΠΎΡΠΎ ΠΌΠ΅Π½Ρ. ΠΠΊΠΎ ΠΈΠ·Π±Π΅ΡΠ΅ΡΠ΅ ΡΠΎΠ·ΠΈ Π»ΠΈΠ½ΠΊ, ΡΠ΅ ΠΏΠΎΠΏΠ°Π΄Π½Π΅ΡΠ΅ Π½Π° Π½Π°ΡΠ°ΡΠ° ΡΡΡΠ°Π½ΠΈΡΠ° Π·Π° Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡ. Π‘ΡΡΠ΅ΡΡΠ²ΡΠ²Π° Π»ΠΈΠ½ΠΊ ΠΊΡΠΌ βΠΠΎΡΠ»Π΅Π΄Π΅Π½ ΡΠ΅Π»ΠΈΠ·β, ΠΊΠΎΠΉΡΠΎ ΡΠ΅ Π²ΠΈ ΠΎΡΠ²Π΅Π΄Π΅ Π΄ΠΎ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡΡΠ° Π·Π° ΠΏΠΎΡΠ»Π΅Π΄Π½Π°ΡΠ° ΡΡΠ°Π±ΠΈΠ»Π½Π° Π²Π΅ΡΡΠΈΡ Π½Π° nsβ3. ΠΠΊΠΎ ΠΈΠ·Π±Π΅ΡΠ΅ΡΠ΅ Π»ΠΈΠ½ΠΊΠ° βAPI Documentationβ, ΡΠ΅ ΠΏΠΎΠΏΠ°Π΄Π½Π΅ΡΠ΅ Π½Π° ΡΡΡΠ°Π½ΠΈΡΠ°ΡΠ° Π½Π° Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡ Π·Π° APIs Π½Π° nsβ3.
Π Π»ΡΠ²Π°ΡΠ° ΡΠ°ΡΡ Π½Π° ΡΡΡΠ°Π½ΠΈΡΠ°ΡΠ° ΡΠ΅ Π½Π°ΠΌΠ΅ΡΠΈΡΠ΅ Π³ΡΠ°ΡΠΈΡΠ½ΠΎ ΠΏΡΠ΅Π΄ΡΡΠ°Π²ΡΠ½Π΅ Π½Π° ΡΡΡΡΠΊΡΡΡΠ°ΡΠ° Π½Π° Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡΡΠ°. ΠΠΎΠ±ΡΠΎ ΠΌΡΡΡΠΎ Π·Π° Π½Π°ΡΠ°Π»ΠΎ Π΅ βΠΊΠ½ΠΈΠ³Π°ΡΠ°β Modules nsβ3 Π² Π΄ΡΡΠ²ΠΎΡΠΎ Π½Π° Π½Π°Π²ΠΈΠ³Π°ΡΠΈΡΡΠ° nsβ3. ΠΠΊΠΎ ΡΠ°Π·Π³ΡΠ½Π΅ΡΠ΅ ΠΠΎΠ΄ΡΠ»ΠΈ, ΡΠ΅ Π²ΠΈΠ΄ΠΈΡΠ΅ ΡΠΏΠΈΡΡΠΊ Ρ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡΡΠ° Π½Π° ΠΌΠΎΠ΄ΡΠ»ΠΈΡΠ΅ nsβ3. ΠΠ°ΠΊΡΠΎ Π±Π΅ΡΠ΅ ΠΎΠ±ΡΡΠ΄Π΅Π½ΠΎ ΠΏΠΎ-Π³ΠΎΡΠ΅, ΠΊΠΎΠ½ΡΠ΅ΠΏΡΠΈΡΡΠ° Π·Π° ΠΌΠΎΠ΄ΡΠ» ΡΡΠΊ Π΅ ΠΏΡΡΠΊΠΎ ΡΠ²ΡΡΠ·Π°Π½Π° Ρ ΡΠ°ΠΉΠ»ΠΎΠ²Π΅ΡΠ΅, Π²ΠΊΠ»ΡΡΠ΅Π½ΠΈ Π² ΠΌΠΎΠ΄ΡΠ»Π°. ΠΠΎΠ΄ΡΠΈΡΡΠ΅ΠΌΠ°ΡΠ° Π·Π° Π»ΠΎΠ³ΠΈΡΠ°Π½Π΅ Π½Π° nsβ3 ΡΠ΅ ΠΎΠ±ΡΡΠΆΠ΄Π° Π² ΡΠ°Π·Π΄Π΅Π» ΠΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° ΠΌΠΎΠ΄ΡΠ»Π° Π·Π° Π»ΠΎΠ³ΠΈΡΠ°Π½Π΅, ΡΠ°ΠΊΠ° ΡΠ΅ ΡΠ΅ ΡΠ΅ Π²ΡΡΠ½Π΅ΠΌ ΠΊΡΠΌ Π½Π΅Π³ΠΎ ΠΏΠΎ-ΠΊΡΡΠ½ΠΎ Π² ΡΠΎΠ²Π° ΡΡΠΊΠΎΠ²ΠΎΠ΄ΡΡΠ²ΠΎ, Π½ΠΎ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° Π½Π°ΡΡΠΈΡΠ΅ ΠΏΠΎΠ²Π΅ΡΠ΅ Π·Π° ΠΏΠΎΡΠΎΡΠ΅Π½ΠΎΡΠΎ ΠΏΠΎ-Π³ΠΎΡΠ΅ ΠΈΠ·ΡΠ²Π»Π΅Π½ΠΈΠ΅, ΠΊΠ°ΡΠΎ ΠΏΠΎΠ³Π»Π΅Π΄Π½Π΅ΡΠ΅ ΠΌΠΎΠ΄ΡΠ»Π° Π―Π΄ΡΠΎ, Π° ΡΠ»Π΅Π΄ ΡΠΎΠ²Π° ΠΎΡΠ²ΠΎΡΠΈΡΠ΅ ΠΊΠ½ΠΈΠ³Π°ΡΠ° Debugging tools, Π° ΡΠ»Π΅Π΄ ΡΠΎΠ²Π° ΠΈΠ·Π±Π΅ΡΠ΅ΡΠ΅ ΡΡΡΠ°Π½ΠΈΡΠ°ΡΠ° Logging. Π©ΡΠ°ΠΊΠ½Π΅ΡΠ΅ Π²ΡΡΡ Ρ Logging.
Π‘Π΅Π³Π° ΡΡΡΠ±Π²Π° Π΄Π° ΠΏΡΠ΅Π³Π»Π΅Π΄Π°ΡΠ΅ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡΡΠ° Doxygen Π·Π° ΠΌΠΎΠ΄ΡΠ»Π° Logging. Π ΡΠΏΠΈΡΡΠΊΠ° Ρ ΠΌΠ°ΠΊΡΠΎΡΠΈ Π² Π³ΠΎΡΠ½Π°ΡΠ° ΡΠ°ΡΡ Π½Π° ΡΡΡΠ°Π½ΠΈΡΠ°ΡΠ° ΡΠ΅ Π²ΠΈΠ΄ΠΈΡΠ΅ Π·Π°ΠΏΠΈΡ Π·Π° NS_LOG_COMPONENT_DEFINE. ΠΡΠ΅Π΄ΠΈ Π΄Π° ΠΏΡΠ΅ΠΌΠΈΠ½Π΅ΡΠ΅ ΠΏΠΎ Π»ΠΈΠ½ΠΊΠ°, Π·Π°Π΄ΡΠ»ΠΆΠΈΡΠ΅Π»Π½ΠΎ ΡΠ°Π·Π³Π»Π΅Π΄Π°ΠΉΡΠ΅ "ΠΠΎΠ΄ΡΠΎΠ±Π½ΠΎ ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅" Π½Π° ΠΌΠΎΠ΄ΡΠ»Π° Π·Π° Π»ΠΎΠ³Π²Π°Π½Π΅, Π·Π° Π΄Π° ΡΠ°Π·Π±Π΅ΡΠ΅ΡΠ΅ Π½Π΅Π³ΠΎΠ²ΠΎΡΠΎ ΡΡΠ½ΠΊΡΠΈΠΎΠ½ΠΈΡΠ°Π½Π΅. ΠΠ° Π΄Π° Π½Π°ΠΏΡΠ°Π²ΠΈΡΠ΅ ΡΠΎΠ²Π°, ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΠΏΡΠ΅Π²ΡΡΡΠΈΡΠ΅ Π½Π°Π΄ΠΎΠ»Ρ ΠΈΠ»ΠΈ Π΄Π° ΠΈΠ·Π±Π΅ΡΠ΅ΡΠ΅ "ΠΠΎΠ²Π΅ΡΠ΅..." ΠΏΠΎΠ΄ Π΄ΠΈΠ°Π³ΡΠ°ΠΌΠ°ΡΠ°.
Π‘Π»Π΅Π΄ ΠΊΠ°ΡΠΎ Π΄ΠΎΠ±ΠΈΠ΅ΡΠ΅ ΠΎΠ±ΡΠΎ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π° Π·Π° ΡΠΎΠ²Π°, ΠΊΠΎΠ΅ΡΠΎ ΡΠ΅ ΡΠ»ΡΡΠ²Π°, ΠΏΡΠΎΠ΄ΡΠ»ΠΆΠ΅ΡΠ΅ ΠΈ ΡΠ°Π·Π³Π»Π΅Π΄Π°ΠΉΡΠ΅ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡΡΠ° Π·Π° ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΈΡΠ΅ NS_LOG_COMPONENT_DEFINE. ΠΡΠΌΠ° Π΄Π° Π΄ΡΠ±Π»ΠΈΡΠ°ΠΌ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡΡΠ° ΡΡΠΊ, Π½ΠΎ Π² ΡΠ΅Π·ΡΠΌΠ΅, ΡΠ΅ ΠΊΠ°ΠΆΠ°, ΡΠ΅ ΡΠΎΠ·ΠΈ ΡΠ΅Π΄ ΠΎΠ±ΡΠ²ΡΠ²Π° ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ° Π·Π° Π»ΠΎΠ³Π²Π°Π½Π΅ Ρ ΠΈΠΌΠ΅ΡΠΎ FirstScriptExample, ΠΊΠΎΠΉΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° Π²ΠΊΠ»ΡΡΠ²Π°Π½Π΅ ΠΈ ΠΈΠ·ΠΊΠ»ΡΡΠ²Π°Π½Π΅ Π½Π° ΠΊΠΎΠ½ΡΠΎΠ»Π½Π°ΡΠ° ΡΠ΅Π³ΠΈΡΡΡΠ°ΡΠΈΡ Π½Π° ΡΡΠΎΠ±ΡΠ΅Π½ΠΈΡ ΠΏΠΎ Π»ΠΈΠ½ΠΊ Π½Π° ΠΈΠΌΠ΅ΡΠΎ.
4.2.5 ΠΠ»Π°Π²Π½Π° ΡΡΠ½ΠΊΡΠΈΡ
Π ΡΠ»Π΅Π΄Π²Π°ΡΠΈΡΠ΅ ΡΠ΅Π΄ΠΎΠ²Π΅ Π½Π° ΡΠΊΡΠΈΠΏΡΠ° ΡΠ΅ Π²ΠΈΠ΄ΠΈΡΠ΅,
int
main (int argc, char *argv[])
{ Π’ΠΎΠ²Π° Π΅ ΠΏΡΠΎΡΡΠΎ ΠΎΠ±ΡΠ²Π»Π΅Π½ΠΈΠ΅ Π½Π° ΠΎΡΠ½ΠΎΠ²Π½Π°ΡΠ° ΡΡΠ½ΠΊΡΠΈΡ Π½Π° Π²Π°ΡΠ°ΡΠ° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠ° (ΡΠΊΡΠΈΠΏΡ). ΠΠ°ΠΊΡΠΎ Π²ΡΠ² Π²ΡΡΠΊΠ° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠ° Π½Π° C++, ΡΡΡΠ±Π²Π° Π΄Π° ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΠ΅ Π³Π»Π°Π²Π½Π°ΡΠ° ΡΡΠ½ΠΊΡΠΈΡ, ΠΊΠΎΡΡΠΎ ΡΠ΅ ΠΈΠ·ΠΏΡΠ»Π½ΡΠ²Π° ΠΏΡΡΠ²Π°. ΠΡΠΌΠ° Π½ΠΈΡΠΎ ΠΎΡΠΎΠ±Π΅Π½ΠΎ. ΠΠ°ΡΠΈΡΡ ΡΠΊΡΠΈΠΏΡ ns-3 ΠΏΡΠΎΡΡΠΎ Π΅ C++ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠ°. Π‘Π»Π΅Π΄Π²Π°ΡΠΈΡΡ ΡΠ΅Π΄ Π·Π°Π΄Π°Π²Π° Π²ΡΠ΅ΠΌΠ΅Π²Π°ΡΠ° ΡΠ΅Π·ΠΎΠ»ΡΡΠΈΡ Π½Π° 1 Π½Π°Π½ΠΎΡΠ΅ΠΊΡΠ½Π΄Π°, ΠΊΠΎΠ΅ΡΠΎ Π΅ ΡΡΠΎΠΉΠ½ΠΎΡΡΡΠ° ΠΏΠΎ ΠΏΠΎΠ΄ΡΠ°Π·Π±ΠΈΡΠ°Π½Π΅:
Time::SetResolution (Time::NS);ΠΡΠ΅ΠΌΠ΅Π²Π°ΡΠ° ΡΠ΅Π·ΠΎΠ»ΡΡΠΈΡ ΠΈΠ»ΠΈ ΠΏΡΠΎΡΡΠΎ ΡΠ΅Π·ΠΎΠ»ΡΡΠΈΡ β ΡΠΎΠ²Π° Π΅ Π½Π°ΠΉ-ΠΌΠ°Π»ΠΊΠ°ΡΠ° ΡΡΠΎΠΉΠ½ΠΎΡΡ Π½Π° Π²ΡΠ΅ΠΌΠ΅ΡΠΎ, ΠΊΠΎΡΡΠΎ ΠΌΠΎΠΆΠ΅ Π΄Π° Π±ΡΠ΄Π΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π° (Π½Π°ΠΉ-ΠΌΠ°Π»ΠΊΠ°ΡΠ° ΠΏΡΠ΅Π΄ΡΡΠ°Π²ΠΈΠΌΠ° ΡΠ°Π·Π»ΠΈΠΊΠ° ΠΌΠ΅ΠΆΠ΄Ρ Π΄Π²Π΅ ΡΡΠΎΠΉΠ½ΠΎΡΡΠΈ Π½Π° Π²ΡΠ΅ΠΌΠ΅ΡΠΎ). ΠΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΠΏΡΠΎΠΌΠ΅Π½ΠΈΡΠ΅ ΡΠ΅Π·ΠΎΠ»ΡΡΠΈΡΡΠ° ΡΠ°ΠΌΠΎ Π²Π΅Π΄Π½ΡΠΆ. ΠΠ΅Ρ Π°Π½ΠΈΠ·ΠΌΡΡ, ΠΎΡΠΈΠ³ΡΡΡΠ²Π°Ρ ΡΠ°Π·ΠΈ Π³ΡΠ²ΠΊΠ°Π²ΠΎΡΡ, ΠΊΠΎΠ½ΡΡΠΌΠΈΡΠ° ΠΏΠ°ΠΌΠ΅Ρ, ΡΠ°ΠΊΠ° ΡΠ΅ Π²Π΅Π΄Π½Π°Π³Π° ΡΠ»Π΅Π΄ ΠΊΠ°ΡΠΎ ΡΠ΅Π·ΠΎΠ»ΡΡΠΈΡΡΠ° Π΅ Π·Π°Π΄Π°Π΄Π΅Π½Π° ΡΠ²Π½ΠΎ, ΠΎΡΠ²ΠΎΠ±ΠΎΠΆΠ΄Π°Π²Π°ΠΌΠ΅ ΠΏΠ°ΠΌΠ΅Ρ, ΠΏΡΠ΅Π΄ΠΎΡΠ²ΡΠ°ΡΡΠ²Π°ΠΉΠΊΠΈ ΠΏΠΎ-Π½Π°ΡΠ°ΡΡΡΠ½ΠΈ Π°ΠΊΡΡΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ. (ΠΠΊΠΎ Π½Π΅ Π·Π°Π΄Π°Π΄Π΅ΡΠ΅ ΡΠ΅Π·ΠΎΠ»ΡΡΠΈΡΡΠ° ΡΠ²Π½ΠΎ, ΡΠΎ ΠΏΠΎ ΠΏΠΎΠ΄ΡΠ°Π·Π±ΠΈΡΠ°Π½Π΅ ΡΠ΅ Π±ΡΠ΄Π΅ 1 Π½Π°Π½ΠΎΡΠ΅ΠΊΡΠ½Π΄Π°, Π° ΠΏΠ°ΠΌΠ΅ΡΡΠ° ΡΠ΅ Π±ΡΠ΄Π΅ ΠΎΡΠ²ΠΎΠ±ΠΎΠ΄Π΅Π½Π° ΠΏΡΠΈ Π½Π°ΡΠ°Π»ΠΎΡΠΎ Π½Π° ΡΠΈΠΌΡΠ»Π°ΡΠΈΡΡΠ°.)
Π‘Π»Π΅Π΄Π²Π°ΡΠΈΡΠ΅ Π΄Π²Π΅ ΡΠ΅Π΄Π° Π½Π° ΡΡΠ΅Π½Π°ΡΠΈΡ ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ Π·Π° Π°ΠΊΡΠΈΠ²ΠΈΡΠ°Π½Π΅ Π½Π° Π΄Π²Π° ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ° Π·Π° Π»ΠΎΠ³Π²Π°Π½Π΅, ΠΊΠΎΠΈΡΠΎ ΡΠ° Π²Π³ΡΠ°Π΄Π΅Π½ΠΈ Π² ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡΡΠ° EchoClient ΠΈ EchoServer:
LogComponentEnable("UdpEchoClientApplication", LOG_LEVEL_INFO); LogComponentEnable("UdpEchoServerApplication", LOG_LEVEL_INFO);ΠΠΊΠΎ ΡΡΠ΅ ΠΏΡΠΎΡΠ΅Π»ΠΈ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡΡΠ° Π·Π° ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ° Logging, ΡΠ΅ Π·Π°Π±Π΅Π»Π΅ΠΆΠΈΡΠ΅, ΡΠ΅ ΠΈΠΌΠ° Π½ΡΠΊΠΎΠ»ΠΊΠΎ Π½ΠΈΠ²Π° Π½Π° Π΄Π΅ΡΠ°ΠΉΠ»Π½ΠΎΡΡ Π½Π° ΡΠ΅Π³ΠΈΡΡΡΠ°ΡΠΈΡΡΠ°, ΠΊΠΎΠΈΡΠΎ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° Π°ΠΊΡΠΈΠ²ΠΈΡΠ°ΡΠ΅ Π·Π° Π²ΡΠ΅ΠΊΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ. Π’Π΅Π·ΠΈ Π΄Π²Π° ΡΠ΅Π΄Π° ΠΊΠΎΠ΄ Π²ΠΊΠ»ΡΡΠ²Π°Ρ Π»ΠΎΠ³Π²Π°Π½Π΅ Π½Π° Π½ΠΈΠ²ΠΎ INFO Π·Π° ΠΊΠ»ΠΈΠ΅Π½ΡΠΈΡΠ΅ ΠΈ ΡΡΡΠ²ΡΡΠΈΡΠ΅. ΠΠ° ΡΠΎΠ²Π° Π½ΠΈΠ²ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΡΠΎ ΡΠ΅ ΠΎΡΠΏΠ΅ΡΠ°ΡΠ²Π° ΡΡΠΎΠ±ΡΠ΅Π½ΠΈΡ ΠΏΠΎ Π²ΡΠ΅ΠΌΠ΅ Π½Π° ΡΠΈΠΌΡΠ»Π°ΡΠΈΡΡΠ° ΠΏΡΠΈ ΠΈΠ·ΠΏΡΠ°ΡΠ°Π½Π΅ ΠΈ ΠΏΠΎΠ»ΡΡΠ°Π²Π°Π½Π΅ Π½Π° ΠΏΠ°ΠΊΠ΅ΡΠΈ.
Π‘Π΅Π³Π° ΡΠ΅ ΠΏΡΠ΅ΠΌΠΈΠ½Π΅ΠΌ Π΄ΠΈΡΠ΅ΠΊΡΠ½ΠΎ ΠΊΡΠΌ ΡΡΠ·Π΄Π°Π²Π°Π½Π΅ΡΠΎ Π½Π° ΡΠΎΠΏΠΎΠ»ΠΎΠ³ΠΈΡ ΠΈ ΡΡΠ°ΡΡΠΈΡΠ°Π½Π΅ Π½Π° ΡΠΈΠΌΡΠ»Π°ΡΠΈΡ. Π©Π΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌΠ΅ ΠΎΠ±Π΅ΠΊΡΠΈ ΠΎΡ ΠΏΠΎΠΌΠΎΡΠ½ΠΈΠΊΠ° ΠΏΠΎ ΡΠΎΠΏΠΎΠ»ΠΎΠ³ΠΈΡ, Π·Π° Π΄Π° Π½Π°ΠΏΡΠ°Π²ΠΈΠΌ ΡΠ°Π·ΠΈ Π·Π°Π΄Π°ΡΠ° Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉ-Π»Π΅ΡΠ½Π°.
4.2.6 ΠΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° ΡΠΎΠΏΠΎΠ»ΠΎΠ³ΠΈΡΠ½ΠΈ ΠΏΠΎΠΌΠΎΡΠ½ΠΈΡΠΈ
Π‘Π»Π΅Π΄Π²Π°ΡΠΈΡΠ΅ Π΄Π²Π° ΡΠ΅Π΄Π° ΠΊΠΎΠ΄ Π² Π½Π°ΡΠΈΡ ΡΠΊΡΠΈΠΏΡ Π²ΡΡΡΠ½ΠΎΡΡ ΡΠ΅ ΡΡΠ·Π΄Π°Π΄Π°Ρ ΠΎΠ±Π΅ΠΊΡΠΈ Node ns-3, ΠΊΠΎΠΈΡΠΎ ΡΠ΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ²Π°Ρ ΠΊΠΎΠΌΠΏΡΡΡΠΈ Π² ΡΠΈΠΌΡΠ»Π°ΡΠΈΡΡΠ°.
NodeContainer nodes;
nodes.Create (2);ΠΡΠ΅Π΄ΠΈ Π΄Π° ΠΏΡΠΎΠ΄ΡΠ»ΠΆΠΈΠΌ, Π½Π΅ΠΊΠ° Π½Π°ΠΌΠ΅ΡΠΈΠΌ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡΡΠ° Π·Π° ΠΊΠ»Π°ΡΠ° NodeContainer. ΠΡΡΠ³ Π½Π°ΡΠΈΠ½ Π΄Π° ΠΏΠΎΠΏΠ°Π΄Π½Π΅ΡΠ΅ Π² Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡΡΠ° Π·Π° ΡΠΎΠ·ΠΈ ΠΊΠ»Π°Ρ Π΅ ΠΏΡΠ΅Π· ΡΠ°Π·Π΄Π΅Π»Π° ΠΠ»Π°ΡΠΎΠ²Π΅ Π½Π° ΡΡΡΠ°Π½ΠΈΡΠΈΡΠ΅ Doxygen. ΠΠΊΠΎ Π²Π΅ΡΠ΅ ΠΈΠΌΠ°ΡΠ΅ ΠΎΡΠ²ΠΎΡΠ΅Π½ Doxygen, ΠΏΡΠΎΡΡΠΎ ΠΏΡΠ΅Π²ΡΡΡΠ΅ΡΠ΅ Π½Π°Π³ΠΎΡΠ΅ Π΄ΠΎ Π³ΠΎΡΠ½Π°ΡΠ° ΡΠ°ΡΡ Π½Π° ΡΡΡΠ°Π½ΠΈΡΠ°ΡΠ° ΠΈ ΠΈΠ·Π±Π΅ΡΠ΅ΡΠ΅ ΡΠ°Π·Π΄Π΅Π»Π° ΠΠ»Π°ΡΠΎΠ²Π΅. Π’ΡΡΠ±Π²Π° Π΄Π° Π²ΠΈΠ΄ΠΈΡΠ΅ Π½ΠΎΠ² ΠΊΠΎΠΌΠΏΠ»Π΅ΠΊΡ ΡΠ°Π·Π΄Π΅Π»ΠΈ, Π΅Π΄ΠΈΠ½ ΠΎΡ ΠΊΠΎΠΈΡΠΎ Π΅ ΡΠΏΠΈΡΡΠΊ Π½Π° ΠΊΠ»Π°ΡΠΎΠ²Π΅ΡΠ΅. ΠΠΎΠ΄ ΡΠΎΠ·ΠΈ ΡΠ°Π·Π΄Π΅Π» ΡΠ΅ Π²ΠΈΠ΄ΠΈΡΠ΅ ΡΠΏΠΈΡΡΠΊ Π½Π° Π²ΡΠΈΡΠΊΠΈ ΠΊΠ»Π°ΡΠΎΠ²Π΅ ns-3. ΠΡΠ΅Π²ΡΡΡΠ΅ΡΠ΅ Π½Π°Π΄ΠΎΠ»Ρ Π΄ΠΎ ns3 :: NodeContainer. ΠΠΎΠ³Π°ΡΠΎ Π½Π°ΠΌΠ΅ΡΠΈΡΠ΅ ΠΊΠ»Π°ΡΠ°, ΠΈΠ·Π±Π΅ΡΠ΅ΡΠ΅ Π³ΠΎ, Π·Π° Π΄Π° ΠΏΡΠ΅ΠΌΠΈΠ½Π΅ΡΠ΅ ΠΊΡΠΌ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡΡΠ° Π·Π° Π½Π΅Π³ΠΎ.
ΠΠ°ΠΊΡΠΎ ΠΏΠΎΠΌΠ½ΠΈΠΌ, Π΅Π΄Π½Π° ΠΎΡ Π½Π°ΡΠΈΡΠ΅ ΠΊΠ»ΡΡΠΎΠ²ΠΈ Π°Π±ΡΡΡΠ°ΠΊΡΠΈΠΈ Π΅ Π²ΡΠ·Π΅Π». Π’ΠΎΠΉ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ²Π° ΠΊΠΎΠΌΠΏΡΡΡΡ, ΠΊΡΠΌ ΠΊΠΎΠΉΡΠΎ ΡΠ΅ Π΄ΠΎΠ±Π°Π²ΠΈΠΌ Π½Π΅ΡΠ° ΠΊΠ°ΡΠΎ ΡΡΠ΅ΠΊΠΎΠ²Π΅ Π½Π° ΠΏΡΠΎΡΠΎΠΊΠΎΠ»ΠΈΡΠ΅, ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΈ ΠΏΠ΅ΡΠΈΡΠ΅ΡΠ½ΠΈ ΠΊΠ°ΡΡΠΈ. Π’ΠΎΠΏΠΎΠ»ΠΎΠ³ΠΈΡΠ½ΠΈΡΡ ΠΏΠΎΠΌΠΎΡΠ½ΠΈΠΊ NodeContainer ΠΎΡΠΈΠ³ΡΡΡΠ²Π° ΡΠ΄ΠΎΠ±Π΅Π½ Π½Π°ΡΠΈΠ½ Π·Π° ΡΡΠ·Π΄Π°Π²Π°Π½Π΅, ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΠΈ Π΄ΠΎΡΡΡΠΏ Π΄ΠΎ Π²ΡΡΠΊΠ°ΠΊΠ²ΠΈ ΠΎΠ±Π΅ΠΊΡΠΈ Π£Π·Π΅Π», ΠΊΠΎΠΈΡΠΎ ΡΡΠ·Π΄Π°Π²Π°ΠΌΠ΅ Π·Π° ΡΡΠ°ΡΡΠΈΡΠ°Π½Π΅ Π½Π° ΡΠΈΠΌΡΠ»Π°ΡΠΈΡΡΠ°. ΠΡΡΠ²ΠΈΡΡ ΡΠ΅Π΄ ΠΏΠΎ-Π³ΠΎΡΠ΅ ΠΏΡΠΎΡΡΠΎ Π΄Π΅ΠΊΠ»Π°ΡΠΈΡΠ° NodeContainer, ΠΊΠΎΠΉΡΠΎ Π½Π°ΡΠΈΡΠ°ΠΌΠ΅ nodes. ΠΡΠΎΡΠΈΡΡ ΡΠ΅Π΄ ΠΈΠ·Π²ΠΈΠΊΠ²Π° ΠΌΠ΅ΡΠΎΠ΄Π° Create Π·Π° ΠΎΠ±Π΅ΠΊΡΠ° nodes ΠΈ ΠΈΡΠΊΠ° ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΡΡ Π΄Π° ΡΡΠ·Π΄Π°Π΄Π΅ Π΄Π²Π° Π²ΡΠ·Π΅Π»Π°. ΠΠ°ΠΊΡΠΎ Π΅ ΠΎΠΏΠΈΡΠ°Π½ΠΎ Π² Doxygen, ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΡΡ ΠΈΡΠΊΠ° ΠΎΡ ΡΠΈΡΡΠ΅ΠΌΠ°ΡΠ° ns-3 Π΄Π° ΡΡΠ·Π΄Π°Π΄Π΅ Π΄Π²Π° ΠΎΠ±Π΅ΠΊΡΠ° Π£Π·Π΅Π» ΠΈ Π·Π°ΠΏΠ°Π·Π²Π° ΡΠΊΠ°Π·Π°ΡΠ΅Π»ΠΈΡΠ΅ ΠΊΡΠΌ ΡΠ΅Π·ΠΈ ΠΎΠ±Π΅ΠΊΡΠΈ Π² ΡΠ΅Π±Π΅ ΡΠΈ.
Π‘ΡΠ·Π΄Π°Π΄Π΅Π½ΠΈΡΠ΅ Π² ΡΠΊΡΠΈΠΏΡΠ° Π²ΡΠ·Π»ΠΈ Π½Π΅ ΠΏΡΠ°Π²ΡΡ Π½ΠΈΡΠΎ Π·Π° ΠΌΠΎΠΌΠ΅Π½ΡΠ°. Π‘Π»Π΅Π΄Π²Π°ΡΠ°ΡΠ° ΡΡΡΠΏΠΊΠ° Π² ΠΈΠ·Π³ΡΠ°ΠΆΠ΄Π°Π½Π΅ΡΠΎ Π½Π° ΡΠΎΠΏΠΎΠ»ΠΎΠ³ΠΈΡΡΠ° Π΅ ΡΠ²ΡΡΠ·Π²Π°Π½Π΅ΡΠΎ Π½Π° Π½Π°ΡΠΈΡΠ΅ Π²ΡΠ·Π»ΠΈ ΠΊΡΠΌ ΠΌΡΠ΅ΠΆΠ°ΡΠ°. ΠΠ°ΠΉ-ΠΏΡΠΎΡΡΠ°ΡΠ° ΡΠΎΡΠΌΠ° Π½Π° ΠΌΡΠ΅ΠΆΠ°, ΠΊΠΎΡΡΠΎ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠ°ΠΌΠ΅, Π΅ Π΄Π²ΡΠΏΠΎΡΠΎΡΠ½Π° Π²ΡΡΠ·ΠΊΠ° ΠΌΠ΅ΠΆΠ΄Ρ Π΄Π²Π° Π²ΡΠ·Π΅Π»Π°. Π‘Π΅Π³Π° ΡΠ΅ ΡΡΠ·Π΄Π°Π΄Π΅ΠΌ ΡΠ°ΠΊΠΎΠ²Π° ΡΠ²ΡΡΠ·Π²Π°Π½Π΅.
PointToPointHelper
Π‘ΡΠ·Π΄Π°Π²Π°ΠΌΠ΅ Π΄Π²ΡΡΠΎΡΠΊΠΎΠ²ΠΎ ΡΠ²ΡΡΠ·Π²Π°Π½Π΅, Π΄Π΅ΠΉΡΡΠ²Π°ΠΉΠΊΠΈ ΠΏΠΎ ΠΏΠΎΠ·Π½Π°ΡΠΈΡ Π½ΠΈ ΡΠ°Π±Π»ΠΎΠ½, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌΠ΅ ΡΠΎΠΏΠΎΠ»ΠΎΠ³ΠΈΡΠ΅Π½ ΠΏΠΎΠΌΠΎΡΠ΅Π½ ΠΎΠ±Π΅ΠΊΡ Π·Π° ΠΈΠ·Π²ΡΡΡΠ²Π°Π½Π΅ Π½Π° Π½ΠΈΡΠΊΠΎ Π½ΠΈΠ²ΠΎ ΡΠ°Π±ΠΎΡΠ°, Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠ° Π·Π° ΡΠ²ΡΡΠ·Π²Π°Π½Π΅ΡΠΎ. ΠΠ΅ΠΊΠ° ΠΏΡΠΈΠΏΠΎΠΌΠ½ΠΈΠΌ, ΡΠ΅ Π΄Π²Π°ΡΠ° Π½ΠΈ ΠΊΠ»ΡΡΠΎΠ²ΠΈ Π°Π±ΡΡΡΠ°ΠΊΡΠ° NetDevice ΠΈ Channel. Π ΡΠ΅Π°Π»Π½ΠΈΡ ΡΠ²ΡΡ ΡΠ΅Π·ΠΈ ΡΠ΅ΡΠΌΠΈΠ½ΠΈ ΡΡΠΎΡΠ²Π΅ΡΡΡΠ²Π°Ρ Π½Π° ΠΏΠ΅ΡΠΈΡΠ΅ΡΠΈΠΉΠ½ΠΈ ΠΊΠ°ΡΡΠΈ ΠΈ ΠΌΡΠ΅ΠΆΠΎΠ²ΠΈ ΠΊΠ°Π±Π΅Π»ΠΈ. ΠΠ±ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΎ, ΡΠ΅Π·ΠΈ Π΄Π²Π΅ Π½Π΅ΡΠ° ΡΠ° ΡΡΡΠ½ΠΎ ΡΠ²ΡΡΠ·Π°Π½ΠΈ ΠΏΠΎΠΌΠ΅ΠΆΠ΄Ρ ΡΠΈ ΠΈ Π½ΠΈΠΊΠΎΠΉ Π½Π΅ ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ°Π·ΡΠΈΡΠ° Π½Π° ΠΎΠ±ΠΌΠ΅Π½, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΌΠ΅ΠΆΠ΄Ρ ΡΡΡΡΠΎΠΉΡΡΠ²Π° Ethernet ΠΏΠΎ Π±Π΅Π·ΠΆΠΈΡΠ΅Π½ ΠΊΠ°Π½Π°Π». ΠΠ°ΡΠΈΡΠ΅ ΡΠΎΠΏΠΎΠ»ΠΎΠ³ΠΈΡΠ½ΠΈ ΠΏΠΎΠΌΠΎΡΠ½ΠΈΡΠΈ ΡΠ»Π΅Π΄Π²Π°Ρ ΡΠ°Π·ΠΈ ΡΡΡΠ½Π° Π²ΡΡΠ·ΠΊΠ° ΠΈ Π·Π°ΡΠΎΠ²Π° Π² ΡΠΎΠ·ΠΈ ΡΡΠ΅Π½Π°ΡΠΈΠΉ ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΡΠ΅ Π΅Π΄ΠΈΠ½ ΠΎΠ±Π΅ΠΊΡ PointToPointHelper Π·Π° Π½Π°ΡΡΡΠΎΠΉΠΊΠ° ΠΈ ΡΠ²ΡΡΠ·Π²Π°Π½Π΅ Π½Π° nsβ3 ΠΎΠ±Π΅ΠΊΡΠΈ PointToPointNetDevice ΠΈ PointToPointChannel. Π‘Π»Π΅Π΄Π²Π°ΡΠΈΡΠ΅ ΡΡΠΈ ΡΠ΅Π΄Π° Π² ΡΡΠ΅Π½Π°ΡΠΈΡ:
PointToPointHelper pointToPoint;
pointToPoint.SetDeviceAttribute ("DataRate", StringValue ("5Mbps"));
pointToPoint.SetChannelAttribute ("Delay", StringValue ("2ms"));ΠΡΡΠ²ΠΈΡΡ ΡΠ΅Π΄,
PointToPointHelper pointToPoint;ΡΡΠ·Π΄Π°Π²Π° Π² ΡΡΠ΅ΠΊΠ° Π΅ΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡ Π½Π° ΠΎΠ±Π΅ΠΊΡΠ° PointToPointHelper. ΠΡ Π³Π»Π΅Π΄Π½Π° ΡΠΎΡΠΊΠ° Π½Π° Π²ΠΈΡΠΎΠΊΠΎ Π½ΠΈΠ²ΠΎ, ΡΠ»Π΅Π΄Π½ΠΈΡΡ ΡΠ΅Π΄,
pointToPoint.SetDeviceAttribute ("DataRate", StringValue ("5Mbps"));ΠΊΠ°Π·Π²Π° Π½Π° ΠΎΠ±Π΅ΠΊΡΠ° PointToPointHelper Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° ΡΡΠΎΠΉΠ½ΠΎΡΡΡΠ° β5 Mbpsβ (ΠΏΠ΅Ρ ΠΌΠ΅Π³Π°Π±ΠΈΡΠ° Π² ΡΠ΅ΠΊΡΠ½Π΄Π°) ΠΊΠ°ΡΠΎ βDataRateΒ».
ΠΡ ΠΏΠΎ-ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½Π° Π³Π»Π΅Π΄Π½Π° ΡΠΎΡΠΊΠ°, ΡΠ΅Π΄ΡΡ βDataRateβ ΡΡΠΎΡΠ²Π΅ΡΡΡΠ²Π° Π½Π° Π°ΡΡΠΈΠ±ΡΡΠ°, PointToPointNetDevice. ΠΠΊΠΎ ΠΏΠΎΠ³Π»Π΅Π΄Π½Π΅ΡΠ΅ Doxygen Π·Π° ΠΊΠ»Π°ΡΠ° ns3::PointToPointNetDevice ΠΈ Π² Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡΡΠ° Π½Π° ΠΌΠ΅ΡΠΎΠ΄Π° GetTypeId ΡΠ΅ Π½Π°ΠΌΠ΅ΡΠΈΡΠ΅ ΡΠΏΠΈΡΡΠΊ Ρ Π°ΡΡΠΈΠ±ΡΡΠΈΡΠ΅, ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈ Π·Π° ΡΡΡΡΠΎΠΉΡΡΠ²ΠΎΡΠΎ. Π‘ΡΠ΅Π΄ ΡΡΡ ΡΠ΅ ΠΈΠΌΠ° Π°ΡΡΠΈΠ±ΡΡ βDataRateβ. ΠΠΎΠ²Π΅ΡΠ΅ΡΠΎ Π²ΠΈΠ΄ΠΈΠΌΠΈ Π·Π° ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»ΠΈΡΠ΅ ΠΎΠ±Π΅ΠΊΡΠΈ nsβ3 ΠΈΠΌΠ°Ρ ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΈ ΡΠΏΠΈΡΡΡΠΈ Ρ Π°ΡΡΠΈΠ±ΡΡΠΈ. ΠΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌΠ΅ ΡΠΎΠ·ΠΈ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΡΠΌ Π·Π° ΠΏΡΠΎΡΡΠΎΡΠΎ Π½Π°ΡΡΡΠΎΠΉΠ²Π°Π½Π΅ Π½Π° ΡΠΈΠΌΡΠ»Π°ΡΠΈΡΡΠ° Π±Π΅Π· ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠ°Π½Π΅ ΠΎΡΠ½ΠΎΠ²ΠΎ, ΠΊΠ°ΠΊΡΠΎ ΡΠ΅ Π²ΠΈΠ΄ΠΈΡΠ΅ Π² ΡΠ»Π΅Π΄Π²Π°ΡΠΈΡ ΡΠ°Π·Π΄Π΅Π».
ΠΠΎΠ΄ΠΎΠ±Π½ΠΎ Π½Π° βDataRateβ Π² PointToPointNetDevice, ΡΠ΅ Π½Π°ΠΌΠ΅ΡΠΈΡΠ΅ Π°ΡΡΠΈΠ±ΡΡ βDelayβ, ΡΠ²ΡΡΠ·Π°Π½ Ρ PointToPointChannel. Π€ΠΈΠ½Π°Π»Π½ΠΈΡΡ ΡΠ΅Π΄,
pointToPoint.SetChannelAttribute ("Delay", StringValue ("2ms"));ΠΊΠ°Π·Π²Π° PointToPointHelper ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° ΡΡΠΎΠΉΠ½ΠΎΡΡΡΠ° β2 msβ (Π΄Π²Π΅ ΠΌΠΈΠ»ΠΈΡΠ΅ΠΊΡΠ½Π΄ΠΈ) ΠΊΠ°ΡΠΎ ΡΡΠΎΠΉΠ½ΠΎΡΡ Π½Π° Π·Π°ΠΊΡΡΠ½Π΅Π½ΠΈΠ΅ΡΠΎ Π½Π° ΡΠ°Π·ΠΏΡΠΎΡΡΡΠ°Π½Π΅Π½ΠΈΠ΅ΡΠΎ ΠΏΠΎ ΠΊΠ°Π½Π°Π»Π° ΡΠΎΡΠΊΠ°-ΡΠΎΡΠΊΠ°, ΠΊΠΎΠΉΡΠΎ ΡΠΎΠΉ ΡΡΠ·Π΄Π°Π²Π° Π²ΠΏΠΎΡΠ»Π΅Π΄ΡΡΠ²ΠΈΠ΅.
NetDeviceContainer
Π ΠΌΠΎΠΌΠ΅Π½ΡΠ° Π² Π½Π°ΡΠΈΡ ΡΡΠ΅Π½Π°ΡΠΈΠΉ ΠΈΠΌΠ°ΠΌΠ΅ NodeContainer, ΠΊΠΎΠΉΡΠΎ ΡΡΠ΄ΡΡΠΆΠ° Π΄Π²Π° Π²ΡΠ·Π΅Π»Π°. ΠΠΌΠ°ΠΌΠ΅ PointToPointHelper, ΠΊΠΎΠΉΡΠΎ Π΅ ΠΏΠΎΠ΄Π³ΠΎΡΠ²Π΅Π½ Π·Π° ΡΡΠ·Π΄Π°Π²Π°Π½Π΅ Π½Π° ΠΎΠ±Π΅ΠΊΡΠΈ PointToPointNetDevices ΠΈ ΡΠ²ΡΡΠ·Π²Π°Π½Π΅ΡΠΎ ΠΈΠΌ Ρ ΠΏΠΎΠΌΠΎΡΡΠ° Π½Π° ΠΎΠ±Π΅ΠΊΡ PointToPointChannel. ΠΠΎ ΡΡΡΠΈΡ Π½Π°ΡΠΈΠ½, ΠΏΠΎ ΠΊΠΎΠΉΡΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ ΠΌΠ΅ ΠΏΠΎΠΌΠΎΡΠ½ΠΈΡ ΠΎΠ±Π΅ΠΊΡ Π½Π° ΡΠΎΠΏΠΎΠ»ΠΎΠ³ΠΈΡΡΠ° NodeContainer Π·Π° ΡΡΠ·Π΄Π°Π²Π°Π½Π΅ Π½Π° Π²ΡΠ·Π»ΠΈ, ΡΠ΅ ΠΏΠΎΠΌΠΎΠ»ΠΈΠΌ PointToPointHelper Π΄Π° ΠΈΠ·Π²ΡΡΡΠΈ Π·Π° Π½Π°Ρ ΡΠ°Π±ΠΎΡΠ°ΡΠ°, ΡΠ²ΡΡΠ·Π°Π½Π° ΡΡΡ ΡΡΠ·Π΄Π°Π²Π°Π½Π΅ΡΠΎ, Π½Π°ΡΡΡΠΎΠΉΠ²Π°Π½Π΅ΡΠΎ ΠΈ ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ°Π½Π΅ΡΠΎ Π½Π° Π½Π°ΡΠΈΡΠ΅ ΡΡΡΡΠΎΠΉΡΡΠ²Π°. ΠΡΠΆΠ΄Π°Π΅ΠΌ ΡΠ΅ ΠΎΡ ΡΠΏΠΈΡΡΠΊ Π½Π° Π²ΡΠΈΡΠΊΠΈ ΡΡΠ·Π΄Π°Π΄Π΅Π½ΠΈ ΠΎΠ±Π΅ΠΊΡΠΈ. NetDevice, Π·Π°ΡΠΎΠ²Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌΠ΅ NetDeviceContainer Π·Π° ΡΡΡ Π½ΠΎΡΠΎ ΡΡΡ ΡΠ°Π½Π΅Π½ΠΈΠ΅, ΡΠΎΡΠ½ΠΎ ΠΊΠ°ΠΊΡΠΎ ΡΠΌΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π»ΠΈ NodeContainer Π·Π° ΡΡΡ ΡΠ°Π½Π΅Π½ΠΈΠ΅ Π½Π° Π½Π°ΡΠΈΡΠ΅ Π²ΡΠ·Π»ΠΈ. Π‘Π»Π΅Π΄Π²Π°ΡΠΈΡΠ΅ Π΄Π²Π° ΡΠ΅Π΄Π° ΠΊΠΎΠ΄,
NetDeviceContainer devices;
devices = pointToPoint.Install (nodes);Π·Π°Π²ΡΡΡΠ²Π°Ρ Π½Π°ΡΡΡΠΎΠΉΠΊΠ°ΡΠ° Π½Π° ΡΡΡΡΠΎΠΉΡΡΠ²Π°ΡΠ° ΠΈ ΠΊΠ°Π½Π°Π»Π°. ΠΡΡΠ²ΠΈΡΡ ΡΠ΅Π΄ Π΄Π΅ΠΊΠ»Π°ΡΠΈΡΠ° ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ° Π·Π° ΡΡΡΡΠΎΠΉΡΡΠ²Π°, ΡΠΏΠΎΠΌΠ΅Π½Π°Ρ ΠΏΠΎ-Π³ΠΎΡΠ΅, Π° Π²ΡΠΎΡΠΈΡΡ ΠΈΠ·Π²ΡΡΡΠ²Π° ΠΎΡΠ½ΠΎΠ²Π½Π°ΡΠ° ΡΠ°Π±ΠΎΡΠ°. ΠΠ΅ΡΠΎΠ΄ΡΡ ΠΠ½ΡΡΠ°Π»ΠΈΡΠ°ΠΉΡΠ΅ ΠΎΠ±Π΅ΠΊΡ PointToPointHelper ΠΏΡΠΈΠ΅ΠΌΠ° NodeContainer ΠΊΠ°ΡΠΎ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ. ΠΡΡΡΠ΅ NetDeviceContainer Π·Π° Π²ΡΠ΅ΠΊΠΈ Π²ΡΠ·Π΅Π», ΠΊΠΎΠΉΡΠΎ Π΅ Π² NodeContainer ΡΠ΅ ΡΡΠ·Π΄Π°Π²Π° (Π·Π° ΡΠΎΡΠΊΠ°-ΡΠΎΡΠΊΠ° ΡΡΡΠ±Π²Π° Π΄Π° ΠΈΠΌΠ° ΡΠΎΡΠ½ΠΎ Π΄Π²Π΅) PointToPointNetDevice ΡΠ΅ ΡΡΠ·Π΄Π°Π²Π° ΠΈ ΡΠ΅ Π·Π°ΠΏΠ°Π·Π²Π° Π² ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ° Π·Π° ΡΡΡΡΠΎΠΉΡΡΠ²Π°. PointToPointChannel ΡΠ΅ ΡΡΠ·Π΄Π°Π²Π°, ΠΈ ΠΊΡΠΌ Π½Π΅Π³ΠΎ ΡΠ΅ ΠΏΡΠΈΡΡΠ΅Π΄ΠΈΠ½ΡΠ²Π°Ρ Π΄Π²Π° PointToPointNetDevices. Π‘Π»Π΅Π΄ ΡΡΠ·Π΄Π°Π²Π°Π½Π΅ΡΠΎ Π½Π° ΠΎΠ±Π΅ΠΊΡΠΈΡΠ΅, Π°ΡΡΠΈΠ±ΡΡΠΈΡΠ΅, ΡΡΡ ΡΠ°Π½Π΅Π½ΠΈ Π² PointToPointHelper, ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ Π·Π° ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠ°Π½Π΅ Π½Π° ΡΡΠΎΡΠ²Π΅ΡΠ½ΠΈΡΠ΅ Π°ΡΡΠΈΠ±ΡΡΠΈ Π² ΡΡΠ·Π΄Π°Π΄Π΅Π½ΠΈΡΠ΅ ΠΎΠ±Π΅ΠΊΡΠΈ.
Π‘Π»Π΅Π΄ ΠΈΠ·Π²ΠΈΠΊΠ²Π°Π½Π΅ΡΠΎ Π½Π° pointToPoint.Install (nodes) ΠΈΠΌΠ°ΠΌΠ΅ Π΄Π²Π° Π²ΡΠ·Π΅Π»Π°, Π²ΡΠ΅ΠΊΠΈ Ρ ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ°Π½ΠΎ ΠΌΡΠ΅ΠΆΠΎΠ²ΠΎ ΡΡΡΡΠΎΠΉΡΡΠ²ΠΎ βΡΠΎΡΠΊΠ°-ΡΠΎΡΠΊΠ°β ΠΈ Π΅Π΄ΠΈΠ½ ΠΊΠ°Π½Π°Π» βΡΠΎΡΠΊΠ°-ΡΠΎΡΠΊΠ°β ΠΌΠ΅ΠΆΠ΄Ρ ΡΡΡ . Π Π΄Π²Π΅ΡΠ΅ ΡΡΡΡΠΎΠΉΡΡΠ²Π° ΡΠ΅ Π±ΡΠ΄Π°Ρ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠΈΡΠ°Π½ΠΈ Π΄Π° ΠΏΡΠ΅Π΄Π°Π²Π°Ρ Π΄Π°Π½Π½ΠΈ ΡΡΡ ΡΠΊΠΎΡΠΎΡΡ ΠΎΡ ΠΏΠ΅Ρ ΠΌΠ΅Π³Π°Π±ΠΈΡΠ° Π² ΡΠ΅ΠΊΡΠ½Π΄Π° Ρ Π·Π°ΠΊΡΡΠ½Π΅Π½ΠΈΠ΅ ΠΏΠΎ ΠΊΠ°Π½Π°Π»Π° ΠΎΡ Π΄Π²Π΅ ΠΌΠΈΠ»ΠΈΡΠ΅ΠΊΡΠ½Π΄ΠΈ.
InternetStackHelper
Π‘Π΅Π³Π° ΠΈΠΌΠ°ΠΌΠ΅ Π½Π°ΡΡΡΠΎΠ΅Π½ΠΈ Π²ΡΠ·Π»ΠΈ ΠΈ ΡΡΡΡΠΎΠΉΡΡΠ²Π°, Π½ΠΎ Π½Π° Π½Π°ΡΠΈΡΠ΅ Π²ΡΠ·Π»ΠΈ Π½Π΅ ΡΠ° ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ°Π½ΠΈ ΡΡΠ΅ΠΊΠΎΠ²Π΅ ΠΎΡ ΠΏΡΠΎΡΠΎΠΊΠΎΠ»ΠΈ. Π‘Π»Π΅Π΄Π²Π°ΡΠΈΡΠ΅ Π΄Π²Π° ΡΠ΅Π΄Π° ΠΊΠΎΠ΄ ΡΠ΅ ΡΠ΅ ΠΏΠΎΠ³ΡΠΈΠΆΠ°Ρ Π·Π° ΡΠΎΠ²Π°.
InternetStackHelper stack;
stack.Install (nodes);InternetStackHelper ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ²Π° ΡΠΎΠΏΠΎΠ»ΠΎΠ³ΠΈΡΠ΅Π½ ΠΏΠΎΠΌΠΎΡΠ½ΠΈΠΊ Π·Π° ΠΈΠ½ΡΠ΅ΡΠ½Π΅Ρ ΡΡΠ΅ΠΊΠΎΠ²Π΅, ΠΏΠΎΠ΄ΠΎΠ±Π΅Π½ Π½Π° PointToPointHelper Π·Π° Π΄Π²ΠΎΡΠΎΡΠΊΠΎΠ²ΠΈ ΠΌΡΠ΅ΠΆΠΎΠ²ΠΈ ΡΡΡΡΠΎΠΉΡΡΠ²Π°. ΠΠ΅ΡΠΎΠ΄ΡΡ ΠΠ½ΡΡΠ°Π»ΠΈΡΠ°ΠΉΡΠ΅ ΠΏΡΠΈΠ΅ΠΌΠ° NodeContainer ΠΊΠ°ΡΠΎ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ. ΠΡΠΈ ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ ΡΠΎΠΉ ΡΠ΅ ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ° ΠΈΠ½ΡΠ΅ΡΠ½Π΅Ρ ΡΡΠ΅ΠΊΠ° (TCP, UDP, IP ΠΈ Ρ.Π½.) Π½Π° Π²ΡΠ΅ΠΊΠΈ Π²ΡΠ·Π΅Π» Π² ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ°.
Ipv4AddressHelper
Π‘Π»Π΅Π΄ ΡΠΎΠ²Π° ΡΡΡΠ±Π²Π° Π΄Π° ΡΠ²ΡΡΠΆΠ΅ΠΌ Π½Π°ΡΠΈΡΠ΅ ΡΡΡΡΠΎΠΉΡΡΠ²Π° Ρ IP Π°Π΄ΡΠ΅ΡΠΈ. ΠΡΠ΅Π΄ΠΎΡΡΠ°Π²ΡΠΌΠ΅ ΡΠΎΠΏΠΎΠ»ΠΎΠ³ΠΈΡΠ΅Π½ ΠΏΠΎΠΌΠΎΡΠ½ΠΈΠΊ Π·Π° ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π½Π° ΡΠ°Π·ΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ΡΠΎ Π½Π° IP Π°Π΄ΡΠ΅ΡΠΈ. ΠΠ΄ΠΈΠ½ΡΡΠ²Π΅Π½ΠΈΡΡ Π²ΠΈΠ΄ΠΈΠΌ Π·Π° ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»Ρ API Π΅ Π·Π°Π΄Π°Π²Π°Π½Π΅ΡΠΎ Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅Π½ IP Π°Π΄ΡΠ΅Ρ ΠΈ ΠΌΠ°ΡΠΊΠ° Π½Π° ΠΌΡΠ΅ΠΆΠ°ΡΠ°, ΠΊΠΎΠΈΡΠΎ Π΄Π° ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ ΠΏΡΠΈ ΠΈΠ·Π²ΡΡΡΠ²Π°Π½Π΅ΡΠΎ Π½Π° Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»Π½ΠΎΡΠΎ ΡΠ°Π·ΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Π½Π° Π°Π΄ΡΠ΅ΡΠΈ (ΡΠΎΠ²Π° ΡΡΠ°Π²Π° Π½Π° ΠΏΠΎ-Π½ΠΈΡΠΊΠΎ Π½ΠΈΠ²ΠΎ Π² ΠΏΠΎΠΌΠΎΡΠ½ΠΈΠΊΠ°). Π‘Π»Π΅Π΄Π²Π°ΡΠΈΡΠ΅ Π΄Π²Π° ΡΠ΅Π΄Π° ΠΊΠΎΠ΄ Π² Π½Π°ΡΠΈΡ ΠΏΡΠΈΠΌΠ΅ΡΠ΅Π½ ΡΠΊΡΠΈΠΏΡ first.cc,
Ipv4AddressHelper address;
address.SetBase ("10.1.1.0", "255.255.255.0");Π΄Π΅ΠΊΠ»Π°ΡΠΈΡΠ°Ρ ΠΏΠΎΠΌΠΎΡΠ΅Π½ ΠΎΠ±Π΅ΠΊΡ Π°Π΄ΡΠ΅ΡΠ° ΠΈ ΠΌΡ ΠΊΠ°Π·Π²Π°, ΡΠ΅ ΡΡΡΠ±Π²Π° Π΄Π° Π·Π°ΠΏΠΎΡΠ½Π΅ Π΄Π° ΡΠ°Π·ΠΊΡΠΈΠ²Π° IP Π°Π΄ΡΠ΅ΡΠΈ ΠΎΡ ΠΌΡΠ΅ΠΆΠ°ΡΠ° 10.1.1.0, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΉΠΊΠΈ ΠΌΠ°ΡΠΊΠ° 255.255.255.0 Π·Π° ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅. ΠΠΎ ΠΏΠΎΠ΄ΡΠ°Π·Π±ΠΈΡΠ°Π½Π΅ ΡΠ°Π·ΠΊΡΠΈΡΠΈΡΠ΅ Π°Π΄ΡΠ΅ΡΠΈ ΡΠ΅ Π·Π°ΠΏΠΎΡΠ²Π°Ρ ΠΎΡ Π΅Π΄ΠΈΠ½ΠΈΡΠ° ΠΈ ΡΠ΅ Π½Π°ΡΠ°ΡΡΠ²Π°Ρ ΠΌΠΎΠ½ΠΎΡΠΎΠ½Π½ΠΎ, ΡΠ°ΠΊΠ° ΡΠ΅ ΠΏΡΡΠ²ΠΈΡΡ Π°Π΄ΡΠ΅Ρ, ΡΠ°Π·ΠΊΡΠΈΡ ΠΎΡ ΡΠ°Π·ΠΈ Π±Π°Π·Π°, ΡΠ΅ Π±ΡΠ΄Π΅ 10.1.1.1, ΡΠ»Π΅Π΄ ΡΠΎΠ²Π° 10.1.1.2 ΠΈ Ρ.Π½. ΠΡΡΡΠ½ΠΎΡΡ, Π½Π° Π½ΠΈΡΠΊΠΎ Π½ΠΈΠ²ΠΎ ΡΠΈΡΡΠ΅ΠΌΠ°ΡΠ° nsβ3 Π·Π°ΠΏΠΎΠΌΠ½Ρ Π²ΡΠΈΡΠΊΠΈ ΡΠ°Π·ΠΊΡΠΈΡΠΈ IP Π°Π΄ΡΠ΅ΡΠΈ ΠΈ Π³Π΅Π½Π΅ΡΠΈΡΠ° ΡΠ°ΡΠ°Π»Π½Π° Π³ΡΠ΅ΡΠΊΠ°, Π°ΠΊΠΎ ΡΠ»ΡΡΠ°ΠΉΠ½ΠΎ ΡΡΠ·Π΄Π°Π΄Π΅ΡΠ΅ ΡΠΈΡΡΠ°ΡΠΈΡ, ΠΏΡΠΈ ΠΊΠΎΡΡΠΎ Π΅Π΄ΠΈΠ½ ΠΈ ΡΡΡ Π°Π΄ΡΠ΅Ρ Π±ΡΠ΄Π΅ Π³Π΅Π½Π΅ΡΠΈΡΠ°Π½ Π΄Π²Π° ΠΏΡΡΠΈ (ΠΌΠ΅ΠΆΠ΄Ρ Π΄ΡΡΠ³ΠΎΡΠΎ, ΡΠ°Π·ΠΈ Π³ΡΠ΅ΡΠΊΠ° Π΅ ΡΡΡΠ΄Π½Π° Π·Π° ΠΎΡΡΡΡΠ°Π½ΡΠ²Π°Π½Π΅).
Π‘Π»Π΅Π΄Π²Π°ΡΠΈΡΡ ΡΠ΅Π΄ ΠΊΠΎΠ΄,
Ipv4InterfaceContainer interfaces = address.Assign (devices);ΠΈΠ·ΠΏΡΠ»Π½ΡΠ²Π° Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»Π½ΠΎΡΠΎ Π½Π°Π·Π½Π°ΡΠ°Π²Π°Π½Π΅ Π½Π° Π°Π΄ΡΠ΅ΡΠ°. Π nsβ3 ΡΠ²ΡΡΠ·Π²Π°ΠΌΠ΅ IP Π°Π΄ΡΠ΅ΡΠ° Ρ ΡΡΡΡΠΎΠΉΡΡΠ²ΠΎΡΠΎ, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΉΠΊΠΈ ΠΎΠ±Π΅ΠΊΡΠ° Ipv4Interface. ΠΠ°ΠΊΡΠΎ ΠΏΠΎΠ½ΡΠΊΠΎΠ³Π° Π½ΠΈ Π΅ Π½ΡΠΆΠ΅Π½ ΡΠΏΠΈΡΡΠΊ Π½Π° ΠΌΡΠ΅ΠΆΠΎΠ²ΠΈΡΠ΅ ΡΡΡΡΠΎΠΉΡΡΠ²Π°, ΡΡΠ·Π΄Π°Π΄Π΅Π½ΠΈ ΠΎΡ ΠΏΠΎΠΌΠΎΡΠ½ΠΈΠΊΠ° Π·Π° ΠΏΠΎ-Π½Π°ΡΠ°ΡΡΡΠ½Π° ΡΠΏΠΎΡΡΠ΅Π±Π°, ΠΏΠΎΠ½ΡΠΊΠΎΠ³Π° Π½ΠΈ Π΅ Π½ΡΠΆΠ΅Π½ ΠΈ ΡΠΏΠΈΡΡΠΊ Π½Π° ΠΎΠ±Π΅ΠΊΡΠΈΡΠ΅, Ipv4Interface. Ipv4InterfaceContainer ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Ρ ΡΠ°Π·ΠΈ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»Π½ΠΎΡΡ.
Π‘ΡΠ·Π΄Π°Π΄ΠΎΡ ΠΌΠ΅ ΠΌΡΠ΅ΠΆΠ° ΡΠΎΡΠΊΠ°-ΡΠΎΡΠΊΠ°, Ρ ΡΡΡΠ°Π½ΠΎΠ²Π΅Π½ΠΈ ΡΡΠ΅ΠΊΠΎΠ²Π΅ ΠΈ Π½Π°Π·Π½Π°ΡΠ΅Π½ΠΈ IP Π°Π΄ΡΠ΅ΡΠΈ. Π‘Π΅Π³Π° Π½ΠΈ ΡΡΡΠ±Π²Π°Ρ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π·Π° Π³Π΅Π½Π΅ΡΠ°ΡΠΈΡ Π½Π° ΡΡΠ°ΡΠΈΠΊ Π½Π° Π²ΡΠ΅ΠΊΠΈ Π²ΡΠ·Π΅Π».
4.2.7 ΠΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΡΠΎ
ΠΡΠ΅ Π΅Π΄Π½Π° ΠΎΡ ΠΎΡΠ½ΠΎΠ²Π½ΠΈΡΠ΅ Π°Π±ΡΡΡΠ°ΠΊΡΠΈΠΈ Π½Π° ΡΠΈΡΡΠ΅ΠΌΠ°ΡΠ° nsβ3 Π΅ ΠΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ (ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅). Π ΡΠΎΠ·ΠΈ ΡΡΠ΅Π½Π°ΡΠΈΠΉ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌΠ΅ Π΄Π²Π΅ ΡΠΏΠ΅ΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ Π½Π° ΠΎΡΠ½ΠΎΠ²Π½ΠΈΡ ΠΊΠ»Π°Ρ ΠΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ nsβ3, Π½Π°ΡΠ΅ΡΠ΅Π½ΠΈ UdpEchoServerApplication ΠΈ UdpEchoClientApplication. ΠΠ°ΠΊΡΠΎ ΠΈ Π² ΠΏΡΠ΅Π΄ΠΈΡΠ½ΠΈΡΠ΅ ΡΠ»ΡΡΠ°ΠΈ, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌΠ΅ ΠΏΠΎΠΌΠΎΡΠ½ΠΈ ΠΎΠ±Π΅ΠΊΡΠΈ Π·Π° ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠΈΡΠ°Π½Π΅ ΠΈ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π½Π° ΠΎΡΠ½ΠΎΠ²Π½ΠΈΡΠ΅ ΠΎΠ±Π΅ΠΊΡΠΈ. Π’ΡΠΊ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌΠ΅ UdpEchoServerHelper ΠΈ UdpEchoClientHelperΠΎΠ±Π΅ΠΊΡΠΈ, Π·Π° Π΄Π° ΡΠ»Π΅ΡΠ½ΠΈΠΌ ΠΆΠΈΠ²ΠΎΡΠ° ΡΠΈ.
UdpEchoServerHelper
Π‘Π»Π΅Π΄Π²Π°ΡΠΈΡΠ΅ ΡΠ΅Π΄ΠΎΠ²Π΅ ΠΊΠΎΠ΄ Π² ΠΏΡΠΈΠΌΠ΅ΡΠ° Π½ΠΈ ΡΠΊΡΠΈΠΏΡ first.cc ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ Π·Π° Π½Π°ΡΡΡΠΎΠΉΠΊΠ° Π½Π° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΡΠΎ UDP Echo Server Π½Π° Π΅Π΄ΠΈΠ½ ΠΎΡ Π²ΡΠ·Π»ΠΈΡΠ΅, ΠΊΠΎΠΈΡΠΎ ΡΡΠ·Π΄Π°Π΄ΠΎΡ ΠΌΠ΅ ΠΏΠΎ-ΡΠ°Π½ΠΎ.
UdpEchoServerHelper echoServer (9);
ApplicationContainer serverApps = echoServer.Install (nodes.Get (1));
serverApps.Start (Seconds (1.0));
serverApps.Stop (Seconds (10.0));ΠΡΡΠ²ΠΈΡΡ ΡΠ΅Π΄ ΠΊΠΎΠ΄ Π² ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π΅Π½ΠΈΡ ΡΡΠ°Π³ΠΌΠ΅Π½Ρ ΡΡΠ·Π΄Π°Π²Π° UdpEchoServerHelper. ΠΠ°ΠΊΡΠΎ ΠΎΠ±ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΎ, ΡΠΎΠ²Π° Π½Π΅ Π΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΡΠ°ΠΌΠΎ ΠΏΠΎ ΡΠ΅Π±Π΅ ΡΠΈ, Π° ΠΎΠ±Π΅ΠΊΡ, ΠΊΠΎΠΉΡΠΎ Π½ΠΈ ΠΏΠΎΠΌΠ°Π³Π° Π΄Π° ΡΡΠ·Π΄Π°Π²Π°ΠΌΠ΅ ΡΠ΅Π°Π»Π½ΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ. ΠΠ΄Π½ΠΎ ΠΎΡ Π½Π°ΡΠΈΡΠ΅ ΡΠΏΠΎΡΠ°Π·ΡΠΌΠ΅Π½ΠΈΡ Π΅ Π΄Π° ΠΏΡΠ΅Π΄Π°Π²Π°ΠΌΠ΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΈΡΠ΅ Π°ΡΡΠΈΠ±ΡΡΠΈ Π½Π° ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΠ° Π½Π° ΠΏΠΎΠΌΠΎΡΠ½ΠΈΡ ΠΎΠ±Π΅ΠΊΡ. Π ΡΠΎΠ·ΠΈ ΡΠ»ΡΡΠ°ΠΉ ΠΏΠΎΠΌΠΎΡΠ½ΠΈΠΊΡΡ Π½Π΅ ΠΌΠΎΠΆΠ΅ Π΄Π° Π½Π°ΠΏΡΠ°Π²ΠΈ Π½ΠΈΡΠΎ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ, Π°ΠΊΠΎ Π½Π΅ ΠΏΠΎΠ»ΡΡΠΈ Π½ΠΎΠΌΠ΅ΡΠ° Π½Π° ΠΏΠΎΡΡΠ°, Π½Π° ΠΊΠΎΠΉΡΠΎ ΡΡΡΠ²ΡΡΡΡ ΡΠ΅ ΠΎΡΠ°ΠΊΠ²Π° ΠΏΠ°ΠΊΠ΅ΡΠΈ; ΡΠΎΠ·ΠΈ Π½ΠΎΠΌΠ΅Ρ ΡΡΡΠΎ ΡΡΡΠ±Π²Π° Π΄Π° Π±ΡΠ΄Π΅ ΠΈΠ·Π²Π΅ΡΡΠ΅Π½ Π½Π° ΠΊΠ»ΠΈΠ΅Π½ΡΠ°. Π ΡΠΎΠ·ΠΈ ΡΠ»ΡΡΠ°ΠΉ ΠΏΡΠ΅Π΄Π°Π²Π°ΠΌΠ΅ Π½Π° ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΠ° Π½Π° ΠΏΠΎΠΌΠΎΡΠ½ΠΈΠΊΠ° Π½ΠΎΠΌΠ΅ΡΠ° Π½Π° ΠΏΠΎΡΡΠ°. ΠΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΡΡ, ΠΎΡ ΡΠ²ΠΎΡ ΡΡΡΠ°Π½Π°, ΠΏΡΠΎΡΡΠΎ ΠΈΠ·ΠΏΡΠ»Π½ΡΠ²Π° SetAttribute Ρ ΠΏΡΠ΅Π΄Π°Π΄Π΅Π½Π°ΡΠ° ΡΡΠΎΠΉΠ½ΠΎΡΡ. ΠΠΎ-ΠΊΡΡΠ½ΠΎ, ΠΏΡΠΈ ΠΆΠ΅Π»Π°Π½ΠΈΠ΅, Ρ ΠΏΠΎΠΌΠΎΡΡΠ° Π½Π° SetAttribute ΡΠ΅ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° Π·Π°Π΄Π°Π΄Π΅ΡΠ΅ Π΄ΡΡΠ³Π° ΡΡΠΎΠΉΠ½ΠΎΡΡ Π½Π° Π°ΡΡΠΈΠ±ΡΡΠ° 'ΠΠΎΡΡ'.
ΠΠΎΠ΄ΠΎΠ±Π½ΠΎ Π½Π° ΠΌΠ½ΠΎΠ³ΠΎ Π΄ΡΡΠ³ΠΈ ΠΏΠΎΠΌΠΎΡΠ½ΠΈ ΠΎΠ±Π΅ΠΊΡΠΈ, ΠΎΠ±Π΅ΠΊΡΡΡ UdpEchoServerHelper ΠΈΠΌΠ° ΠΌΠ΅ΡΠΎΠ΄ ΠΠ½ΡΡΠ°Π»ΠΈΡΠ°ΠΉΡΠ΅. ΠΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ΡΠΎ Π½Π° ΡΠΎΠ·ΠΈ ΠΌΠ΅ΡΠΎΠ΄ Π²ΡΡΡΠ½ΠΎΡΡ Π²ΠΎΠ΄ΠΈ Π΄ΠΎ ΡΡΠ·Π΄Π°Π²Π°Π½Π΅ΡΠΎ Π½Π° ΠΎΡΠ½ΠΎΠ²Π½ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π·Π° Π΅Ρ ΠΎ-ΡΡΡΠ²ΡΡ, ΠΊΠΎΠ΅ΡΠΎ ΡΠ΅ ΡΠ²ΡΡΠ·Π²Π° Ρ Π²ΡΠ·Π΅Π». ΠΠ½ΡΠ΅ΡΠ΅ΡΠ½ΠΎ Π΅, ΡΠ΅ ΠΌΠ΅ΡΠΎΠ΄ΡΡ ΠΠ½ΡΡΠ°Π»ΠΈΡΠ°ΠΉΡΠ΅ ΠΏΡΠΈΠ΅ΠΌΠ° NodeContainer ΠΊΠ°ΡΠΎ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ, ΠΊΠ°ΠΊΡΠΎ ΠΈ Π΄ΡΡΠ³ΠΈΡΠ΅ ΠΠ½ΡΡΠ°Π»ΠΈΡΠ°ΠΉΡΠ΅ ΠΌΠ΅ΡΠΎΠ΄ΠΈ, ΠΊΠΎΠΈΡΠΎ Π²ΠΈΠ΄ΡΡ ΠΌΠ΅.
ΠΠ΅ΡΠ²Π½ΠΎΡΠΎ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΡΠ²Π°Π½Π΅ Π½Π° C++, ΡΠ°Π±ΠΎΡΠ΅ΡΠΎ ΡΡΠΊ, ΠΏΡΠΈΠ΅ΠΌΠ° ΡΠ΅Π·ΡΠ»ΡΠ°ΡΠ° ΠΎΡ ΠΌΠ΅ΡΠΎΠ΄Π° node.Get (1) (ΠΊΠΎΠΉΡΠΎ Π²ΡΡΡΠ° ΡΠΌΠ°ΡΡ ΡΠΊΠ°Π·Π°ΡΠ΅Π» ΠΊΡΠΌ ΠΎΠ±Π΅ΠΊΡΠ° Π½Π° Π²ΡΠ·Π΅Π» β Ptr) ΠΈ Π³ΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Π² ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΠ° Π·Π° Π°Π½ΠΎΠ½ΠΈΠΌΠ½ΠΈΡ ΠΎΠ±Π΅ΠΊΡ NodeContainer, ΠΊΠΎΠΉΡΠΎ ΡΠ»Π΅Π΄ ΡΠΎΠ²Π° ΡΠ΅ ΠΏΡΠ΅Π΄Π°Π²Π° Π½Π° ΠΌΠ΅ΡΠΎΠ΄Π° ΠΠ½ΡΡΠ°Π»ΠΈΡΠ°ΠΉΡΠ΅. ΠΠΊΠΎ Π½Π΅ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΠ΅ Π² C++ ΠΊΠΎΠ΄Π°, ΠΌΠ΅ΡΠΎΠ΄ΡΡ Ρ ΠΊΠΎΡ ΡΠΈΠ³Π½Π°ΡΡΡΠ° ΡΠ΅ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠ° ΠΈ ΠΈΠ·ΠΏΡΠ»Π½ΡΠ²Π°, ΡΡΡΡΠ΅ΡΠ΅ ΡΡΠ΅Π΄ Π½Π΅ΡΠ²Π½ΠΈΡΠ΅ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΡΠ²Π°Π½ΠΈΡ.
Π‘Π΅Π³Π° Π²ΠΈΠΆΠ΄Π°ΠΌΠ΅, ΡΠ΅ echoServer.Install ΡΠ΅ ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΡΠΎ UdpEchoServerApplication Π½Π° Π½Π°ΠΌΠ΅ΡΠ΅Π½ΠΈΡ Π² NodeContainer, ΠΊΠΎΠΉΡΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌΠ΅ Π·Π° ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π½Π° Π½Π°ΡΠΈΡΠ΅ Π²ΡΠ·Π»ΠΈ, Π²ΡΠ·Π΅Π» Ρ ΠΈΠ½Π΄Π΅ΠΊΡ 1. ΠΠ΅ΡΠΎΠ΄ΡΡ ΠΠ½ΡΡΠ°Π»ΠΈΡΠ°ΠΉΡΠ΅ ΡΠ΅ Π²ΡΡΠ½Π΅ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅Ρ, ΠΊΠΎΠΉΡΠΎ ΡΡΠ΄ΡΡΠΆΠ° ΡΠΊΠ°Π·Π°ΡΠ΅Π»ΠΈ ΠΊΡΠΌ Π²ΡΠΈΡΠΊΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ (Π² ΡΠΎΠ·ΠΈ ΡΠ»ΡΡΠ°ΠΉ Π΅Π΄Π½ΠΎ, ΡΡΠΉ ΠΊΠ°ΡΠΎ ΠΏΡΠ΅Π΄Π°Π΄ΠΎΡ ΠΌΠ΅ Π°Π½ΠΎΠ½ΠΈΠΌΠ΅Π½ NodeContainer, ΡΡΠ΄ΡΡΠΆΠ°Ρ Π΅Π΄ΠΈΠ½ Π²ΡΠ·Π΅Π»), ΡΡΠ·Π΄Π°Π΄Π΅Π½ ΠΎΡ ΠΏΠΎΠΌΠΎΡΠ½ΠΈΠΊΠ°.
ΠΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡΡΠ° ΡΡΡΠ±Π²Π° Π΄Π° Π·Π°Π΄Π°Π΄Π°Ρ ΠΌΠΎΠΌΠ΅Π½ΡΠ° Π·Π° ΡΡΠ°ΡΡΠΈΡΠ°Π½Π΅ Π½Π° Π³Π΅Π½Π΅ΡΠΈΡΠ°Π½Π΅ Π½Π° ΡΡΠ°ΡΠΈΠΊ 'start' ΠΈ ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ Π½Π°Π»ΠΎΠΆΠΈ Π΄ΠΎΠΏΡΠ»Π½ΠΈΡΠ΅Π»Π½ΠΎ Π΄Π° Π·Π°Π΄Π°Π΄Π°Ρ Π²ΡΠ΅ΠΌΠ΅ΡΠΎ, ΠΊΠΎΠ³Π°ΡΠΎ Π΄Π° ΡΠΏΡΠ΅ 'stop'.ΠΡΠ΅Π΄ΠΎΡΡΠ°Π²ΡΠΌΠ΅ ΠΈ Π΄Π²Π΅ΡΠ΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΈ. Π’Π΅Π·ΠΈ Π²ΡΠ΅ΠΌΠ΅Π½Π° ΡΠ΅ Π·Π°Π΄Π°Π²Π°Ρ Ρ ΠΏΠΎΠΌΠΎΡΡΠ° Π½Π° ΠΌΠ΅ΡΠΎΠ΄ΠΈΡΠ΅ ApplicationContainer Start ΠΈ Stop. Π’Π΅Π·ΠΈ ΠΌΠ΅ΡΠΎΠ΄ΠΈ ΠΏΡΠΈΠ΅ΠΌΠ°Ρ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΈ ΠΎΡ ΡΠΈΠΏ ΠΡΠ΅ΠΌΠ΅. Π ΡΠΎΠ·ΠΈ ΡΠ»ΡΡΠ°ΠΉ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌΠ΅ ΡΠ²Π½Π° ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»Π½ΠΎΡΡ ΠΎΡ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΡΠ²Π°Π½ΠΈΡ C++, Π·Π° Π΄Π° Π²Π·Π΅ΠΌΠ΅ΠΌ C++ double 1.0 ΠΈ Π΄Π° Π³ΠΎ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΡΠ²Π°ΡΠ΅ Π² ΠΎΠ±Π΅ΠΊΡ tnsβ3 Time, ΠΊΠΎΠΉΡΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° ΠΎΠ±Π΅ΠΊΡ Seconds Π·Π° ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΡΠ²Π°Π½Π΅ Π² ΡΠ΅ΠΊΡΠ½Π΄ΠΈ. ΠΠΎΠΌΠ½Π΅ΡΠ΅, ΡΠ΅ ΠΏΡΠ°Π²ΠΈΠ»Π°ΡΠ° Π·Π° ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΡΠ²Π°Π½Π΅ ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΠΊΠΎΠ½ΡΡΠΎΠ»ΠΈΡΠ°Ρ ΠΎΡ Π°Π²ΡΠΎΡΠ° Π½Π° ΠΌΠΎΠ΄Π΅Π»Π°, Π° C++ ΠΈΠΌΠ° ΡΠ²ΠΎΠΈ ΡΠΎΠ±ΡΡΠ²Π΅Π½ΠΈ ΠΏΡΠ°Π²ΠΈΠ»Π°, ΡΠ°ΠΊΠ° ΡΠ΅ Π½Π΅ Π²ΠΈΠ½Π°Π³ΠΈ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΡΠ°Π·ΡΠΈΡΠ°ΡΠ΅ Π½Π° ΡΠΎΠ²Π°, ΡΠ΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΈΡΠ΅ ΡΠ΅ ΡΠ΅ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΡΠ²Π°Ρ ΡΠ°ΠΊΠ°, ΠΊΠ°ΠΊΡΠΎ ΠΎΡΠ°ΠΊΠ²Π°ΡΠ΅. ΠΠ²Π΅ ΡΡΡΠΎΠΊΠΈ,
serverApps.Start (Seconds (1.0));
serverApps.Stop (Seconds (10.0));ΡΠ΅ Π΄ΠΎΠ²Π΅Π΄Π΅ Π΄ΠΎ ΡΠ°ΠΊΡΠ°, ΡΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΡΠΎ Π·Π° Π΅Ρ ΠΎ-ΡΡΡΠ²ΡΡ ΡΠ΅ ΡΠ΅ ΡΡΠ°ΡΡΠΈΡΠ° (Π²ΠΊΠ»ΡΡΠΈ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ½ΠΎ) ΡΠ»Π΅Π΄ Π΅Π΄Π½Π° ΡΠ΅ΠΊΡΠ½Π΄Π° ΡΠ»Π΅Π΄ Π½Π°ΡΠ°Π»ΠΎΡΠΎ Π½Π° ΡΠΈΠΌΡΠ»Π°ΡΠΈΡΡΠ° ΠΈ ΡΠ΅ ΡΠΏΡΠ΅ (ΠΈΠ·ΠΊΠ»ΡΡΠΈ) ΡΠ»Π΅Π΄ Π΄Π΅ΡΠ΅Ρ ΡΠ΅ΠΊΡΠ½Π΄ΠΈ ΡΠΈΠΌΡΠ»Π°ΡΠΈΡ. ΠΠΎΡΠ°Π΄ΠΈ ΡΠΎΠ²Π°, ΡΠ΅ ΠΎΠ±ΡΠ²ΠΈΡ ΠΌΠ΅ ΡΡΠ±ΠΈΡΠΈΠ΅ Π½Π° ΡΠΈΠΌΡΠ»Π°ΡΠΈΡΡΠ° (ΡΡΠ±ΠΈΡΠΈΠ΅ Π·Π° ΡΠΏΠΈΡΠ°Π½Π΅ Π½Π° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΡΠΎ), ΠΊΠΎΠ΅ΡΠΎ ΡΠ΅ Π±ΡΠ΄Π΅ ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΎ ΡΠ»Π΅Π΄ Π΄Π΅ΡΠ΅Ρ ΡΠ΅ΠΊΡΠ½Π΄ΠΈ, ΡΠ΅ Π±ΡΠ΄Π΅ ΡΠΈΠΌΡΠ»ΠΈΡΠ°Π½ΠΎ Π½Π΅ ΠΏΠΎ-ΠΌΠ°Π»ΠΊΠΎ ΠΎΡ Π΄Π΅ΡΠ΅Ρ ΡΠ΅ΠΊΡΠ½Π΄ΠΈ ΡΠ°Π±ΠΎΡΠ° Π½Π° ΠΌΡΠ΅ΠΆΠ°ΡΠ°.
UdpEchoClientHelper
ΠΠ»ΠΈΠ΅Π½ΡΡΠΊΠΎΡΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ echo ΡΠ΅ Π½Π°ΡΡΡΠΎΠΉΠ²Π° ΠΏΠΎ Π½Π°ΡΠΈΠ½, ΠΏΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ ΠΈΠ΄Π΅Π½ΡΠΈΡΠ΅Π½ Π½Π° ΡΡΡΠ²ΡΡΠ°. ΠΠΌΠ° ΠΎΡΠ½ΠΎΠ²Π΅Π½ ΠΎΠ±Π΅ΠΊΡ UdpEchoClientApplication, ΠΊΠΎΠΉΡΠΎ ΡΠ΅ ΡΠΏΡΠ°Π²Π»ΡΠ²Π° ΠΎΡ
UdpEchoClientHelper.
UdpEchoClientHelper echoClient (interfaces.GetAddress (1), 9);
echoClient.SetAttribute ("MaxPackets", UintegerValue (1));
echoClient.SetAttribute ("Interval", TimeValue (Seconds (1.0)));
echoClient.SetAttribute ("PacketSize", UintegerValue (1024));
ApplicationContainer clientApps = echoClient.Install (nodes.Get (0));
clientApps.Start (Seconds (2.0));
clientApps.Stop (Seconds (10.0));;ΠΡΠΏΡΠ΅ΠΊΠΈ ΡΠΎΠ²Π°, Π·Π° Π΅Ρ ΠΎ-ΠΊΠ»ΠΈΠ΅Π½ΡΠ° ΡΡΡΠ±Π²Π° Π΄Π° Π·Π°Π΄Π°Π΄Π΅ΠΌ ΠΏΠ΅Ρ ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ Π°ΡΡΠΈΠ±ΡΡΠ°. ΠΡΡΠ²ΠΈΡΠ΅ Π΄Π²Π° Π°ΡΡΠΈΠ±ΡΡΠ° ΡΠ΅ Π·Π°Π΄Π°Π²Π°Ρ ΠΏΠΎ Π²ΡΠ΅ΠΌΠ΅ Π½Π° ΡΡΠ·Π΄Π°Π²Π°Π½Π΅ΡΠΎ UdpEchoClientHelper. ΠΠΈΠ΅ ΠΏΡΠ΅Π΄Π°Π²Π°ΠΌΠ΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΈΡΠ΅, ΠΊΠΎΠΈΡΠΎ ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ (Π² ΠΏΠΎΠΌΠΎΡΠ½ΠΈΠΊΠ°) Π·Π° Π·Π°Π΄Π°Π²Π°Π½Π΅ Π½Π° Π°ΡΡΠΈΠ±ΡΡΠΈΡΠ΅ "RemoteAddress" ΠΈ "RemotePort" Π² ΡΡΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΠ΅ Ρ Π½Π°ΡΠ΅ΡΠΎ ΡΠΏΠΎΡΠ°Π·ΡΠΌΠ΅Π½ΠΈΠ΅ Π·Π° ΠΏΡΠ΅Π΄Π°Π²Π°Π½Π΅ Π½Π° Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΈΡΠ΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΈ Π½Π° ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΠ° Π½Π° ΠΏΠΎΠΌΠΎΡΠ½ΠΈΠΊΠ°.
ΠΠ° ΠΏΡΠΈΠΏΠΎΠΌΠ½ΠΈΠΌ, ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ ΠΌΠ΅ Ipv4InterfaceContainer Π·Π° ΠΏΡΠΎΡΠ»Π΅Π΄ΡΠ²Π°Π½Π΅ Π½Π° IP Π°Π΄ΡΠ΅ΡΠΈΡΠ΅, ΠΊΠΎΠΈΡΠΎ ΡΠΌΠ΅ Π½Π°Π·Π½Π°ΡΠΈΠ»ΠΈ Π½Π° Π½Π°ΡΠΈΡΠ΅ ΡΡΡΡΠΎΠΉΡΡΠ²Π°. ΠΡΠ»Π΅Π²ΠΈΡΡ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ Π² ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ° Ρ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠΈ ΡΠ΅ ΠΎΡΠ³ΠΎΠ²Π°ΡΡ Π½Π° IP Π°Π΄ΡΠ΅ΡΠ° Π½Π° Π½ΡΠ»Π΅Π²ΠΈΡ Π²ΡΠ·Π΅Π» Π² ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ° Ρ Π²ΡΠ·Π»ΠΈ. ΠΡΡΠ²ΠΈΡΡ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ Π² ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ° Ρ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠΈ ΡΡΠΎΡΠ²Π΅ΡΡΡΠ²Π° Π½Π° IP Π°Π΄ΡΠ΅ΡΠ° Π½Π° ΠΏΡΡΠ²ΠΈΡ Π²ΡΠ·Π΅Π» Π² ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ° Ρ Π²ΡΠ·Π»ΠΈ. Π’Π°ΠΊΠ° ΡΠ΅, Π² ΠΏΡΡΠ²ΠΈΡ ΡΠ΅Π΄ ΠΊΠΎΠ΄ (ΠΎΡΠ³ΠΎΡΠ΅) ΡΡΠ·Π΄Π°Π²Π°ΠΌΠ΅ ΠΏΠΎΠΌΠΎΡΠ½ΠΈΠΊ ΠΈ ΠΌΡ ΠΊΠ°Π·Π²Π°ΠΌΠ΅, ΡΠ΅ ΠΎΡΠ΄Π°Π»Π΅ΡΠ΅Π½ΠΈΡΡ Π°Π΄ΡΠ΅Ρ Π½Π° ΠΊΠ»ΠΈΠ΅Π½ΡΠ° ΡΠ΅ Π±ΡΠ΄Π΅ IP Π°Π΄ΡΠ΅ΡΡΡ, Π½Π°Π·Π½Π°ΡΠ΅Π½ Π½Π° Π²ΡΠ·Π΅Π»Π°, Π½Π° ΠΊΠΎΠΉΡΠΎ ΡΠ΅ Π½Π°ΠΌΠΈΡΠ° ΡΡΡΠ²ΡΡΡΡ. Π‘ΡΡΠΎ ΡΠ°ΠΊΠ° ΠΊΠ°Π·Π²Π°ΠΌΠ΅, ΡΠ΅ ΡΡΡΠ±Π²Π° Π΄Π° ΠΎΡΠ³Π°Π½ΠΈΠ·ΠΈΡΠ°ΠΌΠ΅ ΠΈΠ·ΠΏΡΠ°ΡΠ°Π½Π΅ΡΠΎ Π½Π° ΠΏΠ°ΠΊΠ΅ΡΠΈ Π½Π° Π΄Π΅Π²Π΅ΡΠΈΡ ΠΏΠΎΡΡ.
ΠΡΡΠΈΠ±ΡΡΡΡ Β«MaxPacketsΒ» ΠΈΠ½ΡΠΎΡΠΌΠΈΡΠ° ΠΊΠ»ΠΈΠ΅Π½ΡΠ° Π·Π° ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»Π½ΠΈΡ Π±ΡΠΎΠΉ ΠΏΠ°ΠΊΠ΅ΡΠΈ, ΠΊΠΎΠΈΡΠΎ ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° ΠΈΠ·ΠΏΡΠ°ΡΠΈΠΌ ΠΏΠΎ Π²ΡΠ΅ΠΌΠ΅ Π½Π° ΡΠΈΠΌΡΠ»Π°ΡΠΈΡΡΠ°. ΠΡΡΠΈΠ±ΡΡΡΡ Β«IntervalΒ» ΡΠΊΠ°Π·Π²Π° Π½Π° ΠΊΠ»ΠΈΠ΅Π½ΡΠ° ΠΊΠΎΠ»ΠΊΠΎ Π΄ΡΠ»Π³ΠΎ Π΄Π° ΠΈΠ·ΡΠ°ΠΊΠ° ΠΌΠ΅ΠΆΠ΄Ρ ΠΏΠ°ΠΊΠ΅ΡΠΈΡΠ΅, Π° Π°ΡΡΠΈΠ±ΡΡΡΡ Β«PacketSizeΒ» ΠΏΠΎΠΊΠ°Π·Π²Π° Π½Π° ΠΊΠ»ΠΈΠ΅Π½ΡΠ° ΠΊΠΎΠ»ΠΊΠΎ Π³ΠΎΠ»ΡΠΌ ΡΡΡΠ±Π²Π° Π΄Π° Π΅ ΠΏΠΎΠ»Π΅Π·Π½ΠΈΡΡ ΡΠΎΠ²Π°Ρ Π½Π° ΠΏΠ°ΠΊΠ΅ΡΠ°. Π‘ ΡΠ°Π·ΠΈ ΠΊΠΎΠΌΠ±ΠΈΠ½Π°ΡΠΈΡ ΠΎΡ Π°ΡΡΠΈΠ±ΡΡΠΈ Π½ΠΈΠ΅ ΠΊΠ°Π·Π²Π°ΠΌΠ΅ Π½Π° ΠΊΠ»ΠΈΠ΅Π½ΡΠ° Π΄Π° ΠΈΠ·ΠΏΡΠ°ΡΠΈ Π΅Π΄ΠΈΠ½ ΠΏΠ°ΠΊΠ΅Ρ Ρ Π³ΠΎΠ»Π΅ΠΌΠΈΠ½Π° 1024 Π±Π°ΠΉΡΠ°.
ΠΠ°ΠΊΡΠΎ Π² ΡΠ»ΡΡΠ°Ρ Ρ Π΅Ρ ΠΎ-ΡΡΡΠ²ΡΡΠ°, Π½ΠΈΠ΅ Π·Π°Π΄Π°Π²Π°ΠΌΠ΅ Π°ΡΡΠΈΠ±ΡΡΠΈΡΠ΅ Π½Π° Π΅Ρ ΠΎ-ΠΊΠ»ΠΈΠ΅Π½ΡΠ°, Start ΠΈ Stop, Π½ΠΎ ΡΡΠΊ ΡΡΠ°ΡΡΠΈΡΠ°ΠΌΠ΅ ΠΊΠ»ΠΈΠ΅Π½ΡΠ° ΡΠ΅ΠΊΡΠ½Π΄Π° ΡΠ»Π΅Π΄ Π²ΠΊΠ»ΡΡΠ²Π°Π½Π΅ΡΠΎ Π½Π° ΡΡΡΠ²ΡΡΠ° (Π΄Π²Π΅ ΡΠ΅ΠΊΡΠ½Π΄ΠΈ ΡΠ»Π΅Π΄ Π½Π°ΡΠ°Π»ΠΎΡΠΎ Π½Π° ΡΠΈΠΌΡΠ»Π°ΡΠΈΡΡΠ°).
4.2.8 Π‘ΠΈΠΌΡΠ»Π°ΡΠΎΡ
ΠΠ° ΡΠΎΠ·ΠΈ Π΅ΡΠ°ΠΏ ΡΡΡΠ±Π²Π° Π΄Π° ΡΡΠ°ΡΡΠΈΡΠ°ΠΌΠ΅ ΡΠΈΠΌΡΠ»Π°ΡΠΈΡΡΠ°. Π’ΠΎΠ²Π° ΡΠ΅ ΠΏΡΠ°Π²ΠΈ Ρ ΠΏΠΎΠΌΠΎΡΡΠ° Π½Π° Π³Π»ΠΎΠ±Π°Π»Π½Π°ΡΠ° ΡΡΠ½ΠΊΡΠΈΡ Simulator::Run.
Simulator::Run();ΠΠΎΠ³Π°ΡΠΎ ΠΏΡΠ΅Π΄ΠΈ ΡΠΎΠ²Π° ΠΈΠ·Π²ΠΈΠΊΠ°Ρ ΠΌΠ΅ ΠΌΠ΅ΡΠΎΠ΄ΠΈ,
serverApps.Start(Seconds(1.0));
serverApps.Stop(Seconds(10.0));
...
clientApps.Start(Seconds(2.0));
clientApps.Stop(Seconds(10.0));Π²ΡΡΡΠ½ΠΎΡΡ ΠΏΠ»Π°Π½ΠΈΡΠ°Ρ ΠΌΠ΅ ΡΡΠ±ΠΈΡΠΈΡ Π² ΡΠΈΠΌΡΠ»Π°ΡΠΎΡΠ° Π·Π° 1.0 ΡΠ΅ΠΊΡΠ½Π΄ΠΈ, 2.0 ΡΠ΅ΠΊΡΠ½Π΄ΠΈ ΠΈ Π΄Π²Π΅ ΡΡΠ±ΠΈΡΠΈΡ Π·Π° 10.0 ΡΠ΅ΠΊΡΠ½Π΄ΠΈ. Π‘Π»Π΅Π΄ ΠΈΠ·Π²ΠΈΠΊΠ²Π°Π½Π΅ΡΠΎ Π½Π° Simulator::Run, ΡΠΈΡΡΠ΅ΠΌΠ°ΡΠ° ΡΠ΅ Π·Π°ΠΏΠΎΡΠ½Π΅ Π΄Π° ΠΏΡΠ΅Π³Π»Π΅ΠΆΠ΄Π° ΡΠΏΠΈΡΡΠΊΠ° Ρ ΠΏΠ»Π°Π½ΠΈΡΠ°Π½ΠΈ ΡΡΠ±ΠΈΡΠΈΡ ΠΈ ΡΠ΅ Π³ΠΈ ΠΈΠ·ΠΏΡΠ»Π½ΡΠ²Π°. ΠΡΡΠ²ΠΎ ΡΠΎΠΉ ΡΠ΅ ΡΡΠ°ΡΡΠΈΡΠ° ΡΡΠ±ΠΈΡΠΈΠ΅ΡΠΎ ΡΠ»Π΅Π΄ 1.0 ΡΠ΅ΠΊΡΠ½Π΄ΠΈ, ΠΊΠΎΠ΅ΡΠΎ Π°ΠΊΡΠΈΠ²ΠΈΡΠ° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΡΠΎ Π½Π° Π΅Ρ ΠΎ-ΡΡΡΠ²ΡΡΠ° (ΡΠΎΠ²Π° ΡΡΠ±ΠΈΡΠΈΠ΅ ΠΌΠΎΠΆΠ΅, ΠΎΡ ΡΠ²ΠΎΡ ΡΡΡΠ°Π½Π°, Π΄Π° ΠΏΠ»Π°Π½ΠΈΡΠ° ΠΌΠ½ΠΎΠ³ΠΎ Π΄ΡΡΠ³ΠΈ ΡΡΠ±ΠΈΡΠΈΡ). Π‘Π»Π΅Π΄ ΡΠΎΠ²Π° ΡΠ΅ ΡΡΠ°ΡΡΠΈΡΠ° ΡΡΠ±ΠΈΡΠΈΠ΅ΡΠΎ, ΠΏΠ»Π°Π½ΠΈΡΠ°Π½ΠΎ Π·Π° t = 2.0 ΡΠ΅ΠΊΡΠ½Π΄ΠΈ, ΠΊΠΎΠ΅ΡΠΎ ΡΠ΅ Π°ΠΊΡΠΈΠ²ΠΈΡΠ° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΡΠΎ Π½Π° Π΅Ρ ΠΎ-ΠΊΠ»ΠΈΠ΅Π½ΡΠ°. ΠΡΠ½ΠΎΠ²ΠΎ, ΡΠΎΠ²Π° ΡΡΠ±ΠΈΡΠΈΠ΅ ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΏΠ»Π°Π½ΠΈΡΠ° ΠΎΡΠ΅ ΠΌΠ½ΠΎΠ³ΠΎ ΡΡΠ±ΠΈΡΠΈΡ. Π Π΅Π°Π»ΠΈΠ·Π°ΡΠΈΡΡΠ° Π½Π° ΡΡΠ±ΠΈΡΠΈΠ΅ΡΠΎ Π·Π° ΡΡΠ°ΡΡΠΈΡΠ°Π½Π΅ Π² Π΅Ρ ΠΎ-ΠΊΠ»ΠΈΠ΅Π½ΡΠ° ΡΠ΅ Π·Π°ΠΏΠΎΡΠ½Π΅ Π΅ΡΠ°ΠΏΠ° Π½Π° ΠΏΡΠ΅Π΄Π°Π²Π°Π½Π΅ Π½Π° Π΄Π°Π½Π½ΠΈΡΠ΅ Π·Π° ΡΠΈΠΌΡΠ»Π°ΡΠΈΡΡΠ°, ΠΈΠ·ΠΏΡΠ°ΡΠ°ΠΉΠΊΠΈ ΠΏΠ°ΠΊΠ΅Ρ Π΄ΠΎ ΡΡΡΠ²ΡΡΠ°.
ΠΠΊΡΡΡ Π½Π° ΠΈΠ·ΠΏΡΠ°ΡΠ°Π½Π΅ Π½Π° ΠΏΠ°ΠΊΠ΅ΡΠ° Π΄ΠΎ ΡΡΡΠ²ΡΡΠ° ΡΠ΅ ΠΏΡΠ΅Π΄ΠΈΠ·Π²ΠΈΠΊΠ° Π²Π΅ΡΠΈΠ³Π° ΠΎΡ ΡΡΠ±ΠΈΡΠΈΡ, ΠΊΠΎΠΈΡΠΎ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ½ΠΎ ΡΠ΅ Π±ΡΠ΄Π°Ρ ΠΏΠ»Π°Π½ΠΈΡΠ°Π½ΠΈ Π·Π°Π΄ ΡΡΠ΅Π½Π°ΡΠ° ΠΈ, ΠΊΠΎΠΈΡΠΎ ΡΠ΅ ΡΠ΅Π°Π»ΠΈΠ·ΠΈΡΠ°Ρ ΠΌΠ΅Ρ Π°Π½ΠΈΠΊΠ°ΡΠ° Π½Π° ΠΈΠ·ΠΏΡΠ°ΡΠ°Π½Π΅ Π½Π° ΠΏΠ°ΠΊΠ΅ΡΠ° Ρ Π΅Ρ ΠΎ-ΡΠΈΠ³Π½Π°Π»ΠΈ Π² ΡΡΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΠ΅ Ρ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΈΡΠ΅ Π·Π° ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·ΠΈΡΠ°Π½Π΅, ΠΊΠΎΠΈΡΠΎ ΡΠΌΠ΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΠ»ΠΈ Π² ΡΡΠ΅Π½Π°ΡΠΈΡ.
Π ΠΊΡΠ°ΠΉΠ½Π° ΡΠΌΠ΅ΡΠΊΠ°, ΡΡΠΉ ΠΊΠ°ΡΠΎ ΠΈΠ·ΠΏΡΠ°ΡΠ°ΠΌΠ΅ ΡΠ°ΠΌΠΎ Π΅Π΄ΠΈΠ½ ΠΏΠ°ΠΊΠ΅Ρ (Π½Π΅ΠΊΠ° Π½Π°ΠΏΠΎΠΌΠ½ΠΈΠΌ, Π°ΡΡΠΈΠ±ΡΡΡΡ MaxPackets Π±Π΅ΡΠ΅ Π·Π°Π΄Π°Π΄Π΅Π½ Π½Π° Π΅Π΄ΠΈΠ½ΠΈΡΠ°), Π²Π΅ΡΠΈΠ³Π°ΡΠ° ΠΎΡ ΡΡΠ±ΠΈΡΠΈΡ, ΠΈΠ½ΠΈΡΠΈΡΠ°Π½Π° ΠΎΡ ΡΠΎΠ·ΠΈ Π΅Π΄ΠΈΠ½ΡΡΠ²Π΅Π½ ΠΊΠ»ΠΈΠ΅Π½ΡΡΠΊΠΈ Π΅Ρ ΠΎ-Π·Π°ΠΏΠΈΡ, ΡΠ΅ ΠΏΡΠΈΠΊΠ»ΡΡΠΈ ΠΈ ΡΠΈΠΌΡΠ»Π°ΡΠΈΡΡΠ° ΡΠ΅ ΠΏΡΠ΅ΠΌΠΈΠ½Π΅ Π² ΡΠ΅ΠΆΠΈΠΌ Π½Π° ΠΈΠ·ΡΠ°ΠΊΠ²Π°Π½Π΅. Π‘Π»Π΅Π΄ ΠΊΠ°ΡΠΎ ΡΠΎΠ²Π° ΡΠ΅ ΡΠ»ΡΡΠΈ, ΠΎΡΡΠ°Π²Π°ΡΠΈΡΠ΅ ΠΏΠ»Π°Π½ΠΈΡΠ°Π½ΠΈ ΡΡΠ±ΠΈΡΠΈΡ ΡΠ΅ Π±ΡΠ΄Π°Ρ ΡΡΠ±ΠΈΡΠΈΡ Stop Π·Π° ΡΡΡΠ²ΡΡΠ° ΠΈ ΠΊΠ»ΠΈΠ΅Π½ΡΠ°. ΠΠΎΠ³Π°ΡΠΎ ΡΠ΅Π·ΠΈ ΡΡΠ±ΠΈΡΠΈΡ Π±ΡΠ΄Π°Ρ ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈ, Π½ΡΠΌΠ° Π΄Π° ΠΎΡΡΠ°Π½Π°Ρ ΡΡΠ±ΠΈΡΠΈΡ Π·Π° ΠΏΠΎ-Π½Π°ΡΠ°ΡΡΡΠ½Π° ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ° ΠΈ Simulator::Run ΡΠ΅ Π²ΡΡΠ½Π΅ ΠΊΠΎΠ½ΡΡΠΎΠ»Π°. Π‘ΠΈΠΌΡΠ»Π°ΡΠΈΡΡΠ° Π΅ Π·Π°Π²ΡΡΡΠ΅Π½Π°.
ΠΡΡΠ°Π²Π° ΡΠ°ΠΌΠΎ Π΄Π° ΠΏΡΠΈΠ±Π΅ΡΠ°Ρ ΡΠ»Π΅Π΄ ΡΠ΅Π±Π΅ ΡΠΈ. Π’ΠΎΠ²Π° ΡΡΠ°Π²Π° ΡΡΠ΅Π· ΠΈΠ·Π²ΠΈΠΊΠ²Π°Π½Π΅ Π½Π° Π³Π»ΠΎΠ±Π°Π»Π½Π°ΡΠ° ΡΡΠ½ΠΊΡΠΈΡ Simulator::Destroy. Π’ΡΠΉ ΠΊΠ°ΡΠΎ Π±ΡΡ Π° ΠΈΠ·Π²ΠΈΠΊΠ²Π°Π½ΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ Π½Π° ΠΏΠΎΠΌΠΎΡΠ½ΠΈΡΠΈ (ΠΈΠ»ΠΈ ΠΊΠΎΠ΄ Π½Π° Π½ΠΈΡΠΊΠΎ Π½ΠΈΠ²ΠΎ nsβ3), ΠΊΠΎΠΈΡΠΎ ΡΠ° ΠΎΡΠ³Π°Π½ΠΈΠ·ΠΈΡΠ°Π½ΠΈ ΡΠ°ΠΊΠ°, ΡΠ΅ Π² ΡΠΈΠΌΡΠ»Π°ΡΠΎΡΠ° Π΄Π° Π±ΡΠ΄Π°Ρ ΠΏΠΎΡΡΠ°Π²Π΅Π½ΠΈ Ρ ΡΠΊ ΡΠΎΡΠΊΠΈ Π·Π° ΡΠ½ΠΈΡΠΎΠΆΠ°Π²Π°Π½Π΅ Π½Π° Π²ΡΠΈΡΠΊΠΈ ΠΎΠ±Π΅ΠΊΡΠΈ, ΠΊΠΎΠΈΡΠΎ ΡΠ° ΡΡΠ·Π΄Π°Π΄Π΅Π½ΠΈ. ΠΠ΅ Π΅ Π½ΡΠΆΠ½ΠΎ Π΄Π° ΡΠ»Π΅Π΄ΠΈΡΠ΅ ΡΠ°ΠΌΠΈ Π½ΠΈΡΠΎ Π΅Π΄ΠΈΠ½ ΠΎΡ ΡΠ΅Π·ΠΈ ΠΎΠ±Π΅ΠΊΡΠΈ β Π²ΡΠΈΡΠΊΠΎ, ΠΊΠΎΠ΅ΡΠΎ ΡΡΡΠ±Π²Π°ΡΠ΅ Π΄Π° Π½Π°ΠΏΡΠ°Π²ΠΈΡΠ΅, Π΅ Π΄Π° ΠΈΠ·Π²ΠΈΠΊΠ°ΡΠ΅ Simulator::Destroy ΠΈ Π΄Π° ΠΈΠ·Π»Π΅Π·Π΅ΡΠ΅. Π‘ΠΈΡΡΠ΅ΠΌΠ°ΡΠ° nsβ3 ΡΠ΅ ΠΈΠ·Π²ΡΡΡΠΈ ΡΠ°Π·ΠΈ ΡΡΡΠ΄Π½Π° ΡΠ°Π±ΠΎΡΠ° Π²ΠΌΠ΅ΡΡΠΎ Π²Π°Ρ. ΠΡΡΠ°Π½Π°Π»ΠΈΡΠ΅ ΡΠ΅Π΄ΠΎΠ²Π΅ ΠΎΡ Π½Π°ΡΠΈΡ ΠΏΡΡΠ²ΠΈ nsβ3 ΡΠΊΡΠΈΠΏΡ, first.cc, ΠΏΡΠ°Π²ΡΡ ΡΠΎΡΠ½ΠΎ ΡΠΎΠ²Π°:
Simulator::Destroy ();
return 0;
}ΠΠΎΠ³Π° ΡΠ΅ ΡΠ΅ ΡΠΏΡΠ΅ ΡΠΈΠΌΡΠ»Π°ΡΠΎΡΡΡ?
nsβ3 Π΅ ΡΠΈΠΌΡΠ»Π°ΡΠΎΡ Π½Π° Π΄ΠΈΡΠΊΡΠ΅ΡΠ½ΠΈ ΡΡΠ±ΠΈΡΠΈΡ (DE). Π ΡΠ°ΠΊΡΠ² ΡΠΈΠΌΡΠ»Π°ΡΠΎΡ Π²ΡΡΠΊΠΎ ΡΡΠ±ΠΈΡΠΈΠ΅ Π΅ ΡΠ²ΡΡΠ·Π°Π½ΠΎ Ρ Π²ΡΠ΅ΠΌΠ΅ΡΠΎ Π½Π° Π½Π΅Π³ΠΎΠ²ΠΎΡΠΎ ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅, Π° ΡΠΈΠΌΡΠ»Π°ΡΠΈΡΡΠ° ΠΏΡΠΎΠ΄ΡΠ»ΠΆΠ°Π²Π° ΡΡΠ΅Π· ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ° Π½Π° ΡΡΠ±ΠΈΡΠΈΡΡΠ° ΠΏΠΎ ΡΠ΅Π΄Π° Π½Π° ΡΡΡ Π½ΠΎΡΠΎ Π²ΡΠ·Π½ΠΈΠΊΠ²Π°Π½Π΅ ΠΏΠΎ Π²ΡΠ΅ΠΌΠ΅ Π½Π° ΡΠΈΠΌΡΠ»Π°ΡΠΈΡΡΠ°. Π‘ΡΠ±ΠΈΡΠΈΡΡΠ° ΠΌΠΎΠ³Π°Ρ Π΄Π° ΠΏΡΠΈΡΠΈΠ½ΡΡ ΠΏΠ»Π°Π½ΠΈΡΠ°Π½Π΅ΡΠΎ Π½Π° Π±ΡΠ΄Π΅ΡΠΈ ΡΡΠ±ΠΈΡΠΈΡ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΠ°ΠΉΠΌΠ΅Ρ ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΏΡΠ΅ΠΏΠ»Π°Π½ΠΈΡΠ° ΡΠ°ΠΌ ΡΠ΅Π±Π΅ ΡΠΈ, Π·Π° Π΄Π° ΡΠΈΠ³Π½Π°Π»ΠΈΠ·ΠΈΡΠ° Π² ΡΠ»Π΅Π΄Π²Π°ΡΠΈΡ ΠΈΠ½ΡΠ΅ΡΠ²Π°Π»).
ΠΠ°ΡΠ°Π»Π½ΠΈΡΠ΅ ΡΡΠ±ΠΈΡΠΈΡ ΠΎΠ±ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΎ ΡΠ΅ ΠΈΠ½ΠΈΡΠΈΠΈΡΠ°Ρ ΠΎΡ ΠΎΠ±Π΅ΠΊΡ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, IPv6 ΡΠ΅ ΠΏΠ»Π°Π½ΠΈΡΠ° ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ½Π΅ Π½Π° ΡΡΠ»ΡΠ³ΠΈ Π² ΠΌΡΠ΅ΠΆΠ°ΡΠ°, Π·Π°ΡΠ²ΠΊΠΈ ΠΎΡ ΡΡΡΠ΅Π΄ΠΈ ΠΈ Ρ.Π½. ΠΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΡΠΎ ΠΏΠ»Π°Π½ΠΈΡΠ° ΠΏΡΡΠ²ΠΎΡΠΎ ΡΡΠ±ΠΈΡΠΈΠ΅ Π·Π° ΠΈΠ·ΠΏΡΠ°ΡΠ°Π½Π΅ Π½Π° ΠΏΠ°ΠΊΠ΅Ρ ΠΈ Ρ.Π½. ΠΠΎΠ³Π°ΡΠΎ ΡΡΠ±ΠΈΡΠΈΠ΅ΡΠΎ ΡΠ΅ ΠΎΠ±ΡΠ°Π±ΠΎΡΠ²Π°, ΡΠΎ ΠΌΠΎΠΆΠ΅ Π΄Π° Π³Π΅Π½Π΅ΡΠΈΡΠ° Π½ΡΠ»Π°, Π΅Π΄Π½ΠΎ ΠΈΠ»ΠΈ Π½ΡΠΊΠΎΠ»ΠΊΠΎ ΡΡΠ±ΠΈΡΠΈΡ. Π‘ Π½Π°ΠΏΡΠ΅Π΄Π²Π°Π½Π΅ΡΠΎ Π½Π° ΡΠΈΠΌΡΠ»Π°ΡΠΈΡΡΠ°, ΡΡΠ±ΠΈΡΠΈΡΡΠ° ΠΏΡΠΎΡΡΠΎ ΠΏΡΠΈΠΊΠ»ΡΡΠ²Π°Ρ ΠΈΠ»ΠΈ Π³Π΅Π½Π΅ΡΠΈΡΠ°Ρ Π½ΠΎΠ²ΠΈ. Π‘ΠΈΠΌΡΠ»Π°ΡΠΈΡΡΠ° ΡΠ΅ ΡΠ΅ ΡΠΏΡΠ΅ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ½ΠΎ, Π°ΠΊΠΎ ΠΎΠΏΠ°ΡΠΊΠ°ΡΠ° ΠΎΡ ΡΡΠ±ΠΈΡΠΈΡ ΡΡΠ°Π½Π΅ ΠΏΡΠ°Π·Π½Π° ΠΈΠ»ΠΈ Π°ΠΊΠΎ Π±ΡΠ΄Π΅ ΠΎΡΠΊΡΠΈΡΠΎ ΡΠΏΠ΅ΡΠΈΠ°Π»Π½ΠΎ ΡΡΠ±ΠΈΡΠΈΠ΅. Stop. Π‘ΡΠ±ΠΈΡΠΈΠ΅ Stop ΡΠ΅ Π³Π΅Π½Π΅ΡΠΈΡΠ° ΠΎΡ ΡΡΠ½ΠΊΡΠΈΡΡΠ° Simulator::Stop (ΡΠΏΠΈΡΠ°Π½Π΅ Π½Π° Π²ΡΠ΅ΠΌΠ΅ΡΠΎ).
ΠΠΌΠ° ΡΠΈΠΏΠΈΡΠ΅Π½ ΡΠ»ΡΡΠ°ΠΉ, ΠΊΠΎΠ³Π°ΡΠΎ Simulator::Stop Π΅ Π°Π±ΡΠΎΠ»ΡΡΠ½ΠΎ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌ Π·Π° ΡΠΏΠΈΡΠ°Π½Π΅ΡΠΎ Π½Π° ΡΠΈΠΌΡΠ»Π°ΡΠΈΡΡΠ°: ΠΊΠΎΠ³Π°ΡΠΎ ΠΈΠΌΠ° ΡΠ°ΠΌΠΎΠΏΠΎΠ΄Π΄ΡΡΠΆΠ°ΡΠΈ ΡΠ΅ ΡΡΠ±ΠΈΡΠΈΡ. Π‘Π°ΠΌΠΎΠΏΠΎΠ΄Π΄ΡΡΠΆΠ°ΡΠΈΡΠ΅ (ΠΈΠ»ΠΈ ΠΏΠΎΠ²ΡΠ°ΡΡΡΠΈ ΡΠ΅) ΡΡΠ±ΠΈΡΠΈΡ ΡΠ° ΡΡΠ±ΠΈΡΠΈΡ, ΠΊΠΎΠΈΡΠΎ Π²ΠΈΠ½Π°Π³ΠΈ ΡΠ΅ ΠΏΡΠ΅ΠΏΠ»Π°Π½ΠΈΡΠ°Ρ. Π ΡΠ΅Π·ΡΠ»ΡΠ°Ρ Π½Π° ΡΠΎΠ²Π°, ΡΠ΅ Π²ΠΈΠ½Π°Π³ΠΈ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠ°Ρ ΠΎΠΏΠ°ΡΠΊΠ°ΡΠ° ΠΎΡ ΡΡΠ±ΠΈΡΠΈΡ Π½Π΅ΠΏΡΠ°Π·Π½Π°. ΠΠΌΠ° ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΡΠΎΡΠΎΠΊΠΎΠ»ΠΈ ΠΈ ΠΌΠΎΠ΄ΡΠ»ΠΈ, ΠΊΠΎΠΈΡΠΎ ΡΡΠ΄ΡΡΠΆΠ°Ρ ΠΏΠΎΠ²ΡΠ°ΡΡΡΠΈ ΡΠ΅ ΡΡΠ±ΠΈΡΠΈΡ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ:
β’ FlowMonitor β ΠΏΠ΅ΡΠΈΠΎΠ΄ΠΈΡΠ½Π° ΠΏΡΠΎΠ²Π΅ΡΠΊΠ° Π·Π° Π·Π°Π³ΡΠ±Π΅Π½ΠΈ ΠΏΠ°ΠΊΠ΅ΡΠΈ;
β’ RIPng β ΠΏΠ΅ΡΠΈΠΎΠ΄ΠΈΡΠ½Π° ΡΡΠ°Π½ΡΠ»Π°ΡΠΈΡ Π½Π° Π°ΠΊΡΡΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ Π½Π° ΡΠ°Π±Π»ΠΈΡΠΈΡΠ΅ Π·Π° ΠΌΠ°ΡΡΡΡΡΠΈΠ·ΠΈΡΠ°Π½Π΅;
β’ ΠΈ Ρ.Π½.
Π ΡΠ°ΠΊΠΈΠ²Π° ΡΠ»ΡΡΠ°ΠΈ Simulator::Stop Π΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌ Π·Π° ΠΏΡΠ°Π²ΠΈΠ»Π½ΠΎΡΠΎ ΡΠΏΠΈΡΠ°Π½Π΅ Π½Π° ΡΠΈΠΌΡΠ»Π°ΡΠΈΡΡΠ°. ΠΡΠ²Π΅Π½ ΡΠΎΠ²Π°, ΠΊΠΎΠ³Π°ΡΠΎ nsβ3 Π΅ Π² ΡΠ΅ΠΆΠΈΠΌ Π½Π° Π΅ΠΌΡΠ»ΡΡΠΈΡ, RealtimeSimulator ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°, Π·Π° Π΄Π° ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·ΠΈΡΠ° ΡΠ°ΡΠΎΠ²Π½ΠΈΡΠΈΡΠ΅ Π½Π° ΡΠΈΠΌΡΠ»Π°ΡΠΈΡΡΠ° Ρ ΡΠ°ΡΠΎΠ²Π½ΠΈΡΠΈΡΠ΅ Π½Π° ΠΌΠ°ΡΠΈΠ½Π°ΡΠ°, ΠΈ Simulator::Stop Π΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌ Π·Π° ΡΠΏΠΈΡΠ°Π½Π΅ Π½Π° ΠΏΡΠΎΡΠ΅ΡΠ°.
ΠΠ½ΠΎΠ³ΠΎ ΠΎΡ ΡΠΈΠΌΡΠ»Π°ΡΠΈΠΎΠ½Π½ΠΈΡΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΈ Π² ΡΡΠ΅Π±Π½ΠΈΠΊΠ° Π½Π΅ ΠΈΠ·Π²ΠΈΠΊΠ²Π°Ρ Simulator::Stop ΠΎΡΠ΅Π²ΠΈΠ΄Π½ΠΎ, ΡΡΠΉ ΠΊΠ°ΡΠΎ ΡΠ΅ ΠΏΡΠΈΠΊΠ»ΡΡΠ²Π°Ρ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ½ΠΎ ΠΏΡΠΈ ΠΈΠ·ΡΠ΅ΡΠΏΠ²Π°Π½Π΅ Π½Π° ΡΡΠ±ΠΈΡΠΈΡΡΠ° Π² ΠΎΠΏΠ°ΡΠΊΠ°ΡΠ°. ΠΡΠΏΡΠ΅ΠΊΠΈ ΡΠΎΠ²Π°, ΡΠ΅Π·ΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΈ ΡΡΡΠΎ ΡΠ΅ ΠΏΡΠΈΠ΅ΠΌΠ°Ρ ΠΈΠ·Π²ΠΈΠΊΠ²Π°Π½Π΅ΡΠΎ Π½Π° Simulator::Stop. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΠ»Π΅Π΄Π½ΠΈΡΡ Π΄ΠΎΠΏΡΠ»Π½ΠΈΡΠ΅Π»Π΅Π½ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ Π² ΠΏΡΡΠ²ΠΎΠ½Π°ΡΠ°Π»Π½ΠΈΡ ΠΏΡΠΈΠΌΠ΅Ρ Π½Π° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠ°ΡΠ° ΡΠ΅ Π·Π°ΠΏΠ»Π°Π½ΡΠ²Π° ΡΠ²Π½Π° ΡΠΏΠΈΡΠΊΠ° Π½Π° 11-ΡΠ° ΡΠ΅ΠΊΡΠ½Π΄Π°:
+ Simulator::Stop (Seconds (11.0));
Simulator::Run ();
Simulator::Destroy ();
return 0;
}ΠΠΎ-Π³ΠΎΡΠ΅ ΠΏΠΎΡΠΎΡΠ΅Π½ΠΎΡΠΎ Π²ΡΡΡΠ½ΠΎΡΡ Π½ΡΠΌΠ° Π΄Π° ΠΏΡΠΎΠΌΠ΅Π½ΠΈ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ΡΠΎ Π½Π° ΡΠ°Π·ΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠ°, ΡΡΠΉ ΠΊΠ°ΡΠΎ ΡΠΎΠ²Π° ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΎ ΡΠΈΠΌΡΠ»ΠΈΡΠ°Π½Π΅ Π΅ΡΡΠ΅ΡΡΠ²Π΅Π½ΠΎ Π·Π°Π²ΡΡΡΠ²Π° ΡΠ»Π΅Π΄ 10 ΡΠ΅ΠΊΡΠ½Π΄ΠΈ. ΠΠΎ Π°ΠΊΠΎ ΠΏΡΠΎΠΌΠ΅Π½ΠΈΡΠ΅ Π²ΡΠ΅ΠΌΠ΅ΡΠΎ Π·Π° ΡΠΏΠΈΡΠ°Π½Π΅ Π² Π³ΠΎΡΠ½ΠΈΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ ΠΎΡ 11 ΡΠ΅ΠΊΡΠ½Π΄ΠΈ Π½Π° 1 ΡΠ΅ΠΊΡΠ½Π΄Π°, ΡΠ΅ Π·Π°Π±Π΅Π»Π΅ΠΆΠΈΡΠ΅, ΡΠ΅ ΡΠΈΠΌΡΠ»ΠΈΡΠ°Π½Π΅ΡΠΎ ΡΠ΅ ΡΠΏΠΈΡΠ°, ΠΏΡΠ΅Π΄ΠΈ Π²ΡΡΠΊΠ°ΠΊΠ²ΠΈ ΡΠ΅Π·ΡΠ»ΡΠ°ΡΠΈ Π΄Π° ΡΠ΅ ΠΏΠΎΠΊΠ°ΠΆΠ°Ρ Π½Π° Π΅ΠΊΡΠ°Π½Π° (ΡΡΠΉ ΠΊΠ°ΡΠΎ ΡΠ΅Π·ΡΠ»ΡΠ°ΡΠΈΡΠ΅ ΡΠ΅ ΠΏΠΎΠΊΠ°Π·Π²Π°Ρ ΠΎΠΊΠΎΠ»ΠΎ 2 ΡΠ΅ΠΊΡΠ½Π΄ΠΈ ΡΠΈΠΌΡΠ»ΠΈΡΠ°Π½ΠΎ Π²ΡΠ΅ΠΌΠ΅).
ΠΠ°ΠΆΠ½ΠΎ Π΅ Π΄Π° ΠΈΠ·Π²ΠΈΠΊΠ°ΡΠ΅ Simulator::Stop ΠΏΡΠ΅Π΄ΠΈ Π΄Π° ΠΈΠ·Π²ΠΈΠΊΠ°ΡΠ΅ Simulator::Run; Π² ΠΏΡΠΎΡΠΈΠ²Π΅Π½ ΡΠ»ΡΡΠ°ΠΉ Simulator::Run ΠΌΠΎΠΆΠ΅ Π½ΠΈΠΊΠΎΠ³Π° Π΄Π° Π½Π΅ Π²ΡΡΠ½Π΅ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ΡΠΎ Π½Π° ΠΎΡΠ½ΠΎΠ²Π½Π°ΡΠ° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠ° Π·Π° ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ Π½Π° ΡΠΏΠΈΡΠΊΠ°ΡΠ°!
4.2.9 Π‘Π³Π»ΠΎΠ±ΡΠ²Π°Π½Π΅ Π½Π° ΡΡΠ΅Π½Π°ΡΠΈΠΈΡΠ΅ Π²ΠΈ
ΠΠ°ΠΏΡΠ°Π²ΠΈΡ ΠΌΠ΅ ΡΡΠ·Π΄Π°Π²Π°Π½Π΅ΡΠΎ Π½Π° Π²Π°ΡΠΈΡΠ΅ ΠΏΡΠΎΡΡΠΈ ΡΠΊΡΠΈΠΏΡΠΎΠ²Π΅ ΡΡΠΈΠ²ΠΈΠ°Π»Π½ΠΎ. ΠΡΠΈΡΠΊΠΎ, ΠΊΠΎΠ΅ΡΠΎ ΡΡΡΠ±Π²Π° Π΄Π° Π½Π°ΠΏΡΠ°Π²ΠΈΡΠ΅, Π΅ Π΄Π° ΠΏΠΎΡΡΠ°Π²ΠΈΡΠ΅ Π²Π°ΡΠΈΡ ΡΠΊΡΠΈΠΏΡ Π² Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡΡΠ° scratch ΠΈ ΡΠΎΠΉ ΡΠ΅ Π±ΡΠ΄Π΅ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ½ΠΎ ΡΡΠ±ΡΠ°Π½, ΠΊΠΎΠ³Π°ΡΠΎ ΡΡΠ°ΡΡΠΈΡΠ°ΡΠ΅ Waf. ΠΠ΅ΠΊΠ° ΠΎΠΏΠΈΡΠ°ΠΌΠ΅. ΠΡΡΠ½Π΅ΡΠ΅ ΡΠ΅ Π² ΠΎΡΠ½ΠΎΠ²Π½Π°ΡΠ° Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡ ΠΈ ΠΊΠΎΠΏΠΈΡΠ°ΠΉΡΠ΅ examples/tutorial/first.cc Π² ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π° scratch
$ cd ../..
$ cp examples/tutorial/first.cc scratch/myfirst.ccΠ‘Π΅Π³Π° ΡΡΠ±Π΅ΡΠ΅ΡΠ΅ ΠΏΡΡΠ²ΠΈΡ ΡΠΈ ΠΏΡΠΈΠΌΠ΅Ρ Π½Π° ΡΠΊΡΠΈΠΏΡ, ΠΊΠ°ΡΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΡΠ΅ waf:
$ .\/wafΠ’ΡΡΠ±Π²Π° Π΄Π° Π²ΠΈΠ΄ΠΈΡΠ΅ ΡΡΠΎΠ±ΡΠ΅Π½ΠΈΡ, ΡΠ΅ Π²Π°ΡΠΈΡΡ ΠΏΡΡΠ²ΠΈ ΠΏΡΠΈΠΌΠ΅Ρ Π΅ Π±ΠΈΠ» ΡΡΠΏΠ΅ΡΠ½ΠΎ ΡΡΠ·Π΄Π°Π΄Π΅Π½.
Waf: ΠΠ»ΠΈΠ·Π°Π½Π΅ Π² Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡ `\/home\/craigdo\/repos\/ns-3-allinone\/ns-3-dev\/build'\n[614\/708] cxx: scratch\/myfirst.cc -> build\/debug\/scratch\/myfirst_3.o\n[706\/708] cxx_link: build\/debug\/scratch\/myfirst_3.o -> build\/debug\/scratch\/myfirst\nWaf: ΠΠ°ΠΏΡΡΠΊΠ°Π½Π΅ Π½Π° Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡ `\/home\/craigdo\/repos\/ns-3-allinone\/ns-3-dev\/build'\n'build' Π·Π°Π²ΡΡΡΠ΅Π½ ΡΡΠΏΠ΅ΡΠ½ΠΎ (2.357s)Π‘Π΅Π³Π° ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΡΡΠ°ΡΡΠΈΡΠ°ΡΠ΅ ΠΏΡΠΈΠΌΠ΅ΡΠ° (ΠΈΠΌΠ°ΠΉΡΠ΅ ΠΏΡΠ΅Π΄Π²ΠΈΠ΄, ΡΠ΅ Π°ΠΊΠΎ ΡΡΠ±ΠΈΡΠ°ΡΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠ°ΡΠ° ΡΠΈ Π² Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡ scratch, ΡΠΎ ΠΈ Π΄Π° Ρ ΡΡΠ°ΡΡΠΈΡΠ°ΡΠ΅ ΡΡΡΠ±Π²Π° ΠΎΡ scratch):
$ ./waf --run scratch/myfirstΠ’ΡΡΠ±Π²Π° Π΄Π° Π²ΠΈΠ΄ΠΈΡΠ΅ ΠΏΠΎΠ΄ΠΎΠ±Π΅Π½ ΠΈΠ·Ρ ΠΎΠ΄:
Waf: ΠΠ»ΠΈΠ·Π°Π½Π΅ Π² Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡ `\/home\/craigdo\/repos\/ns-3-allinone\/ns-3-dev\/build'\nWaf: ΠΠ°ΠΏΡΡΠΊΠ°Π½Π΅ Π½Π° Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡ `\/home\/craigdo\/repos\/ns-3-allinone\/ns-3-dev\/build'\n'build' Π·Π°Π²ΡΡΡΠ΅Π½ ΡΡΠΏΠ΅ΡΠ½ΠΎ (0.418s) ΠΠ·ΠΏΡΠ°ΡΠ΅Π½ΠΈ 1024 Π±Π°ΠΉΡΠ° Π΄ΠΎ 10.1.1.2\nΠΠΎΠ»ΡΡΠ΅Π½ΠΈ 1024 Π±Π°ΠΉΡΠ° ΠΎΡ 10.1.1.1\nΠΠΎΠ»ΡΡΠ΅Π½ΠΈ 1024 Π±Π°ΠΉΡΠ° ΠΎΡ 10.1.1.2Π’ΡΠΊ Π²ΠΈΠΆΠ΄Π°ΡΠ΅, ΡΠ΅ ΡΠΈΡΡΠ΅ΠΌΠ°ΡΠ° Π·Π° ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠ°Π½Π΅ ΠΏΡΠΎΠ²Π΅ΡΡΠ²Π°, ΡΠ΅ ΡΠ°ΠΉΠ»ΡΡ Π΅ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠ°Π½ ΠΈ ΡΠ»Π΅Π΄ ΡΠΎΠ²Π° Π³ΠΎ ΡΡΠ°ΡΡΠΈΡΠ°. ΠΠΈΠΆΠ΄Π°ΡΠ΅ Π·Π°ΠΏΠΈΡ ΠΎΡ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΈΡΠ΅ Π½Π° echo ΠΊΠ»ΠΈΠ΅Π½ΡΠ°, ΠΊΠΎΠΉΡΠΎ ΠΏΠΎΠΊΠ°Π·Π²Π°, ΡΠ΅ Π΅ ΠΈΠ·ΠΏΡΠ°ΡΠΈΠ» Π΅Π΄ΠΈΠ½ 1024-Π±Π°ΠΉΡΠΎΠ² ΠΏΠ°ΠΊΠ΅Ρ Π½Π° echo ΡΡΡΠ²ΡΡ 10.1.1.2. ΠΠΈΠ΅ ΡΡΡΠΎ ΡΠ°ΠΊΠ° Π²ΠΈΠΆΠ΄Π°ΡΠ΅ Π·Π°ΠΏΠΈΡΠ° Π½Π° echo ΡΡΡΠ²ΡΡΠ°, ΠΊΠΎΠΉΡΠΎ ΠΏΠΎΠΊΠ°Π·Π²Π°, ΡΠ΅ Π΅ ΠΏΠΎΠ»ΡΡΠΈΠ» 1024 Π±Π°ΠΉΡΠ° ΠΎΡ 10.1.1.1. Echo ΡΡΡΠ²ΡΡΡΡ ΠΌΡΠ»ΡΠ°Π»ΠΈΠ²ΠΎ ΠΏΠΎΠ²ΡΠ°ΡΡ ΠΏΠ°ΠΊΠ΅ΡΠ° ΠΈ Π² ΠΆΡΡΠ½Π°Π»Π° Π½Π° echo ΠΊΠ»ΠΈΠ΅Π½ΡΠ° Π²ΠΈΠΆΠ΄Π°ΡΠ΅, ΡΠ΅ Π΅ ΠΏΠΎΠ»ΡΡΠΈΠ» ΠΏΠ°ΠΊΠ΅ΡΠ° ΠΎΠ±ΡΠ°ΡΠ½ΠΎ ΠΎΡ ΡΡΡΠ²ΡΡΠ°.
4.3 ΠΡΡ ΠΎΠ΄Π΅Π½ ΠΊΠΎΠ΄ Π½Π° ns-3
Π‘Π΅Π³Π°, ΡΠ»Π΅Π΄ ΠΊΠ°ΡΠΎ ΡΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π»ΠΈ Π½ΡΠΊΠΎΠΈ ΠΎΡ ΠΏΠΎΠΌΠΎΡΠ½ΠΈΡΠΈΡΠ΅ ns-3, ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΠΏΠΎΠ³Π»Π΅Π΄Π½Π΅ΡΠ΅ Π½ΡΠΊΠΎΠΈ ΠΎΡ ΡΠΎΡΡ ΠΊΠΎΠ΄ΠΎΠ²Π΅ΡΠ΅, ΠΊΠΎΠΈΡΠΎ ΡΠ΅Π°Π»ΠΈΠ·ΠΈΡΠ°Ρ ΡΠ°Π·ΠΈ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»Π½ΠΎΡΡ. ΠΠ°ΠΉ-Π½ΠΎΠ²ΠΈΡΡ ΠΊΠΎΠ΄ ΠΌΠΎΠΆΠ΅ Π΄Π° Π±ΡΠ΄Π΅ ΠΏΡΠ΅Π³Π»Π΅Π΄Π°Π½ Π½Π° Π½Π°ΡΠΈΡ ΡΠ΅Π± ΡΡΡΠ²ΡΡ ΠΏΠΎ ΡΠ»Π΅Π΄ΡΡΡΠ°ΡΠ° Π²ΡΡΠ·ΠΊΠ°: . Π’Π°ΠΌ ΡΠ΅ Π²ΠΈΠ΄ΠΈΡΠ΅ ΠΎΠ±ΠΎΠ±ΡΠ°Π²Π°ΡΠ° ΡΡΡΠ°Π½ΠΈΡΠ° Mercurial Π·Π° Π½Π°ΡΠ΅ΡΠΎ Π΄ΡΡΠ²ΠΎ Π½Π° ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈΡΠ΅ ns-3. Π Π³ΠΎΡΠ½Π°ΡΠ° ΡΠ°ΡΡ Π½Π° ΡΡΡΠ°Π½ΠΈΡΠ°ΡΠ° ΡΠ΅ Π²ΠΈΠ΄ΠΈΡΠ΅ Π½ΡΠΊΠΎΠ»ΠΊΠΎ Π»ΠΈΠ½ΠΊΠ°,
summary | shortlog | changelog | graph | tags | filesΠΡΠΎΠ΄ΡΠ»ΠΆΠ΅ΡΠ΅ ΠΈ ΠΈΠ·Π±Π΅ΡΠ΅ΡΠ΅ Π»ΠΈΠ½ΠΊΠ° ΠΊΡΠΌ ΡΠ°ΠΉΠ»ΠΎΠ²Π΅ΡΠ΅. ΠΡΠΎ ΠΊΠ°ΠΊ ΡΠ΅ ΠΈΠ·Π³Π»Π΅ΠΆΠ΄Π° Π³ΠΎΡΠ½ΠΎΡΠΎ Π½ΠΈΠ²ΠΎ Π½Π° ΠΏΠΎΠ²Π΅ΡΠ΅ΡΠΎ ΠΎΡ Π½Π°ΡΠΈΡΠ΅ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΈ:
drwxr-xr-x [up]
drwxr-xr-x bindings python files
drwxr-xr-x doc files
drwxr-xr-x examples files
drwxr-xr-x ns3 files
drwxr-xr-x scratch files
drwxr-xr-x src files
drwxr-xr-x utils files
-rw-r--r-- 2009-07-01 12:47 +0200 560 .hgignore file | revisions | annotate
-rw-r--r-- 2009-07-01 12:47 +0200 1886 .hgtags file | revisions | annotate
-rw-r--r-- 2009-07-01 12:47 +0200 1276 AUTHORS file | revisions | annotate
-rw-r--r-- 2009-07-01 12:47 +0200 30961 CHANGES.html file | revisions | annotate
-rw-r--r-- 2009-07-01 12:47 +0200 17987 LICENSE file | revisions | annotate
-rw-r--r-- 2009-07-01 12:47 +0200 3742 README file | revisions | annotate
-rw-r--r-- 2009-07-01 12:47 +0200 16171 RELEASE_NOTES file | revisions | annotate
-rw-r--r-- 2009-07-01 12:47 +0200 6 VERSION file | revisions | annotate
-rwxr-xr-x 2009-07-01 12:47 +0200 88110 waf file | revisions | annotate
-rwxr-xr-x 2009-07-01 12:47 +0200 28 waf.bat file | revisions | annotate
-rw-r--r-- 2009-07-01 12:47 +0200 35395 wscript file | revisions | annotate
-rw-r--r-- 2009-07-01 12:47 +0200 7673 wutils.py file | revisions | annotateΠΠ°ΡΠΈΡΠ΅ ΠΏΡΠΈΠΌΠ΅ΡΠΈ Π·Π° ΡΡΠ΅Π½Π°ΡΠΈΠΈ ΡΠ΅ Π½Π°ΠΌΠΈΡΠ°Ρ Π² Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡΡΠ° examples. ΠΠΊΠΎ ΡΡΠ°ΠΊΠ½Π΅ΡΠ΅ Π½Π° ΠΏΡΠΈΠΌΠ΅ΡΠΈ, ΡΠ΅ Π²ΠΈΠ΄ΠΈΡΠ΅ ΡΠΏΠΈΡΡΠΊ ΠΎΡ ΠΏΠΎΠ΄ΠΏΠ°ΠΏΠΊΠΈ. ΠΠ΄ΠΈΠ½ ΠΎΡ ΡΠ°ΠΉΠ»ΠΎΠ²Π΅ΡΠ΅ Π² ΠΏΠΎΠ΄ΠΏΠ°ΠΏΠΊΠ°ΡΠ° tutorial β first.cc. ΠΠΊΠΎ ΡΡΠ°ΠΊΠ½Π΅ΡΠ΅ Π½Π° first.cc , ΡΠ΅ Π²ΠΈΠ΄ΠΈΡΠ΅ ΠΊΠΎΠ΄Π°, ΠΊΠΎΠΉΡΠΎ ΡΠΎΠΊΡ-ΡΠΎ ΠΈΠ·ΡΡΠΈΡ ΡΠ΅.
Π‘ΠΎΡΡ ΠΊΠΎΠ΄ΡΡ ΡΠ΅ Π½Π°ΠΌΠΈΡΠ° ΠΎΡΠ½ΠΎΠ²Π½ΠΎ Π² Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡΡΠ° src. ΠΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΠΏΡΠ΅Π³Π»Π΅Π΄Π°ΡΠ΅ ΠΈΠ·Ρ ΠΎΠ΄Π½ΠΈΡ ΠΊΠΎΠ΄, ΠΊΠ°ΡΠΎ ΠΊΠ»ΠΈΠΊΠ½Π΅ΡΠ΅ Π²ΡΡΡ Ρ ΠΈΠΌΠ΅ΡΠΎ Π½Π° Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡΡΠ° ΠΈΠ»ΠΈ Π²ΡΡΡ Ρ Π»ΠΈΠ½ΠΊΠ° "ΡΠ°ΠΉΠ»ΠΎΠ²Π΅" Π²Π΄ΡΡΠ½ΠΎ ΠΎΡ ΠΈΠΌΠ΅ΡΠΎ Π½Π° Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡΡΠ°. ΠΠΊΠΎ ΠΊΠ»ΠΈΠΊΠ½Π΅ΡΠ΅ Π²ΡΡΡ Ρ Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡΡΠ° src, ΡΠ΅ ΠΏΠΎΠ»ΡΡΠΈΡΠ΅ ΡΠΏΠΈΡΡΠΊ Ρ ΠΏΠΎΠ΄Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΠΈ Π½Π° src. ΠΠΊΠΎ ΡΠ»Π΅Π΄ ΡΠΎΠ²Π° ΠΊΠ»ΠΈΠΊΠ½Π΅ΡΠ΅ Π²ΡΡΡ Ρ ΠΏΠΎΠ΄Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡΡΠ° core, ΡΠ΅ Π½Π°ΠΌΠ΅ΡΠΈΡΠ΅ ΡΠΏΠΈΡΡΠΊ Ρ ΡΠ°ΠΉΠ»ΠΎΠ²Π΅. ΠΡΡΠ²ΠΈΡΡ ΡΠ°ΠΉΠ», ΠΊΠΎΠΉΡΠΎ ΡΠ΅ Π²ΠΈΠ΄ΠΈΡΠ΅ (ΠΊΡΠΌ ΠΌΠΎΠΌΠ΅Π½ΡΠ° Π½Π° Π½Π°ΠΏΠΈΡΠ²Π°Π½Π΅ Π½Π° ΡΠΎΠ²Π° ΡΡΠΊΠΎΠ²ΠΎΠ΄ΡΡΠ²ΠΎ) β abort.h. ΠΠΊΠΎ ΠΊΠ»ΠΈΠΊΠ½Π΅ΡΠ΅ Π½Π° Π»ΠΈΠ½ΠΊΠ° abort.h, ΡΠ΅ Π±ΡΠ΄Π΅ΡΠ΅ Π½Π°ΡΠΎΡΠ΅Π½ΠΈ ΠΊΡΠΌ ΠΈΠ·Ρ ΠΎΠ΄Π½ΠΈΡ ΡΠ°ΠΉΠ» Π·Π° abort.h, ΠΊΠΎΠΉΡΠΎ ΡΡΠ΄ΡΡΠΆΠ° ΠΏΠΎΠ»Π΅Π·Π½ΠΈ ΠΌΠ°ΠΊΡΠΎΡΠΈ Π·Π° ΠΈΠ·Π»ΠΈΠ·Π°Π½Π΅ ΠΎΡ ΡΠΊΡΠΈΠΏΡΠΎΠ²Π΅, Π°ΠΊΠΎ ΡΠ΅ ΠΎΡΠΊΡΠΈΡΡ Π½Π΅Π½ΠΎΡΠΌΠ°Π»Π½ΠΈ ΡΡΠ»ΠΎΠ²ΠΈΡ. ΠΠ·Ρ ΠΎΠ΄Π½ΠΈΡΡ ΠΊΠΎΠ΄ Π·Π° ΠΏΠΎΠΌΠΎΡΠ½ΠΈΡΠΈΡΠ΅, ΠΊΠΎΠΈΡΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ ΠΌΠ΅ Π² ΡΠ°Π·ΠΈ Π³Π»Π°Π²Π°, ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° Π½Π°ΠΌΠ΅ΡΠΈΡΠ΅ Π² Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡΡΠ° src/Applications/helper. ΠΠ΅ ΡΠ΅ ΠΊΠΎΠ»Π΅Π±Π°ΠΉΡΠ΅ Π΄Π° ΡΠ°Π·Π³Π»Π΅Π΄Π°ΡΠ΅ Π΄ΡΡΠ²ΠΎΡΠΎ Π½Π° Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΠΉΡΠ΅, Π·Π° Π΄Π° ΡΠ°Π·Π±Π΅ΡΠ΅ΡΠ΅ ΠΊΠ°ΠΊΠ²ΠΎ ΠΊΡΠ΄Π΅ Π΅ ΠΈ Π΄Π° ΡΠ΅ Π·Π°ΠΏΠΎΠ·Π½Π°Π΅ΡΠ΅ ΡΡΡ ΡΡΠΈΠ»Π° Π½Π° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΈΡΠ°Π½Π΅ Π½Π° ns-3.
ΠΠ·ΡΠΎΡΠ½ΠΈΠΊ: habr.com
