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 ΠΠ‘Π¦ΠΠ ΠΏΡΠ°ΡΠ΅ΡΠ΅
ΠΠ°ΡΡΠΈΠ½Π³ ΠΠ‘Π¦ΠΠ ΡΡΠ°Π³ΠΎΠ²Π°
5.3.2 ΠΠ¦ΠΠ Π’ΡΠ°ΡΠ΅
ΠΠΎΠ³Π»Π°Π²ΡΠ΅ ΠΠ‘ΠΠ£ΠΠΠ‘
ΠΏΠΎΠ΄Π΅ΡΠ°Π²Π°ΡΠ΅
5.1 ΠΠΎΡΠΈΡΡΠ΅ΡΠ΅ ΠΌΠΎΠ΄ΡΠ»Π° Π·Π° Π΅Π²ΠΈΠ΄Π΅Π½ΡΠΈΡΠ°ΡΠ΅
ΠΠ΅Ρ ΡΠΌΠΎ Π½Π°ΠΊΡΠ°ΡΠΊΠΎ ΠΏΠΎΠ³Π»Π΅Π΄Π°Π»ΠΈ ΠΌΠΎΠ΄ΡΠ» Π·Π° Π΅Π²ΠΈΠ΄Π΅Π½ΡΠΈΡΠ°ΡΠ΅ Π½Ρ-3 Π³Π»Π΅Π΄Π°ΡΡΡΠΈ ΡΠΊΡΠΈΠΏΡΡ ΠΏΡΠ²ΠΎ.ΡΡ. Π£ ΠΎΠ²ΠΎΠΌ ΠΏΠΎΠ³Π»Π°Π²ΡΡ ΡΠ΅ΠΌΠΎ Π΄Π΅ΡΠ°ΡΠ½ΠΈΡΠ΅ ΠΏΠΎΠ³Π»Π΅Π΄Π°ΡΠΈ ΠΌΠΎΠ³ΡΡΠ΅ ΡΠΏΠΎΡΡΠ΅Π±Π΅ ΠΏΠΎΠ΄ΡΠΈΡΡΠ΅ΠΌΠ° Π·Π° Π΅Π²ΠΈΠ΄Π΅Π½ΡΠΈΡΠ°ΡΠ΅.
5.1.1 ΠΡΠ΅Π³Π»Π΅Π΄ Π΅Π²ΠΈΠ΄Π΅Π½ΡΠΈΡΠ΅
ΠΠ½ΠΎΠ³ΠΈ Π²Π΅Π»ΠΈΠΊΠΈ ΡΠΈΡΡΠ΅ΠΌΠΈ ΠΏΠΎΠ΄ΡΠΆΠ°Π²Π°ΡΡ Π½Π΅ΠΊΡ Π²ΡΡΡΡ ΠΌΠΎΠ³ΡΡΠ½ΠΎΡΡΠΈ Π΅Π²ΠΈΠ΄Π΅Π½ΡΠΈΡΠ°ΡΠ° ΠΏΠΎΡΡΠΊΠ°, Π° Π½Ρ-3 Π½ΠΈΡΠ΅ ΠΈΠ·ΡΠ·Π΅ΡΠ°ΠΊ. Π£ Π½Π΅ΠΊΠΈΠΌ ΡΠ»ΡΡΠ°ΡΠ΅Π²ΠΈΠΌΠ°, ΡΠ°ΠΌΠΎ ΠΏΠΎΡΡΠΊΠ΅ ΠΎ Π³ΡΠ΅ΡΡΠΈ ΡΠ΅ ΠΏΠΈΡΡ Ρ βΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΡΠΊΡ ΠΊΠΎΠ½Π·ΠΎΠ»Ρβ (ΠΊΠΎΡΠ° ΡΠ΅ ΠΎΠ±ΠΈΡΠ½ΠΎ ΡΡΠ΄Π΅ΡΡ Π½Π° ΡΠΈΡΡΠ΅ΠΌΠΈΠΌΠ° Π·Π°ΡΠ½ΠΎΠ²Π°Π½ΠΈΠΌ Π½Π° Π£Π½ΠΈΠΊ-Ρ). ΠΠ° Π΄ΡΡΠ³ΠΈΠΌ ΡΠΈΡΡΠ΅ΠΌΠΈΠΌΠ°, ΠΏΠΎΡΡΠΊΠ΅ ΡΠΏΠΎΠ·ΠΎΡΠ΅ΡΠ° ΠΌΠΎΠ³Ρ Π±ΠΈΡΠΈ ΠΏΡΠΈΠΊΠ°Π·Π°Π½Π΅ ΠΊΠ°ΠΎ ΠΈ Π΄Π΅ΡΠ°ΡΠ½ΠΈΡΠ΅ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡΠ΅. Π£ Π½Π΅ΠΊΠΈΠΌ ΡΠ»ΡΡΠ°ΡΠ΅Π²ΠΈΠΌΠ°, Π°Π»Π°ΡΠΈ Π·Π° Π΅Π²ΠΈΠ΄Π΅Π½ΡΠΈΡΠ°ΡΠ΅ ΡΠ΅ ΠΊΠΎΡΠΈΡΡΠ΅ Π·Π° ΠΈΠ·Π»Π°Π· ΠΏΠΎΡΡΠΊΠ° Π·Π° ΠΎΡΠΊΠ»Π°ΡΠ°ΡΠ΅ Π³ΡΠ΅ΡΠ°ΠΊΠ° ΠΊΠΎΡΠ΅ ΠΌΠΎΠ³Ρ Π±ΡΠ·ΠΎ Π΄Π° Π·Π°ΠΌΡΡΠ΅ ΠΈΠ·Π»Π°Π·.
Π‘ΡΠ±Π₯Π Π ΠΊΠΎΡΠΈ ΡΠ΅ ΠΊΠΎΡΠΈΡΡΠΈ Ρ Π½Ρ-3 ΠΏΡΠ΅ΡΠΏΠΎΡΡΠ°Π²ΡΠ° Π΄Π° ΡΡ ΡΠ²ΠΈ ΠΎΠ²ΠΈ Π½ΠΈΠ²ΠΎΠΈ ΡΠ°Π΄ΡΠΆΠ°ΡΠ° ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡΠ° ΠΊΠΎΡΠΈΡΠ½ΠΈ, Π° ΠΌΠΈ ΠΏΡΡΠΆΠ°ΠΌΠΎ ΡΠ΅Π»Π΅ΠΊΡΠΈΠ²Π°Π½, ΡΠ»ΠΎΡΠ΅Π²ΠΈΡ ΠΏΡΠΈΡΡΡΠΏ Π΅Π²ΠΈΠ΄Π΅Π½ΡΠΈΡΠ°ΡΡ ΠΏΠΎΡΡΠΊΠ°. ΠΠ²ΠΈΠ΄Π΅Π½ΡΠΈΡΠ°ΡΠ΅ ΡΠ΅ ΠΌΠΎΠΆΠ΅ ΠΏΠΎΡΠΏΡΠ½ΠΎ ΠΎΠ½Π΅ΠΌΠΎΠ³ΡΡΠΈΡΠΈ, ΠΎΠΌΠΎΠ³ΡΡΠΈΡΠΈ Π½Π° ΠΎΡΠ½ΠΎΠ²Ρ ΡΠ²Π°ΠΊΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ΅ ΠΈΠ»ΠΈ Π³Π»ΠΎΠ±Π°Π»Π½ΠΎ. Π£ ΡΡ ΡΠ²ΡΡ Ρ ΡΠ΅ ΠΊΠΎΡΠΈΡΡΠ΅ ΠΏΠΎΠ΄Π΅ΡΠΈΠ²ΠΈ Π½ΠΈΠ²ΠΎΠΈ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠ²Π½ΠΎΠ³ ΡΠ°Π΄ΡΠΆΠ°ΡΠ°. Π½Ρ-3 ΠΌΠΎΠ΄ΡΠ» Π·Π° Π΅Π²ΠΈΠ΄Π΅Π½ΡΠΈΡΠ°ΡΠ΅ ΠΏΡΡΠΆΠ° ΡΠ΅Π»Π°ΡΠΈΠ²Π½ΠΎ ΡΠ΅Π΄Π½ΠΎΡΡΠ°Π²Π°Π½ Π½Π°ΡΠΈΠ½ Π·Π° Π΄ΠΎΠ±ΠΈΡΠ°ΡΠ΅ ΠΊΠΎΡΠΈΡΠ½ΠΈΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡΠ° ΠΈΠ· Π²Π°ΡΠ΅ ΡΠΈΠΌΡΠ»Π°ΡΠΈΡΠ΅.
Π’ΡΠ΅Π±Π°Π»ΠΎ Π±ΠΈ Π΄Π° ΡΠ°Π·ΡΠΌΠ΅ΡΠ΅ Π΄Π° ΠΏΡΡΠΆΠ°ΠΌΠΎ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·Π°ΠΌ ΠΎΠΏΡΡΠ΅ Π½Π°ΠΌΠ΅Π½Π΅ β ΠΏΡΠ°ΡΠ΅ΡΠ΅ β Π·Π° ΠΈΠ·Π΄Π²Π°ΡΠ°ΡΠ΅ ΠΏΠΎΠ΄Π°ΡΠ°ΠΊΠ° ΠΈΠ· Π²Π°ΡΠΈΡ ΠΌΠΎΠ΄Π΅Π»Π°, ΡΡΠΎ Π±ΠΈ ΡΡΠ΅Π±Π°Π»ΠΎ Π΄Π° Π±ΡΠ΄Π΅ ΠΏΡΠ΅ΡΠ΅ΡΠΈΡΠ°Π½ΠΈ ΠΈΠ·Π»Π°Π· Π·Π° ΡΠΈΠΌΡΠ»Π°ΡΠΈΡΠ΅ (Π·Π° Π²ΠΈΡΠ΅ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡΠ° ΠΎ Π½Π°ΡΠ΅ΠΌ ΡΠΈΡΡΠ΅ΠΌΡ ΠΏΡΠ°ΡΠ΅ΡΠ°, ΠΏΠΎΠ³Π»Π΅Π΄Π°ΡΡΠ΅ ΠΎΠ΄Π΅ΡΠ°ΠΊ 5.3 Π²ΠΎΠ΄ΠΈΡΠ°). ΠΠ²ΠΈΠ΄Π΅Π½ΡΠΈΡΠ°ΡΠ΅ Π±ΠΈ ΡΡΠ΅Π±Π°Π»ΠΎ Π΄Π° Π±ΡΠ΄Π΅ ΠΏΡΠ΅ΡΠ΅ΡΠΈΡΠ°Π½ΠΈ ΠΌΠ΅ΡΠΎΠ΄ Π·Π° Π΄ΠΎΠ±ΠΈΡΠ°ΡΠ΅ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡΠ° ΠΎ ΠΎΡΠΊΠ»Π°ΡΠ°ΡΡ Π³ΡΠ΅ΡΠ°ΠΊΠ°, ΡΠΏΠΎΠ·ΠΎΡΠ΅ΡΠ°, ΠΏΠΎΡΡΠΊΠ° ΠΎ Π³ΡΠ΅ΡΠΊΠ°ΠΌΠ° ΠΈΠ»ΠΈ Π·Π° Π±ΡΠ·ΠΎ ΡΠ»Π°ΡΠ΅ ΠΏΠΎΡΡΠΊΠ° ΠΈΠ· Π²Π°ΡΠΈΡ ΡΠΊΡΠΈΠΏΡΠΈ ΠΈΠ»ΠΈ ΠΌΠΎΠ΄Π΅Π»Π° Ρ Π±ΠΈΠ»ΠΎ ΠΊΠΎΠΌ ΡΡΠ΅Π½ΡΡΠΊΡ.
Π’ΡΠ΅Π½ΡΡΠ½ΠΎ, ΡΠΈΡΡΠ΅ΠΌ Π΄Π΅ΡΠΈΠ½ΠΈΡΠ΅ ΡΠ΅Π΄Π°ΠΌ Π½ΠΈΠ²ΠΎΠ° (ΡΠΈΠΏΠΎΠ²Π°) Π΄Π½Π΅Π²Π½ΠΈΠΊ ΠΏΠΎΡΡΠΊΠ° Ρ ΡΠ°ΡΡΡΡΠ΅ΠΌ ΡΠ΅Π΄ΠΎΡΠ»Π΅Π΄Ρ ΡΠ°Π΄ΡΠΆΠ°ΡΠ° ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡΠ°.
- ΠΠΠ_ΠΠ Π ΠΠ - Π΅Π²ΠΈΠ΄Π΅Π½ΡΠΈΡΠ°ΡΠ΅ ΠΏΠΎΡΡΠΊΠ° ΠΎ Π³ΡΠ΅ΡΡΠΈ (ΠΏΠΎΠ²Π΅Π·Π°Π½ΠΈ ΠΌΠ°ΠΊΡΠΎ: ΠΠ‘_ΠΠΠ_ΠΠ Π ΠΠ );
- ΠΠΠ_ΠΠΠ Π - ΠΠ°ΠΏΠΈΡΠΈΡΠ΅ ΠΏΠΎΡΡΠΊΠ΅ ΡΠΏΠΎΠ·ΠΎΡΠ΅ΡΠ° (ΠΏΠΎΠ²Π΅Π·Π°Π½ΠΈ ΠΌΠ°ΠΊΡΠΎ: ΠΠ‘_ΠΠΠ_ΠΠΠ Π);
- ΠΠΠ_ΠΠΠΠ£Π - ΠΠ²ΠΈΠ΄Π΅Π½ΡΠΈΡΠ°Ρ ΡΠ΅Π»Π°ΡΠΈΠ²Π½ΠΎ ΡΠ΅ΡΠΊΠ΅ ΠΏΠΎΡΠ΅Π±Π½Π΅ ΠΏΠΎΡΡΠΊΠ΅ Π·Π° ΠΎΡΠΊΠ»Π°ΡΠ°ΡΠ΅ Π³ΡΠ΅ΡΠ°ΠΊΠ° (ΠΏΠΎΠ²Π΅Π·Π°Π½ΠΈ ΠΌΠ°ΠΊΡΠΎ: ΠΠ‘_ΠΠΠ_ΠΠΠΠ£Π);
- ΠΠΠ_ΠΠΠ€Π - ΡΠ΅Π³ΠΈΡΡΡΠ°ΡΠΈΡΠ° ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠ²Π½ΠΈΡ ΠΏΠΎΡΡΠΊΠ° ΠΎ Π½Π°ΠΏΡΠ΅ΡΠΊΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠ° (ΠΏΠΎΠ²Π΅Π·Π°Π½ΠΈ ΠΌΠ°ΠΊΡΠΎ: ΠΠ‘_ΠΠΠ_ΠΠΠ€Π);
- ΠΠΠ_Π€Π£ΠΠ¦Π’ΠΠΠ - ΠΠ²ΠΈΠ΄Π΅Π½ΡΠΈΡΠ° ΠΏΠΎΡΡΠΊΠ΅ ΠΊΠΎΡΠ΅ ΠΎΠΏΠΈΡΡΡΡ ΡΠ²Π°ΠΊΡ ΠΏΠΎΠ·Π²Π°Π½Ρ ΡΡΠ½ΠΊΡΠΈΡΡ (Π΄Π²Π° ΠΏΠΎΠ²Π΅Π·Π°Π½Π° ΠΌΠ°ΠΊΡΠΎΠ°: ΠΠ‘_ΠΠΠ_Π€Π£ΠΠ¦Π’ΠΠΠ, ΠΊΠΎΡΠΈ ΡΠ΅ ΠΊΠΎΡΠΈΡΡΠΈ Π·Π° ΡΡΠ½ΠΊΡΠΈΡΠ΅ ΡΠ»Π°Π½Π°, ΠΈ ΠΠ‘_ΠΠΠ_Π€Π£ΠΠ¦Π’ΠΠΠ_ΠΠΠΠ ΠΠ‘, ΠΊΠΎΡΠΈ ΡΠ΅ ΠΊΠΎΡΠΈΡΡΠΈ Π·Π° ΡΡΠ°ΡΠΈΡΠΊΠ΅ ΡΡΠ½ΠΊΡΠΈΡΠ΅);
- ΠΠΠ_ΠΠΠΠΠ¦ - Π΅Π²ΠΈΠ΄Π΅Π½ΡΠΈΡΠ°ΡΠ΅ ΠΏΠΎΡΡΠΊΠ° ΠΊΠΎΡΠ΅ ΠΎΠΏΠΈΡΡΡΡ Π»ΠΎΠ³ΠΈΡΠΊΠΈ ΡΠΎΠΊ ΡΠ½ΡΡΠ°Ρ ΡΡΠ½ΠΊΡΠΈΡΠ΅ (ΠΏΠΎΠ²Π΅Π·Π°Π½ΠΈ ΠΌΠ°ΠΊΡΠΎ: ΠΠ‘_ΠΠΠ_ΠΠΠΠΠ¦);
- ΠΠΠ_ΠΠΠ - ΠΠ²ΠΈΠ΄Π΅Π½ΡΠΈΡΠ° ΡΠ²Π΅ Π³ΠΎΡΠ΅ ΠΏΠΎΠΌΠ΅Π½ΡΡΠΎ (Π±Π΅Π· ΠΏΠΎΠ²Π΅Π·Π°Π½ΠΎΠ³ ΠΌΠ°ΠΊΡΠΎΠ°).
ΠΠ° ΡΠ²Π°ΠΊΠΈ ΡΠΈΠΏ (ΠΠΠ_Π’ΠΠΠ) ΠΏΠΎΡΡΠΎΡΠΈ ΠΈ ΠΠΠ_ΠΠΠΠΠ_Π’ΠΠΠ ΠΊΠΎΡΠΈ, Π°ΠΊΠΎ ΡΠ΅ ΠΊΠΎΡΠΈΡΡΠΈ, Π΄ΠΎΠ·Π²ΠΎΡΠ°Π²Π° Π΄Π° ΡΠ΅ ΡΠ²ΠΈ Π½ΠΈΠ²ΠΎΠΈ ΠΈΠ·Π½Π°Π΄ ΡΠ΅Π³Π° Π΅Π²ΠΈΠ΄Π΅Π½ΡΠΈΡΠ°ΡΡ ΠΏΠΎΡΠ΅Π΄ ΡΠΎΠΏΡΡΠ²Π΅Π½ΠΎΠ³ Π½ΠΈΠ²ΠΎΠ°. (ΠΠ°ΠΎ ΠΏΠΎΡΠ»Π΅Π΄ΠΈΡΠ° ΡΠΎΠ³Π°, ΠΠΠ_ΠΠ Π ΠΠ ΠΈ ΠΠΠ_ΠΠΠΠΠ_ΠΠ Π ΠΠ , ΠΈ ΠΠΠ_ΠΠΠ ΠΈ ΠΠΠ_ΠΠΠΠΠ_ΠΠΠ ΡΡ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»Π½ΠΎ Π΅ΠΊΠ²ΠΈΠ²Π°Π»Π΅Π½ΡΠ½ΠΈ.) ΠΠ° ΠΏΡΠΈΠΌΠ΅Ρ, ΠΎΠΌΠΎΠ³ΡΡΠ°Π²Π°ΡΠ΅ ΠΠΠ_ΠΠΠ€Π ΡΠ΅ Π΄ΠΎΠ·Π²ΠΎΠ»ΠΈΡΠΈ ΡΠ°ΠΌΠΎ ΠΏΠΎΡΡΠΊΠ΅ ΠΊΠΎΡΠ΅ ΠΎΠ±Π΅Π·Π±Π΅ΡΡΡΠ΅ ΠΌΠ°ΠΊΡΠΎ ΠΠ‘_ΠΠΠ_ΠΠΠ€Π, Π΄ΠΎΠΊ ΡΠ΅ ΠΎΠΌΠΎΠ³ΡΡΠ°Π²Π°ΡΠ΅ ΠΠΠ_ΠΠΠΠΠ_ΠΠΠ€Π ΡΠ°ΠΊΠΎΡΠ΅ ΡΠΊΡΡΡΠΈΠ²Π°ΡΠΈ ΠΏΠΎΡΡΠΊΠ΅ ΠΊΠΎΡΠ΅ ΠΎΠ±Π΅Π·Π±Π΅ΡΡΡΡ ΠΌΠ°ΠΊΡΠΎΠΈ , ΠΈ ΠΠΠ_ΠΠΠΠΠΠΠ£ΠΠΠ‘_Π Π_ΠΠΠΠΠΠΠ£ΠΠΠ‘.
Π’Π°ΠΊΠΎΡΠ΅ ΠΎΠ±Π΅Π·Π±Π΅ΡΡΡΠ΅ΠΌΠΎ Π±Π΅Π·ΡΡΠ»ΠΎΠ²Π½ΠΈ ΠΌΠ°ΠΊΡΠΎ Π·Π° Π΅Π²ΠΈΠ΄Π΅Π½ΡΠΈΡΠ°ΡΠ΅ ΠΊΠΎΡΠΈ ΡΠ΅ ΡΠ²Π΅ΠΊ ΠΏΡΠΈΠΊΠ°Π·ΡΡΠ΅, Π±Π΅Π· ΠΎΠ±Π·ΠΈΡΠ° Π½Π° Π½ΠΈΠ²ΠΎ Π΅Π²ΠΈΠ΄Π΅Π½ΡΠΈΡΠ°ΡΠ° ΠΈΠ»ΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ ΠΈΠ·Π±ΠΎΡΠ°.
- ΠΠ‘_ΠΠΠ_Π£ΠΠ¦ΠΠΠ - ΠΠ΅Π·ΡΡΠ»ΠΎΠ²Π½ΠΎ Π΅Π²ΠΈΠ΄Π΅Π½ΡΠΈΡΠ°ΡΠ΅ ΠΏΠΎΠ²Π΅Π·Π°Π½Π΅ ΠΏΠΎΡΡΠΊΠ΅ (Π±Π΅Π· ΠΏΠΎΠ²Π΅Π·Π°Π½ΠΎΠ³ Π½ΠΈΠ²ΠΎΠ° Π΅Π²ΠΈΠ΄Π΅Π½ΡΠΈΡΠ°ΡΠ°).
Π‘Π²Π°ΠΊΠΈ Π½ΠΈΠ²ΠΎ ΡΠ΅ ΠΌΠΎΠΆΠ΅ ΠΈΡΠΏΠΈΡΠΈΠ²Π°ΡΠΈ ΠΏΠΎΡΠ΅Π΄ΠΈΠ½Π°ΡΠ½ΠΎ ΠΈΠ»ΠΈ ΠΊΡΠΌΡΠ»Π°ΡΠΈΠ²Π½ΠΎ. ΠΠ²ΠΈΠ΄Π΅Π½ΡΠΈΡΠ°ΡΠ΅ ΡΠ΅ ΠΌΠΎΠΆΠ΅ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠΈΡΠ°ΡΠΈ ΠΊΠΎΡΠΈΡΡΠ΅ΡΠ΅ΠΌ ΡΡ ΠΏΡΠΎΠΌΠ΅Π½ΡΠΈΠ²Π΅ ΠΎΠΊΡΡΠΆΠ΅ΡΠ° ΠΠ‘_ΠΠΠ ΠΈΠ»ΠΈ Π΅Π²ΠΈΠ΄Π΅Π½ΡΠΈΡΠ°ΡΠ΅ΠΌ ΠΏΠΎΠ·ΠΈΠ²Π° ΡΠΈΡΡΠ΅ΠΌΡΠΊΠ΅ ΡΡΠ½ΠΊΡΠΈΡΠ΅. ΠΠ°ΠΎ ΡΡΠΎ ΡΠ΅ ΡΠ°Π½ΠΈΡΠ΅ ΠΏΡΠΈΠΊΠ°Π·Π°Π½ΠΎ, ΡΠΈΡΡΠ΅ΠΌ Π΅Π²ΠΈΠ΄Π΅Π½ΡΠΈΡΠ°ΡΠ° ΠΈΠΌΠ° ΠΠΎΠΊΠΈΠ³Π΅Π½ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡΡ ΠΈ ΡΠ°Π΄Π° ΡΠ΅ ΠΏΡΠ°Π²ΠΎ Π²ΡΠ΅ΠΌΠ΅ Π΄Π° ΡΠ΅ ΠΏΡΠ΅Π³Π»Π΅Π΄Π°ΡΠ΅ Π°ΠΊΠΎ Π²Π΅Ρ Π½ΠΈΡΡΠ΅.
Π‘Π°Π΄Π° ΠΊΠ°Π΄Π° ΡΡΠ΅ Π΄Π΅ΡΠ°ΡΠ½ΠΎ ΠΏΡΠΎΡΠΈΡΠ°Π»ΠΈ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡΡ, Ρ Π°ΡΠ΄Π΅ Π΄Π° ΠΈΡΠΊΠΎΡΠΈΡΡΠΈΠΌΠΎ ΡΠΎ Π·Π½Π°ΡΠ΅ Π΄Π° Π΄ΠΎΠ±ΠΈΡΠ΅ΠΌΠΎ Π½Π΅ΠΊΠ΅ Π·Π°Π½ΠΈΠΌΡΠΈΠ²Π΅ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡΠ΅ ΠΈΠ· ΠΏΡΠΈΠΌΠ΅ΡΠ° ΡΠΊΡΠΈΠΏΡΠ΅ ΡΡΡΠ°ΡΡΡ /ΠΌΠΈΡΠΈΡΡΡ.ΡΡΠΊΠΎΡΠ΅ ΡΡΠ΅ Π²Π΅Ρ ΡΠ°ΡΡΠ°Π²ΠΈΠ»ΠΈ.
5.1.2 ΠΠΌΠΎΠ³ΡΡΠΈΡΠ΅ Π΅Π²ΠΈΠ΄Π΅Π½ΡΠΈΡΠ°ΡΠ΅
Π₯Π°ΡΠ΄Π΅ Π΄Π° ΠΊΠΎΡΠΈΡΡΠΈΠΌΠΎ ΠΏΡΠΎΠΌΠ΅Π½ΡΠΈΠ²Ρ ΠΎΠΊΡΡΠΆΠ΅ΡΠ° ΠΠ‘_ΠΠΠ Π΄Π° ΠΏΠΎΠΊΡΠ΅Π½Π΅ΠΌΠΎ ΡΠΎΡ Π½Π΅ΠΊΠ΅ Π΅Π²ΠΈΠ΄Π΅Π½ΡΠΈΡΠ΅, Π°Π»ΠΈ ΠΏΡΠ²ΠΎ, ΡΠ°ΠΌΠΎ Π΄Π° Π±ΠΈΡΡΠ΅ ΡΠ΅ ΠΎΡΠΈΡΠ΅Π½ΡΠΈΡΠ°Π»ΠΈ, ΠΏΠΎΠΊΡΠ΅Π½ΠΈΡΠ΅ ΠΏΠΎΡΠ»Π΅Π΄ΡΡ ΡΠΊΡΠΈΠΏΡΡ ΠΊΠ°ΠΎ ΡΡΠΎ ΡΡΠ΅ ΡΠ°Π΄ΠΈΠ»ΠΈ ΡΠ°Π½ΠΈΡΠ΅,
$ ./waf --run scratch/myfirst
Π’ΡΠ΅Π±Π°Π»ΠΎ Π±ΠΈ Π΄Π° Π²ΠΈΠ΄ΠΈΡΠ΅ ΠΏΠΎΠ·Π½Π°ΡΠΈ ΠΈΠ·Π»Π°Π· ΠΈΠ· ΠΏΡΠ²ΠΎΠ³ ΠΏΡΠΈΠΌΠ΅ΡΠ° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠ° Π½Ρ-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
ΠΡΠΏΠΎΡΡΠ°Π²ΠΈΠ»ΠΎ ΡΠ΅ Π΄Π° ΡΡ "ΠΏΠΎΡΠ»Π°ΡΠ΅" ΠΈ "ΠΏΡΠΈΠΌΡΠ΅Π½Π΅" ΠΏΠΎΡΡΠΊΠ΅ ΠΊΠΎΡΠ΅ Π²ΠΈΠ΄ΠΈΡΠ΅ ΠΈΠ·Π½Π°Π΄ Π·Π°ΠΏΡΠ°Π²ΠΎ Π·Π°Π±Π΅Π»Π΅ΠΆΠ΅Π½Π΅ ΠΏΠΎΡΡΠΊΠ΅ ΠΎΠ΄ Π£Π΄ΠΏΠΡΡ ΠΎΠ¦Π»ΠΈΠ΅Π½ΡΠΠΏΠΏΠ»ΠΈΡΠ°ΡΠΈΠΎΠ½ ΠΈ Π£Π΄ΠΏΠΡΡ ΠΎΠ‘Π΅ΡΠ²Π΅ΡΠΠΏΠΏΠ»ΠΈΡΠ°ΡΠΈΠΎΠ½. ΠΠ° ΠΏΡΠΈΠΌΠ΅Ρ, ΠΌΠΎΠΆΠ΅ΠΌΠΎ Π·Π°ΡΡΠ°ΠΆΠΈΡΠΈ ΠΎΠ΄ ΠΊΠ»ΠΈΡΠ΅Π½ΡΡΠΊΠ΅ Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ΅ Π΄Π° ΠΎΠ΄ΡΡΠ°ΠΌΠΏΠ° Π΄ΠΎΠ΄Π°ΡΠ½Π΅ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡΠ΅ ΡΠ°ΠΊΠΎ ΡΡΠΎ ΡΠ΅ΠΌΠΎ ΠΏΠΎΡΡΠ°Π²ΠΈΡΠΈ Π½ΠΈΠ²ΠΎ Π΅Π²ΠΈΠ΄Π΅Π½ΡΠΈΡΠ°ΡΠ° ΠΏΡΠ΅ΠΊΠΎ ΠΏΡΠΎΠΌΠ΅Π½ΡΠΈΠ²Π΅ ΠΎΠΊΡΡΠΆΠ΅ΡΠ° ΠΠ‘_ΠΠΠ.
ΠΠ΄ ΡΠ°Π΄Π° ΡΡ ΠΏΡΠ΅ΡΠΏΠΎΡΡΠ°Π²ΠΈΡΠΈ Π΄Π° ΠΊΠΎΡΠΈΡΡΠΈΡΠ΅ ΡΡΡΠΊΡ Π½Π°Π»ΠΈΠΊ ΡΡ ΠΊΠΎΡΠ° ΠΊΠΎΡΠΈΡΡΠΈ ΡΠΈΠ½ΡΠ°ΠΊΡΡ "ΠΠΠ ΠΠΠΠΠ=Π²Π°Π»ΡΠ΅". ΠΠΊΠΎ ΠΊΠΎΡΠΈΡΡΠΈΡΠ΅ ΡΠΊΠΎΡΠΊΡ Π½Π°Π»ΠΈΠΊ ΡΡΡ -Ρ, ΠΎΠ½Π΄Π° ΡΠ΅ΡΠ΅ ΠΌΠΎΡΠ°ΡΠΈ Π΄Π° ΠΊΠΎΠ½Π²Π΅ΡΡΡΡΠ΅ΡΠ΅ ΠΌΠΎΡΠ΅ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ Ρ ΡΠΈΠ½ΡΠ°ΠΊΡΡ βΡΠ΅ΡΠ΅Π½Π² ΠΏΡΠΎΠΌΠ΅Π½ΡΠΈΠ²Π΅ Π²ΡΠ΅Π΄Π½ΠΎΡΡΠΈβ ΠΊΠΎΡΡ Π·Π°Ρ ΡΠ΅Π²Π°ΡΡ ΡΠ΅ ΡΡΡΠΊΠ΅.
Π’ΡΠ΅Π½ΡΡΠ½ΠΎ, Π£ΠΠ Π΅ΡΡ ΠΎ ΠΊΠ»ΠΈΡΠ΅Π½ΡΡΠΊΠ° Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ° ΠΎΠ΄Π³ΠΎΠ²Π°ΡΠ° Π½Π° ΡΠ»Π΅Π΄Π΅ΡΠΈ ΡΠ΅Π΄ ΠΊΠΎΠ΄Π° ΡΡΡΠ°ΡΡΡ /ΠΌΠΈΡΠΈΡΡΡ.ΡΡ,
LogComponentEnable("UdpEchoClientApplication", LOG_LEVEL_INFO);
ΠΠΌΠΎΠ³ΡΡΠ°Π²Π° Π½ΠΈΠ²ΠΎ Π΅Π²ΠΈΠ΄Π΅Π½ΡΠΈΡΠ°ΡΠ° ΠΠΠ_ΠΠΠΠΠ_ΠΠΠ€Π. ΠΠ°Π΄Π° ΠΏΡΠΎΡΠ»Π΅Π΄ΠΈΠΌΠΎ ΠΎΠ·Π½Π°ΠΊΡ Π½ΠΈΠ²ΠΎΠ° Π΅Π²ΠΈΠ΄Π΅Π½ΡΠΈΡΠ΅, ΠΌΠΈ Π·Π°ΠΏΡΠ°Π²ΠΎ ΠΎΠΌΠΎΠ³ΡΡΠ°Π²Π°ΠΌΠΎ ΡΠ°Ρ Π½ΠΈΠ²ΠΎ ΠΈ ΡΠ²Π΅ Π½ΠΈΠΆΠ΅ Π½ΠΈΠ²ΠΎΠ΅. Π£ ΠΎΠ²ΠΎΠΌ ΡΠ»ΡΡΠ°ΡΡ, ΠΎΠΌΠΎΠ³ΡΡΠΈΠ»ΠΈ ΡΠΌΠΎ ΠΠ‘_ΠΠΠ_ΠΠΠ€Π, ΠΠ‘_ΠΠΠ_ΠΠΠΠ£Π, ΠΠ‘_ΠΠΠ_ΠΠΠ Π ΠΈ ΠΠ‘_ΠΠΠ_ΠΠ Π ΠΠ . ΠΠΎΠΆΠ΅ΠΌΠΎ ΠΏΠΎΠ²Π΅ΡΠ°ΡΠΈ Π½ΠΈΠ²ΠΎ Π΅Π²ΠΈΠ΄Π΅Π½ΡΠΈΡΠ°ΡΠ° ΠΈ Π΄ΠΎΠ±ΠΈΡΠΈ Π²ΠΈΡΠ΅ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡΠ°, Π±Π΅Π· ΠΏΡΠΎΠΌΠ΅Π½Π° ΡΠΊΡΠΈΠΏΡΠ΅ ΠΈ ΠΏΠΎΠ½ΠΎΠ²Π½Π΅ ΠΊΠΎΠΌΠΏΠΈΠ»Π°ΡΠΈΡΠ΅, ΠΏΠΎΡΡΠ°Π²ΡΠ°ΡΠ΅ΠΌ ΠΠ‘_ΠΠΠ ΠΏΡΠΎΠΌΠ΅Π½ΡΠΈΠ²Π΅ ΠΎΠΊΡΡΠΆΠ΅ΡΠ° Π½Π° ΡΠ»Π΅Π΄Π΅ΡΠΈ Π½Π°ΡΠΈΠ½:
$ export NS_LOG=UdpEchoClientApplication=level_all
Π’Π°ΠΊΠΎ ΡΠΌΠΎ ΠΏΠΎΡΡΠ°Π²ΠΈΠ»ΠΈ ΡΡ ΡΡ Π΅Π»Π» ΠΏΡΠΎΠΌΠ΅Π½ΡΠΈΠ²Ρ ΠΠ‘_ΠΠΠ Π½Π° ΡΠ»Π΅Π΄Π΅ΡΡ Π²ΡΠ΅Π΄Π½ΠΎΡΡ,
UdpEchoClientApplication=level_all
ΠΠ΅Π²Π° ΡΡΡΠ°Π½Π° Π΄ΠΎΠ΄Π΅Π»Π΅ ΡΠ΅ ΠΈΠΌΠ΅ Π΅Π²ΠΈΠ΄Π΅Π½ΡΠΈΡΠ°Π½Π΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ΅ ΠΊΠΎΡΡ ΠΆΠ΅Π»ΠΈΠΌΠΎ Π΄Π° ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠΈΡΠ΅ΠΌΠΎ, Π° Π΄Π΅ΡΠ½Π° ΡΠ΅ ΠΎΠ·Π½Π°ΠΊΠ° ΠΊΠΎΡΡ ΠΆΠ΅Π»ΠΈΠΌΠΎ Π΄Π° ΠΏΡΠΈΠΌΠ΅Π½ΠΈΠΌΠΎ Π·Π° ΡΡ. Π£ ΠΎΠ²ΠΎΠΌ ΡΠ»ΡΡΠ°ΡΡ, ΠΎΠΌΠΎΠ³ΡΡΠΈΡΠ΅ΠΌΠΎ ΡΠ²Π΅ Π½ΠΈΠ²ΠΎΠ΅ ΠΎΡΠΊΠ»Π°ΡΠ°ΡΠ° Π³ΡΠ΅ΡΠ°ΠΊΠ° Ρ Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠΈ. ΠΠΊΠΎ ΠΏΠΎΠΊΡΠ΅Π½Π΅ΡΠ΅ ΡΠΊΡΠΈΠΏΡΡ ΡΠ° ΠΠ‘_ΠΠΠ ΠΏΠΎΠ΄Π΅ΡΠ΅Π½ΠΈΠΌ Π½Π° ΠΎΠ²Π°Ρ Π½Π°ΡΠΈΠ½, Π½Ρ-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 (this)
... Π£ΠΏΠΎΡΡΠ΅Π±Π° NS_LOG_FUNCTION_NOARGS ()
ΡΠ°ΠΌΠΎ Ρ ΡΡΠ°ΡΠΈΡΠΊΠΈΠΌ ΡΡΠ½ΠΊΡΠΈΡΠ°ΠΌΠ°. ΠΠ΅ΡΡΡΠΈΠΌ, ΠΈΠΌΠ°ΡΡΠ΅ Π½Π° ΡΠΌΡ Π΄Π° Π½Ρ-3 ΡΠΈΡΡΠ΅ΠΌ Π½ΠΈΡΠ΅ ΠΎΠ±Π°Π²Π΅Π·Π°Π½ Π΄Π° ΠΏΠΎΠ΄ΡΠΆΠ°Π²Π° Π±ΠΈΠ»ΠΎ ΠΊΠ°ΠΊΠ²Ρ ΡΡΠ½ΠΊΡΠΈΡΡ Π΅Π²ΠΈΠ΄Π΅Π½ΡΠΈΡΠ°ΡΠ°. ΠΠ΄Π»ΡΠΊΠ° ΠΎ ΡΠΎΠΌΠ΅ ΠΊΠΎΠ»ΠΈΠΊΠΎ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡΠ° ΡΠ΅ ΡΠ½ΠΈΠΌΠ° ΠΏΡΠ΅ΠΏΡΡΡΠ° ΡΠ΅ ΠΈΠ½Π΄ΠΈΠ²ΠΈΠ΄ΡΠ°Π»Π½ΠΎΠΌ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠ΅ΡΡ ΠΌΠΎΠ΄Π΅Π»Π°. Π£ ΡΠ»ΡΡΠ°ΡΡ Π΅Ρ
ΠΎ Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ°, Π΄ΠΎΡΡΡΠΏΠ½Π° ΡΠ΅ Π²Π΅Π»ΠΈΠΊΠ° ΠΊΠΎΠ»ΠΈΡΠΈΠ½Π° ΠΈΠ·Π»Π°Π·Π° Π΅Π²ΠΈΠ΄Π΅Π½ΡΠΈΡΠ΅.
Π‘Π°Π΄Π° ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΠΎΠ³Π»Π΅Π΄Π°ΡΠΈ Π΄Π½Π΅Π²Π½ΠΈΠΊ ΠΏΠΎΠ·ΠΈΠ²Π° ΡΡΠ½ΠΊΡΠΈΡΠ° ΠΊΠΎΡΠ΅ ΡΠ΅ ΠΎΠ±Π°Π²ΠΈΠ»Π° Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ°. ΠΠΊΠΎ ΠΏΠ°ΠΆΡΠΈΠ²ΠΎ ΠΏΠΎΠ³Π»Π΅Π΄Π°ΡΠ΅, ΠΏΡΠΈΠΌΠ΅ΡΠΈΡΠ΅ΡΠ΅ Π΄Π²ΠΎΡΠ°ΡΠΊΡ ΠΈΠ·ΠΌΠ΅ΡΡ ΡΠ΅Π΄Π° Π£Π΄ΠΏΠΡΡ ΠΎΠ¦Π»ΠΈΠ΅Π½ΡΠΠΏΠΏΠ»ΠΈΡΠ°ΡΠΈΠΎΠ½ ΠΈ Π½Π°Π·ΠΈΠ² ΠΌΠ΅ΡΠΎΠ΄Π΅, Π³Π΄Π΅ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΎΡΠ΅ΠΊΠΈΠ²Π°ΡΠΈ Π΄Π° Π²ΠΈΠ΄ΠΈΡΠ΅ Π¦++ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ ΠΎΠΏΡΠ΅Π³Π° (: :). ΠΠ²ΠΎ ΡΠ΅ Π½Π°ΠΌΠ΅ΡΠ½ΠΎ.
ΠΠ²ΠΎ Π·Π°ΠΏΡΠ°Π²ΠΎ Π½ΠΈΡΠ΅ ΠΈΠΌΠ΅ ΠΊΠ»Π°ΡΠ΅, Π²Π΅Ρ ΠΈΠΌΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ΅ Π·Π° Π΅Π²ΠΈΠ΄Π΅Π½ΡΠΈΡΠ°ΡΠ΅. ΠΠ°Π΄Π° ΠΏΠΎΡΡΠΎΡΠΈ ΠΏΠΎΠ΄ΡΠ΄Π°ΡΠ°ΡΠ΅ ΠΈΠ·ΠΌΠ΅ΡΡ ΠΈΠ·Π²ΠΎΡΠ½Π΅ Π΄Π°ΡΠΎΡΠ΅ΠΊΠ΅ ΠΈ ΠΊΠ»Π°ΡΠ΅, ΡΠΎ ΡΠ΅ ΠΎΠ±ΠΈΡΠ½ΠΎ ΠΈΠΌΠ΅ ΠΊΠ»Π°ΡΠ΅, Π°Π»ΠΈ ΡΡΠ΅Π±Π° Π΄Π° ΡΡ Π²Π°ΡΠΈΡΠ΅ Π΄Π° ΡΠΎ Π·Π°ΠΏΡΠ°Π²ΠΎ Π½ΠΈΡΠ΅ ΠΈΠΌΠ΅ ΠΊΠ»Π°ΡΠ΅, ΠΈ Π΄Π° ΠΏΠΎΡΡΠΎΡΠΈ ΡΠ΅Π΄Π½Π° Π΄Π²ΠΎΡΠ°ΡΠΊΠ° ΡΠΌΠ΅ΡΡΠΎ Π΄Π²ΠΎΡΡΡΡΠΊΠ΅. ΠΠ²ΠΎ ΡΠ΅ Π½Π°ΡΠΈΠ½ Π΄Π° Π²Π°ΠΌ ΠΏΠΎΠΌΠΎΠ³Π½Π΅ Π΄Π° ΠΊΠΎΠ½ΡΠ΅ΠΏΡΡΠ°Π»Π½ΠΎ ΠΎΠ΄Π²ΠΎΡΠΈΡΠ΅ ΠΈΠΌΠ΅ Π±Π΅Π°Π½-Π° Π·Π° Π΅Π²ΠΈΠ΄Π΅Π½ΡΠΈΡΠ°ΡΠ΅ ΠΎΠ΄ Π½Π°Π·ΠΈΠ²Π° ΠΊΠ»Π°ΡΠ΅ Π½Π° ΡΠ΅Π»Π°ΡΠΈΠ²Π½ΠΎ ΡΡΠΏΡΠΈΠ»Π°Π½ Π½Π°ΡΠΈΠ½.
ΠΠ΅ΡΡΡΠΈΠΌ, Ρ Π½Π΅ΠΊΠΈΠΌ ΡΠ»ΡΡΠ°ΡΠ΅Π²ΠΈΠΌΠ° ΠΌΠΎΠΆΠ΅ Π±ΠΈΡΠΈ ΡΠ΅ΡΠΊΠΎ ΠΎΠ΄ΡΠ΅Π΄ΠΈΡΠΈ ΠΊΠΎΡΠΈ ΠΌΠ΅ΡΠΎΠ΄ Π·Π°ΠΏΡΠ°Π²ΠΎ Π³Π΅Π½Π΅ΡΠΈΡΠ΅ ΠΏΠΎΡΡΠΊΡ Π΄Π½Π΅Π²Π½ΠΈΠΊΠ°. ΠΠΊΠΎ ΠΏΠΎΠ³Π»Π΅Π΄Π°ΡΠ΅ Π³ΠΎΡΡΠΈ ΡΠ΅ΠΊΡΡ, ΠΌΠΎΠΆΠ΄Π° ΡΠ΅ΡΠ΅ ΡΠ΅ ΠΏΠΈΡΠ°ΡΠΈ Π³Π΄Π΅ ΡΠ΅ Π»ΠΈΠ½ΠΈΡΠ° "Received 1024 bytes from 10.1.1.2
" ΠΠ²Π°Ρ ΠΏΡΠΎΠ±Π»Π΅ΠΌ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΠ΅ΡΠΈΡΠΈ ΠΏΠΎΠ΄Π΅ΡΠ°Π²Π°ΡΠ΅ΠΌ Π½ΠΈΠ²ΠΎΠ° ΠΏΡΠ΅ΡΠΈΠΊ_ΡΡΠ½Ρ Π½Π° ΠΏΡΠΎΠΌΠ΅Π½ΡΠΈΠ²Ρ ΠΎΠΊΡΡΠΆΠ΅ΡΠ° ΠΠ‘_ΠΠΠ. ΠΠΎΠΊΡΡΠ°ΡΡΠ΅ ΡΠ»Π΅Π΄Π΅ΡΠ΅:
$ export 'NS_LOG=UdpEchoClientApplication=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.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()
Π‘Π°Π΄Π° ΠΌΠΎΠΆΠ΅ΡΠ΅ Π²ΠΈΠ΄Π΅ΡΠΈ Π΄Π° ΡΡ ΡΠ²Π΅ ΠΏΠΎΡΡΠΊΠ΅ ΠΊΠΎΡΠ΅ Π΄ΠΎΠ»Π°Π·Π΅ ΠΈΠ· Π£ΠΠ Π΅ΡΡ
ΠΎ ΠΊΠ»ΠΈΡΠ΅Π½ΡΡΠΊΠ΅ Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ΅ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠΎΠ²Π°Π½Π΅ ΠΊΠ°ΠΎ ΡΠ°ΠΊΠ²Π΅. ΠΠΎΡΡΠΊΠ° "Received 1024 bytes from 10.1.1.2
" ΡΠ°Π΄Π° ΡΠ΅ ΡΠ°ΡΠ½ΠΎ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠΎΠ²Π°Π½ΠΎ Π΄Π° Π΄ΠΎΠ»Π°Π·ΠΈ ΠΈΠ· Π΅ΡΡ
ΠΎ ΠΊΠ»ΠΈΡΠ΅Π½ΡΡΠΊΠ΅ Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ΅. ΠΡΠ΅ΠΎΡΡΠ°Π»Π° ΠΏΠΎΡΡΠΊΠ° ΠΌΠΎΡΠ° Π΄ΠΎΡΠΈ ΠΈΠ· Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ΅ Π£ΠΠ Π΅Ρ
ΠΎ ΡΠ΅ΡΠ²Π΅ΡΠ°. ΠΠ²Ρ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ ΠΌΠΎΠΆΠ΅ΠΌΠΎ ΠΎΠΌΠΎΠ³ΡΡΠΈΡΠΈ ΡΠ°ΠΊΠΎ ΡΡΠΎ ΡΠ΅ΠΌΠΎ ΡΠ½Π΅ΡΠΈ Π»ΠΈΡΡΡ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΈ ΡΠ°Π·Π΄Π²ΠΎΡΠ΅Π½ΠΈΡ
Π΄Π²Π΅ ΡΠ°ΡΠΊΠ΅ Ρ ΠΏΡΠΎΠΌΠ΅Π½ΡΠΈΠ²Ρ ΠΎΠΊΡΡΠΆΠ΅ΡΠ° ΠΠ‘_ΠΠΠ.
$ 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()
Π’Π°ΠΊΠΎΡΠ΅ ΡΠ΅ ΠΏΠΎΠ½Π΅ΠΊΠ°Π΄ ΠΊΠΎΡΠΈΡΠ½ΠΎ ΠΌΠΎΡΠΈ Π΄Π° Π²ΠΈΠ΄ΠΈΡΠ΅ Π²ΡΠ΅ΠΌΠ΅ ΡΠΈΠΌΡΠ»Π°ΡΠΈΡΠ΅ Ρ ΠΊΠΎΡΠ΅ΠΌ ΡΠ΅ Π³Π΅Π½Π΅ΡΠΈΡΠ°Π½Π° ΠΏΠΎΡΡΠΊΠ° Π΄Π½Π΅Π²Π½ΠΈΠΊΠ°. Π’ΠΎ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΡΠΈΠ½ΠΈΡΠΈ Π΄ΠΎΠ΄Π°Π²Π°ΡΠ΅ΠΌ Π±ΠΈΡΠ° ΠΠ ΠΏΡΠ΅ΡΠΈΠΊΡ_Π²ΡΠ΅ΠΌΠ΅:
$ 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()
ΠΠΌΠ°ΡΡΠ΅ Π½Π° ΡΠΌΡ Π΄Π° ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡ Π·Π° Π£Π΄ΠΏΠΡΡ ΠΎΠ‘Π΅ΡΠ²Π΅Ρ ΡΠ΅ ΠΏΠΎΠ·Π²Π°Π½ ΡΠΎΠΊΠΎΠΌ ΡΠΈΠΌΡΠ»Π°ΡΠΈΡΠ΅ 0 ΡΠ΅ΠΊΡΠ½Π΄ΠΈ. ΠΠ²ΠΎ ΡΠ΅ Π·Π°ΠΏΡΠ°Π²ΠΎ Π΄Π΅ΡΠ°Π²Π° ΠΏΡΠ΅ Π½Π΅Π³ΠΎ ΡΡΠΎ ΡΠΈΠΌΡΠ»Π°ΡΠΈΡΠ° ΠΏΠΎΡΠ½Π΅, Π°Π»ΠΈ ΡΠ΅ Π²ΡΠ΅ΠΌΠ΅ ΠΏΡΠΈΠΊΠ°Π·Π°Π½ΠΎ ΠΊΠ°ΠΎ Π½ΡΠ»Π° ΡΠ΅ΠΊΡΠ½Π΄ΠΈ. ΠΡΡΠΎ Π²Π°ΠΆΠΈ ΠΈ Π·Π° ΠΏΠΎΡΡΠΊΡ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΠ° Π£Π΄ΠΏΠΡΡ ΠΎΠ¦Π»ΠΈΠ΅Π½Ρ.
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()
ΠΠΎΠ΄ΡΠ΅ΡΠΈΠΌΠΎ ΡΠ΅ Π΄Π° ΡΠ΅ ΡΡΠ΅Π½Π°ΡΠΈΠΎ ΡΡΡΠ°ΡΡΡ /ΡΠΈΡΡΡ.ΡΡ ΠΏΠΎΠΊΡΠ΅Π½ΡΠΎ Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΡ Π΅Ρ ΠΎ ΡΠ΅ΡΠ²Π΅ΡΠ° ΡΠ΅Π΄Π½Ρ ΡΠ΅ΠΊΡΠ½Π΄Ρ ΠΏΡΠ΅ ΠΏΠΎΡΠ΅ΡΠΊΠ° ΡΠΈΠΌΡΠ»Π°ΡΠΈΡΠ΅. Π‘Π°Π΄Π° ΠΌΠΎΠΆΠ΅ΡΠ΅ Π²ΠΈΠ΄Π΅ΡΠΈ Π΄Π° ΡΠ΅ ΠΌΠ΅ΡΠΎΠ΄ Π‘ΡΠ°ΡΡΠΠΏΠΏΠ»ΠΈΡΠ°ΡΠΈΠΎΠ½ ΡΠ΅ΡΠ²Π΅Ρ ΡΠ΅ Π·Π°ΠΏΡΠ°Π²ΠΎ ΠΏΠΎΠ·Π²Π°Π½ Ρ ΠΏΡΠ²ΠΎΡ ΡΠ΅ΠΊΡΠ½Π΄ΠΈ. Π’Π°ΠΊΠΎΡΠ΅ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΡΠΈΠΌΠ΅ΡΠΈΡΠΈ Π΄Π° Π΅Ρ ΠΎ ΠΊΠ»ΠΈΡΠ΅Π½Ρ ΠΏΠΎΡΠΈΡΠ΅ Ρ Π΄ΡΡΠ³ΠΎΡ ΡΠ΅ΠΊΡΠ½Π΄ΠΈ ΡΠΈΠΌΡΠ»Π°ΡΠΈΡΠ΅, ΠΊΠ°ΠΎ ΡΡΠΎ ΡΠΌΠΎ ΡΡΠ°ΠΆΠΈΠ»ΠΈ Ρ ΡΠΊΡΠΈΠΏΡΠΈ.
Π‘Π°Π΄Π° ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΡΠ°ΡΠΈΡΠΈ Π½Π°ΠΏΡΠ΅Π΄Π°ΠΊ ΡΠΈΠΌΡΠ»Π°ΡΠΈΡΠ΅ Π½Π° ΠΏΠΎΠ·ΠΈΠ² Π‘ΡΡ Π΅Π΄ΡΠ»Π΅Π’ΡΠ°Π½ΡΠΌΠΈΡ Ρ ΠΊΠ»ΠΈΡΠ΅Π½ΡΡ ΠΊΠΎΡΠΈ ΠΏΠΎΠ·ΠΈΠ²Π° Π₯Π°Π½Π΄Π»Π΅Π Π΅Π°Π΄ ΠΏΠΎΠ²ΡΠ°ΡΠ½ΠΈ ΠΏΠΎΠ·ΠΈΠ² Π‘Π΅Π½Π΄ Ρ Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠΈ Π΅Ρ ΠΎ ΡΠ΅ΡΠ²Π΅ΡΠ°. ΠΠΌΠ°ΡΡΠ΅ Π½Π° ΡΠΌΡ Π΄Π° ΡΠ΅ ΠΏΡΠΎΡΠ΅ΠΊΠ»ΠΎ Π²ΡΠ΅ΠΌΠ΅ Π·Π° ΡΠ»Π°ΡΠ΅ ΠΏΠ°ΠΊΠ΅ΡΠ° ΠΏΡΠ΅ΠΊΠΎ Π²Π΅Π·Π΅ ΠΎΠ΄ ΡΠ°ΡΠΊΠ΅ Π΄ΠΎ ΡΠ°ΡΠΊΠ΅ 3,69 ΠΌΠΈΠ»ΠΈΡΠ΅ΠΊΡΠ½Π΄ΠΈ. ΠΠΎΠΆΠ΅ΡΠ΅ Π²ΠΈΠ΄Π΅ΡΠΈ Π΄Π° Π΅Ρ ΠΎ ΡΠ΅ΡΠ²Π΅Ρ Π΅Π²ΠΈΠ΄Π΅Π½ΡΠΈΡΠ° ΠΏΠΎΡΡΠΊΡ Π΄Π° ΡΠ΅ ΠΎΠ΄Π³ΠΎΠ²ΠΎΡΠΈΠΎ Π½Π° ΠΏΠ°ΠΊΠ΅Ρ, Π° Π·Π°ΡΠΈΠΌ, Π½Π°ΠΊΠΎΠ½ ΠΊΠ°ΡΡΠ΅ΡΠ° ΠΊΠ°Π½Π°Π»Π°, Π²ΠΈΠ΄ΠΈΡΠ΅ Π΄Π° Π΅Ρ ΠΎ ΠΊΠ»ΠΈΡΠ΅Π½Ρ ΠΏΡΠΈΠΌΠ° Π΅Ρ ΠΎ ΠΏΠ°ΠΊΠ΅Ρ Ρ ΡΠ²ΠΎΠΌ Π₯Π°Π½Π΄Π»Π΅Π Π΅Π°Π΄ ΠΌΠ΅ΡΠΎΠ΄Ρ.
Π£ ΠΎΠ²ΠΎΡ ΡΠΈΠΌΡΠ»Π°ΡΠΈΡΠΈ ΠΌΠ½ΠΎΠ³ΠΎ ΡΠΎΠ³Π° ΡΠ΅ Π΄Π΅ΡΠ°Π²Π° Π° Π΄Π° Π²ΠΈ Π½Π΅ ΠΏΡΠΈΠΌΠ΅ΡΠΈΡΠ΅. ΠΠ»ΠΈ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π²ΡΠ»ΠΎ Π»Π°ΠΊΠΎ ΠΏΡΠ°ΡΠΈΡΠΈ ΡΠ΅ΠΎ ΠΏΡΠΎΡΠ΅Ρ ΡΠ°ΠΊΠΎ ΡΡΠΎ ΡΠ΅ΡΠ΅ ΠΎΠΌΠΎΠ³ΡΡΠΈΡΠΈ ΡΠ²Π΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ΅ Π·Π° Π΅Π²ΠΈΠ΄Π΅Π½ΡΠΈΡΠ°ΡΠ΅ Ρ ΡΠΈΡΡΠ΅ΠΌΡ. ΠΠΎΠΊΡΡΠ°ΡΡΠ΅ Π΄Π° ΠΏΠΎΠ΄Π΅ΡΠΈΡΠ΅ ΠΏΡΠΎΠΌΠ΅Π½ΡΠΈΠ²Ρ ΠΠ‘_ΠΠΠ Π½Π° ΡΠ»Π΅Π΄Π΅ΡΡ Π²ΡΠ΅Π΄Π½ΠΎΡΡ,
$ export 'NS_LOG=*=level_all|prefix_func|prefix_time'
ΠΠ²Π΅Π·Π΄ΠΈΡΠ° ΠΈΠ·Π½Π°Π΄ ΡΠ΅ ΡΠΎΠΊΠ΅Ρ Π·Π½Π°ΠΊ Π·Π° ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ Π΅Π²ΠΈΠ΄Π΅Π½ΡΠΈΡΠ°ΡΠ°. ΠΠ²ΠΎ ΡΠ΅ ΡΠΊΡΡΡΠΈΡΠΈ ΡΠ²Π΅ ΡΠ½ΠΎΡΠ΅ Ρ ΡΠ²Π΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ΅ ΠΊΠΎΡΠ΅ ΡΠ΅ ΠΊΠΎΡΠΈΡΡΠ΅ Ρ ΡΠΈΠΌΡΠ»Π°ΡΠΈΡΠΈ. ΠΠ²Π΄Π΅ Π½Π΅ΡΡ ΡΠ΅ΠΏΡΠΎΠ΄ΡΠΊΠΎΠ²Π°ΡΠΈ ΠΈΠ·Π»Π°Π· (Ρ Π²ΡΠ΅ΠΌΠ΅ ΠΏΠΈΡΠ°ΡΠ° ΠΎΠ½ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈ 1265 Π»ΠΈΠ½ΠΈΡΠ° ΠΈΠ·Π»Π°Π·Π° Π·Π° ΡΠ΅Π΄Π°Π½ Π΅Ρ ΠΎ ΠΏΠ°ΠΊΠ΅Ρ), Π°Π»ΠΈ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΠΏΡΠ΅ΡΡΠΌΠ΅ΡΠΈΡΠ΅ ΠΎΠ²Π΅ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡΠ΅ Ρ Π΄Π°ΡΠΎΡΠ΅ΠΊΡ ΠΈ ΠΏΠΎΠ³Π»Π΅Π΄Π°ΡΠ΅ ΠΈΡ Ρ ΡΠ²ΠΎΠΌ ΠΎΠΌΠΈΡΠ΅Π½ΠΎΠΌ ΡΡΠ΅ΡΠΈΠ²Π°ΡΡ.
$ ./waf --run scratch/myfirst > log.out 2>&1
ΠΠ° Π»ΠΈΡΠ½ΠΎ ΠΊΠΎΡΠΈΡΡΠΈΠΌ ΠΎΠ²Ρ ΠΈΠ·ΡΠ·Π΅ΡΠ½ΠΎ ΠΎΠΏΡΠΈΡΠ½Ρ Π²Π΅ΡΠ·ΠΈΡΡ Π΅Π²ΠΈΠ΄Π΅Π½ΡΠΈΡΠ°ΡΠ° ΠΊΠ°Π΄Π° ΠΈΠΌΠ°ΠΌ ΠΏΡΠΎΠ±Π»Π΅ΠΌ ΠΈ Π½Π΅ΠΌΠ°ΠΌ ΠΏΠΎΡΠΌΠ° Π³Π΄Π΅ ΡΡ ΡΡΠ²Π°ΡΠΈ ΠΏΠΎΡΠ»Π΅ ΠΏΠΎ Π·Π»Ρ. ΠΠΎΠ³Ρ ΠΏΡΠΈΠ»ΠΈΡΠ½ΠΎ Π»Π°ΠΊΠΎ Π΄Π° ΠΏΡΠ°ΡΠΈΠΌ ΠΈΠ·Π²ΡΡΠ°Π²Π°ΡΠ΅ ΠΊΠΎΠ΄Π° Π±Π΅Π· ΠΏΠΎΡΡΠ°Π²ΡΠ°ΡΠ° ΡΠ°ΡΠ°ΠΊΠ° ΠΏΡΠ΅ΠΊΠΈΠ΄Π° ΠΈ ΠΏΡΠΎΠ»Π°ΡΠΊΠ° ΠΊΡΠΎΠ· ΠΊΠΎΠ΄ Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΡ Π·Π° ΠΎΡΠΊΠ»Π°ΡΠ°ΡΠ΅ Π³ΡΠ΅ΡΠ°ΠΊΠ°. ΠΠΎΠ³Ρ ΡΠ°ΠΌΠΎ Π΄Π° ΡΡΠ΅Π΄ΠΈΠΌ ΠΈΠ·Π»Π°Π· Ρ ΡΠ²ΠΎΠΌ ΠΎΠΌΠΈΡΠ΅Π½ΠΎΠΌ ΡΡΠ΅ΡΠΈΠ²Π°ΡΡ ΠΈ ΠΏΠΎΡΡΠ°ΠΆΠΈΠΌ ΠΎΠ½ΠΎ ΡΡΠΎ ΠΎΡΠ΅ΠΊΡΡΠ΅ΠΌ ΠΈ Π²ΠΈΠ΄ΠΈΠΌ Π΄Π° ΡΠ΅ Π΄Π΅ΡΠ°Π²Π° Π½Π΅ΡΡΠΎ ΡΡΠΎ Π½ΠΈΡΠ°ΠΌ ΠΎΡΠ΅ΠΊΠΈΠ²Π°ΠΎ. ΠΠ°Π΄Π° Π΄ΠΎΠ±ΠΈΡΠ΅ΠΌ ΠΎΠΏΡΡΡ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Ρ ΠΎ ΡΠΎΠΌΠ΅ ΡΡΠ° Π½ΠΈΡΠ΅ Ρ ΡΠ΅Π΄Ρ, ΡΠΊΠΎΡΠΈΠΌ Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌ Π·Π° ΠΎΡΠΊΠ»Π°ΡΠ°ΡΠ΅ Π³ΡΠ΅ΡΠ°ΠΊΠ° Π΄Π° Π±ΠΈΡ Π΄Π΅ΡΠ°ΡΠ½ΠΈΡΠ΅ Π°Π½Π°Π»ΠΈΠ·ΠΈΡΠ°ΠΎ ΠΏΡΠΎΠ±Π»Π΅ΠΌ. ΠΠ²Π° Π²ΡΡΡΠ° ΠΈΠ·Π»Π°Π·Π° ΠΌΠΎΠΆΠ΅ Π±ΠΈΡΠΈ ΠΏΠΎΡΠ΅Π±Π½ΠΎ ΠΊΠΎΡΠΈΡΠ½Π° ΠΊΠ°Π΄Π° Π²Π°ΡΠ° ΡΠΊΡΠΈΠΏΡΠ° ΡΡΠ°Π΄ΠΈ Π½Π΅ΡΡΠΎ ΠΏΠΎΡΠΏΡΠ½ΠΎ Π½Π΅ΠΎΡΠ΅ΠΊΠΈΠ²Π°Π½ΠΎ. ΠΠΊΠΎ ΠΊΠΎΡΠΈΡΡΠΈΡΠ΅ ΡΠ°ΠΌΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌ Π·Π° ΠΎΡΠΊΠ»Π°ΡΠ°ΡΠ΅ Π³ΡΠ΅ΡΠ°ΠΊΠ°, ΠΌΠΎΠΆΠ΄Π° ΡΠ΅ΡΠ΅ Ρ ΠΏΠΎΡΠΏΡΠ½ΠΎΡΡΠΈ ΠΏΡΠΎΠΏΡΡΡΠΈΡΠΈ ΠΏΡΠ΅ΠΎΠΊΡΠ΅Ρ. Π Π΅Π³ΠΈΡΡΡΠ°ΡΠΈΡΠ° ΡΠΈΠ½ΠΈ ΡΠ°ΠΊΠ²Π΅ ΠΎΠΊΡΠ΅ΡΠ΅ ΡΠΎΡΡΠΈΠ²ΠΈΠΌ.
5.1.3 ΠΠΎΠ΄Π°Π²Π°ΡΠ΅ Π΅Π²ΠΈΠ΄Π΅Π½ΡΠΈΡΠ΅ Π²Π°ΡΠ΅ΠΌ ΠΊΠΎΠ΄Ρ
ΠΠΎΠΆΠ΅ΡΠ΅ Π΄ΠΎΠ΄Π°ΡΠΈ Π½ΠΎΠ²Π΅ ΡΠ½ΠΎΡΠ΅ Ρ ΡΠ²ΠΎΡΠ΅ ΡΠΈΠΌΡΠ»Π°ΡΠΈΡΠ΅ ΠΏΠΎΠ·ΠΈΠ²Π°ΡΠ΅ΠΌ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ΅ Π΄Π½Π΅Π²Π½ΠΈΠΊΠ° ΠΈΠ· Π²ΠΈΡΠ΅ ΠΌΠ°ΠΊΡΠΎΠ°. Π£ΡΠ°Π΄ΠΈΠΌΠΎ ΡΠΎ Ρ ΡΠΊΡΠΈΠΏΡΠΈ ΠΌΠΈΡΠΈΡΡΡ.ΡΡ, ΠΊΠΎΡΠΈ ΠΈΠΌΠ°ΠΌΠΎ Ρ βΡΠΈΡΡΠΎΠΌβ Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡΡΠΌΡ. ΠΠΎΠ΄ΡΠ΅ΡΠΈΠΌΠΎ ΡΠ΅ Π΄Π° ΡΠΌΠΎ Π΄Π΅ΡΠΈΠ½ΠΈΡΠ°Π»ΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ Π΅Π²ΠΈΠ΄Π΅Π½ΡΠΈΡΠ°ΡΠ° Ρ ΠΎΠ²ΠΎΠΌ ΡΡΠ΅Π½Π°ΡΠΈΡΡ:
NS_LOG_COMPONENT_DEFINE ("FirstScriptExample");
Π‘Π²Π΅ΡΠ½ΠΈ ΡΡΠ΅ Π΄Π° ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΎΠΌΠΎΠ³ΡΡΠΈΡΠΈ Π΅Π²ΠΈΠ΄Π΅Π½ΡΠΈΡΠ°ΡΠ΅ ΡΠ²ΠΈΡ
ΠΏΠΎΡΡΠΊΠ° ΠΈΠ· ΠΎΠ²Π΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ΅ ΡΠ°ΠΊΠΎ ΡΡΠΎ ΡΠ΅ΡΠ΅ ΠΏΠΎΡΡΠ°Π²ΠΈΡΠΈ ΠΏΡΠΎΠΌΠ΅Π½ΡΠΈΠ²Ρ ΠΎΠΊΡΡΠΆΠ΅ΡΠ° ΠΠ‘_ΠΠΠ Π½Π° ΡΠ°Π·Π»ΠΈΡΠΈΡΠ΅ Π½ΠΈΠ²ΠΎΠ΅. Π₯Π°ΡΠ΄Π΅ΠΌΠΎ Π½Π°ΠΏΡΠ΅Π΄ ΠΈ Π΄ΠΎΠ΄Π°ΡΠΌΠΎ Π½Π΅ΠΊΠ΅ ΡΠ½ΠΎΡΠ΅ Ρ ΡΠΊΡΠΈΠΏΡΡ. ΠΠ°ΠΊΡΠΎ ΠΊΠΎΡΠΈ ΡΠ΅ ΠΊΠΎΡΠΈΡΡΠΈ Π·Π° Π΄ΠΎΠ΄Π°Π²Π°ΡΠ΅ ΠΏΠΎΡΡΠΊΠ° Π½Π° Π½ΠΈΠ²ΠΎΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡΠ° Ρ Π΄Π½Π΅Π²Π½ΠΈΠΊ ΡΠ΅ ΠΠ‘_ΠΠΠ_ΠΠΠ€Π. Π₯Π°ΡΠ΄Π΅ Π΄Π° Π΄ΠΎΠ΄Π°ΠΌΠΎ ΠΏΠΎΡΡΠΊΡ (Π½Π΅ΠΏΠΎΡΡΠ΅Π΄Π½ΠΎ ΠΏΡΠ΅ Π½Π΅Π³ΠΎ ΡΡΠΎ ΠΏΠΎΡΠ½Π΅ΠΌΠΎ Π΄Π° ΠΊΡΠ΅ΠΈΡΠ°ΠΌΠΎ ΡΠ²ΠΎΡΠΎΠ²Π΅) ΠΊΠΎΡΠ° Π²Π°ΠΌ Π³ΠΎΠ²ΠΎΡΠΈ Π΄Π° ΡΠ΅ ΡΠΊΡΠΈΠΏΡΠ° Ρ ΡΠ°Π·ΠΈ βΠΡΠ΅ΠΈΡΠ°ΡΠ΅ ΡΠΎΠΏΠΎΠ»ΠΎΠ³ΠΈΡΠ΅β. ΠΠ²ΠΎ ΡΠ΅ ΡΠ°Π΄ΠΈ Ρ ΡΠ»Π΅Π΄Π΅ΡΠ΅ΠΌ ΠΈΡΠ΅ΡΠΊΡ ΠΊΠΎΠ΄Π°,
ΠΡΠ²ΠΎΡΠ΅Π½ΠΎ ΡΡΡΠ°ΡΡΡ
/ΠΌΠΈΡΠΈΡΡΡ.ΡΡ Ρ ΡΠ²ΠΎΠΌ ΠΎΠΌΠΈΡΠ΅Π½ΠΎΠΌ ΡΡΠ΅ΡΠΈΠ²Π°ΡΡ ΠΈ Π΄ΠΎΠ΄Π°ΡΡΠ΅ ΡΠ΅Π΄,
NS_LOG_INFO ("Creating Topology");
Π½Π΅ΠΏΠΎΡΡΠ΅Π΄Π½ΠΎ ΠΏΡΠ΅ ΡΠ΅Π΄ΠΎΠ²Π°,
NodeContainer nodes;
nodes.Create (2);
Π‘Π°Π΄Π° ΠΊΠΎΠΌΠΏΠ°ΡΠ»ΠΈΡΠ°ΡΡΠ΅ ΡΠΊΡΠΈΠΏΡΡ ΠΊΠΎΡΠΈΡΡΠ΅ΡΠΈ ΠΠΠ€, ΠΈ ΠΎΠ±ΡΠΈΡΠΈΡΠ΅ ΠΏΡΠΎΠΌΠ΅Π½ΡΠΈΠ²Ρ ΠΠ‘_ΠΠΠ Π΄Π° Π±ΠΈΡΡΠ΅ ΠΎΠ½Π΅ΠΌΠΎΠ³ΡΡΠΈΠ»ΠΈ ΡΠΎΠΊ Π΅Π²ΠΈΠ΄Π΅Π½ΡΠΈΡΠ°ΡΠ° ΠΊΠΎΡΠΈ ΡΠΌΠΎ ΡΠ°Π½ΠΈΡΠ΅ ΠΎΠΌΠΎΠ³ΡΡΠΈΠ»ΠΈ:
$ ./waf
$ export NS_LOG=
Π’Π΅ΠΏΠ΅ΡΡ, Π΅ΡΠ»ΠΈ Π²Ρ Π·Π°ΠΏΡΡΡΠΈΡΠ΅ ΡΠΊΡΠΈΠΏΡ,
$ ./waf --run scratch/myfirst
ΠΠ΅ΡΠ΅ΡΠ΅ Π²ΠΈΠ΄Π΅ΡΠΈ Π½ΠΎΠ²Ρ ΠΏΠΎΡΡΠΊΡ ΡΠ΅Ρ ΠΏΠΎΠ²Π΅Π·Π°Π½Π° ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ° Π΅Π²ΠΈΠ΄Π΅Π½ΡΠΈΡΠ°ΡΠ° (Π€ΠΈΡΡΡΠ‘ΡΡΠΈΠΏΡΠΠΊΠ°ΠΌΠΏΠ»Π΅) Π½ΠΈΡΠ΅ ΠΎΠΌΠΎΠ³ΡΡΠ΅Π½Π°. ΠΠ° Π±ΠΈΡΡΠ΅ Π²ΠΈΠ΄Π΅Π»ΠΈ ΡΠ²ΠΎΡΡ ΠΏΠΎΡΡΠΊΡ, ΠΏΠΎΡΡΠ΅Π±Π½ΠΎ ΡΠ΅ Π΄Π° ΠΎΠΌΠΎΠ³ΡΡΠΈΡΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ Π·Π° Π΅Π²ΠΈΠ΄Π΅Π½ΡΠΈΡΠ°ΡΠ΅ Π€ΠΈΡΡΡΠ‘ΡΡΠΈΠΏΡΠΠΊΠ°ΠΌΠΏΠ»Π΅ ΡΠ° Π½ΠΈΠ²ΠΎΠΎΠΌ ΠΊΠΎΡΠΈ Π½ΠΈΡΠ΅ Π½ΠΈΠΆΠΈ ΠΎΠ΄ ΠΠ‘_ΠΠΠ_ΠΠΠ€Π. ΠΠΊΠΎ ΡΠ°ΠΌΠΎ ΠΆΠ΅Π»ΠΈΡΠ΅ Π΄Π° Π²ΠΈΠ΄ΠΈΡΠ΅ ΠΎΠ²Π°Ρ ΠΎΠ΄ΡΠ΅ΡΠ΅Π½ΠΈ Π½ΠΈΠ²ΠΎ Π΅Π²ΠΈΠ΄Π΅Π½ΡΠΈΡΠ°ΡΠ°, ΠΌΠΎΠΆΠ΅ΡΠ΅ Π³Π° ΠΎΠΌΠΎΠ³ΡΡΠΈΡΠΈ ΠΎΠ²Π°ΠΊΠΎ,
$ export NS_LOG=FirstScriptExample=info
ΠΠΊΠΎ ΡΠ°Π΄Π° ΠΏΠΎΠΊΡΠ΅Π½Π΅ΡΠ΅ ΡΠΊΡΠΈΠΏΡΡ, Π²ΠΈΠ΄Π΅ΡΠ΅ΡΠ΅ Π½ΠΎΠ²Ρ ΠΏΠΎΡΡΠΊΡ βΠΡΠ΅ΠΈΡΠ°ΡΠ΅ ΡΠΎΠΏΠΎΠ»ΠΎΠ³ΠΈΡΠ΅β,
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 ΠΠΎΠ½ΠΈΡΡΠ°Π²Π°ΡΠ΅ ΠΏΠΎΠ΄ΡΠ°Π·ΡΠΌΠ΅Π²Π°Π½ΠΈΡ Π²ΡΠ΅Π΄Π½ΠΎΡΡΠΈ Π°ΡΡΠΈΠ±ΡΡΠ°
ΠΡΡΠ³ΠΈ Π½Π°ΡΠΈΠ½ Π΄Π° ΠΏΡΠΎΠΌΠ΅Π½ΠΈΡΠ΅ ΠΏΠΎΠ½Π°ΡΠ°ΡΠ΅ Π½Ρ-3 ΡΠΊΡΠΈΠΏΡΠΈ Π±Π΅Π· ΡΡΠ΅ΡΠΈΠ²Π°ΡΠ° ΠΈΠ»ΠΈ ΠΈΠ·Π³ΡΠ°Π΄ΡΠ΅ ΡΠ΅ ΠΊΠΎΡΠΈΡΡΠ΅ΡΠ΅ Π°ΡΠ³ΡΠΌΠ΅Π½Π°ΡΠ° ΠΊΠΎΠΌΠ°Π½Π΄Π½Π΅ Π»ΠΈΠ½ΠΈΡΠ΅. ΠΡΡΠΆΠ°ΠΌΠΎ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·Π°ΠΌ Π·Π° ΡΠ°ΡΡΠ»Π°ΡΠΈΠ²Π°ΡΠ΅ Π°ΡΠ³ΡΠΌΠ΅Π½Π°ΡΠ° ΠΊΠΎΠΌΠ°Π½Π΄Π½Π΅ Π»ΠΈΠ½ΠΈΡΠ΅ ΠΈ Π°ΡΡΠΎΠΌΠ°ΡΡΠΊΠΎ ΠΏΠΎΡΡΠ°Π²ΡΠ°ΡΠ΅ Π»ΠΎΠΊΠ°Π»Π½ΠΈΡ ΠΈ Π³Π»ΠΎΠ±Π°Π»Π½ΠΈΡ ΠΏΡΠΎΠΌΠ΅Π½ΡΠΈΠ²ΠΈΡ Π½Π° ΠΎΡΠ½ΠΎΠ²Ρ ΡΠ΅Π·ΡΠ»ΡΠ°ΡΠ°.
ΠΡΠ²ΠΈ ΠΊΠΎΡΠ°ΠΊ Ρ ΠΊΠΎΡΠΈΡΡΠ΅ΡΡ ΡΠΈΡΡΠ΅ΠΌΠ° Π°ΡΠ³ΡΠΌΠ΅Π½Π°ΡΠ° ΠΊΠΎΠΌΠ°Π½Π΄Π½Π΅ Π»ΠΈΠ½ΠΈΡΠ΅ ΡΠ΅ Π΄Π΅ΠΊΠ»Π°ΡΠΈΡΠ°ΡΠ΅ ΠΏΠ°ΡΡΠ΅ΡΠ° ΠΊΠΎΠΌΠ°Π½Π΄Π½Π΅ Π»ΠΈΠ½ΠΈΡΠ΅. ΠΠ²ΠΎ ΡΠ΅ ΠΏΡΠΈΠ»ΠΈΡΠ½ΠΎ Π»Π°ΠΊΠΎ ΡΡΠ°Π΄ΠΈΡΠΈ (Ρ Π²Π°ΡΠ΅ΠΌ Π³Π»Π°Π²Π½ΠΎΠΌ ΠΏΡΠΎΠ³ΡΠ°ΠΌΡ), ΠΊΠ°ΠΎ Ρ ΡΠ»Π΅Π΄Π΅ΡΠ΅ΠΌ ΠΊΠΎΠ΄Ρ,
int
main (int argc, char *argv[])
{
...
CommandLine cmd;
cmd.Parse (argc, argv);
...
}
ΠΠ²Π°Ρ ΡΠ΅Π΄Π½ΠΎΡΡΠ°Π²Π°Π½ ΠΈΡΠ΅ΡΠ°ΠΊ Ρ Π΄Π²Π° ΡΠ΅Π΄Π° ΡΠ΅ Π·Π°ΠΏΡΠ°Π²ΠΎ Π²Π΅ΠΎΠΌΠ° ΠΊΠΎΡΠΈΡΡΠ°Π½ ΡΠ°ΠΌ ΠΏΠΎ ΡΠ΅Π±ΠΈ. Π’ΠΎ ΠΎΡΠ²Π°ΡΠ° Π²ΡΠ°ΡΠ° Π½Ρ-3 Π³Π»ΠΎΠ±Π°Π»Π½ΠΎΠΌ ΡΠΈΡΡΠ΅ΠΌΡ ΠΏΡΠΎΠΌΠ΅Π½ΡΠΈΠ²ΠΈΡ ΠΈ Π°ΡΡΠΈΠ±ΡΡΠ°. Π₯Π°ΡΠ΄Π΅ Π΄Π° Π΄ΠΎΠ΄Π°ΠΌΠΎ Π΄Π²Π΅ Π»ΠΈΠ½ΠΈΡΠ΅ ΠΊΠΎΠ΄Π° Π½Π° ΠΏΠΎΡΠ΅ΡΠ°ΠΊ Π³Π»Π°Π²Π½Π΅ ΡΡΠ½ΠΊΡΠΈΡΠ΅ ΡΠΊΡΠΈΠΏΡΠ΅ ΡΡΡΠ°ΡΡΡ /ΠΌΠΈΡΠΈΡΡΡ.ΡΡ. ΠΠ°ΡΡΠ°Π²ΡΠ°ΠΌΠΎ Π΄Π°ΡΠ΅, ΠΊΠΎΠΌΠΏΠ°ΡΠ»ΠΈΡΠ°ΠΌΠΎ ΡΠΊΡΠΈΠΏΡΡ ΠΈ ΠΏΠΎΠΊΡΠ΅ΡΠ΅ΠΌΠΎ ΡΠ΅, ΠΏΡΠΈ ΠΏΠΎΠΊΡΠ΅ΡΠ°ΡΡ ΠΏΠΎΡΡΠ°Π²ΡΠ°ΠΌΠΎ Π·Π°Ρ ΡΠ΅Π² Π·Π° ΠΏΠΎΠΌΠΎΡ Π½Π° ΡΠ»Π΅Π΄Π΅ΡΠΈ Π½Π°ΡΠΈΠ½,
$ ./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.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.
Π‘Π°Π΄Π° ΠΏΠΎΠ³Π»Π΅Π΄Π°ΡΠΌΠΎ ΠΎΠΏΡΠΈΡΡ βΠΡΠΈΠ½ΡΠΡΡΡΠΈΠ±ΡΡΠ΅Ρ. ΠΠ΅Ρ ΡΠΌΠΎ ΡΠΏΠΎΠΌΠ΅Π½ΡΠ»ΠΈ ΡΠΈΡΡΠ΅ΠΌ Π°ΡΡΠΈΠ±ΡΡΠ° Π½Ρ-3 ΠΊΠ°Π΄Π° ΡΠΌΠΎ ΠΏΡΠΎΡΡΠ°Π²Π°Π»ΠΈ ΡΠΊΡΠΈΠΏΡΡ ΡΠΈΡΡΡ.ΡΡ. ΠΠΈΠ΄Π΅Π»ΠΈ ΡΠΌΠΎ ΡΠ»Π΅Π΄Π΅ΡΠ΅ Π»ΠΈΠ½ΠΈΡΠ΅ ΠΊΠΎΠ΄Π°,
PointToPointHelper pointToPoint;
pointToPoint.SetDeviceAttribute ("DataRate", StringValue ("5Mbps"));
pointToPoint.SetChannelAttribute ("Delay", StringValue ("2ms"));
ΠΈ ΡΠΎ ΡΡ ΡΠ΅ΠΊΠ»ΠΈ ΠΡΠ·ΠΈΠ½Π° ΠΏΡΠ΅Π½ΠΎΡΠ° ΠΏΠΎΠ΄Π°ΡΠ°ΠΊΠ° ΡΠ΅ Π·Π°ΠΏΡΠ°Π²ΠΎ Π°ΡΡΠΈΠ±ΡΡ ΠΠΎΠΈΠ½ΡΠ’ΠΎΠΠΎΠΈΠ½ΡΠΠ΅ΡΠΠ΅Π²ΠΈΡΠ΅. Π₯Π°ΡΠ΄Π΅ Π΄Π° ΠΊΠΎΡΠΈΡΡΠΈΠΌΠΎ ΠΏΠ°ΡΡΠ΅Ρ Π°ΡΠ³ΡΠΌΠ΅Π½Π°ΡΠ° ΠΊΠΎΠΌΠ°Π½Π΄Π½Π΅ Π»ΠΈΠ½ΠΈΡΠ΅ Π΄Π° Π²ΠΈΠ΄ΠΈΠΌΠΎ Π°ΡΡΠΈΠ±ΡΡΠ΅ ΠΠΎΠΈΠ½ΡΠ’ΠΎΠΠΎΠΈΠ½ΡΠΠ΅ΡΠΠ΅Π²ΠΈΡΠ΅. ΠΠΈΡΡΠ° ΠΏΠΎΠΌΠΎΡΠΈ ΠΊΠ°ΠΆΠ΅ ΡΡΠ° ΠΌΠΎΡΠ°ΠΌΠΎ Π΄Π° ΠΎΠ±Π΅Π·Π±Π΅Π΄ΠΈΠΌΠΎ Π’ΠΈΠΏΠ΅ΠΠ΄. ΠΠ²ΠΎ ΡΠ΅ Π½Π°Π·ΠΈΠ² ΠΊΠ»Π°ΡΠ΅ ΠΊΠΎΡΠΎΡ ΠΏΡΠΈΠΏΠ°Π΄Π°ΡΡ Π°ΡΡΠΈΠ±ΡΡΠΈ ΠΎΠ΄ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ°. Π£ Π½Π°ΡΠ΅ΠΌ ΡΠ»ΡΡΠ°ΡΡ Π±ΠΈΡΠ΅ Π½Ρ3::ΠΠΎΠΈΠ½ΡΠ’ΠΎΠΠΎΠΈΠ½ΡΠΠ΅ΡΠΠ΅Π²ΠΈΡΠ΅. ΠΠ΄Π΅ΠΌΠΎ Π΄Π°ΡΠ΅, ΡΡΠΈ,
$ ./waf --run "scratch/myfirst --PrintAttributes=ns3::PointToPointNetDevice"
Π‘ΠΈΡΡΠ΅ΠΌ ΡΠ΅ ΠΎΠ΄ΡΡΠ°ΠΌΠΏΠ°ΡΠΈ ΡΠ²Π΅ Π°ΡΡΠΈΠ±ΡΡΠ΅ ΠΎΠ²ΠΎΠ³ ΡΠΈΠΏΠ° ΠΌΡΠ΅ΠΆΠ½ΠΎΠ³ ΡΡΠ΅ΡΠ°ΡΠ°. ΠΠΈΠ΄Π΅ΡΠ΅ΡΠ΅ Π΄Π° ΡΡ ΠΌΠ΅ΡΡ Π°ΡΡΠΈΠ±ΡΡΠΈΠΌΠ° Π½Π° Π»ΠΈΡΡΠΈ,
--ns3::PointToPointNetDevice::DataRate=[32768bps]:
The default data rate for point to point links
ΠΠ²ΠΎ ΡΠ΅ ΠΏΠΎΠ΄ΡΠ°Π·ΡΠΌΠ΅Π²Π°Π½Π° Π²ΡΠ΅Π΄Π½ΠΎΡΡ ΠΊΠΎΡΡ ΡΠ΅ ΡΠΈΡΡΠ΅ΠΌ ΠΊΠΎΡΠΈΡΡΠΈΡΠΈ ΠΏΡΠΈΠ»ΠΈΠΊΠΎΠΌ ΠΊΡΠ΅ΠΈΡΠ°ΡΠ° ΠΎΠ±ΡΠ΅ΠΊΡΠ° ΠΠΎΠΈΠ½ΡΠ’ΠΎΠΠΎΠΈΠ½ΡΠΠ΅ΡΠΠ΅Π²ΠΈΡΠ΅. ΠΠ°ΠΌΠ΅Π½ΠΈΡΠ΅ΠΌΠΎ ΠΎΠ²Ρ ΠΏΠΎΠ΄ΡΠ°Π·ΡΠΌΠ΅Π²Π°Π½Ρ Π²ΡΠ΅Π΄Π½ΠΎΡΡ ΠΏΠΎΠΌΠΎΡΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ° Π°ΡΡΠΈΠ±ΡΡ Π² ΠΠΎΠΈΠ½ΡΠ’ΠΎΠΠΎΠΈΠ½ΡΠ₯Π΅Π»ΠΏΠ΅Ρ Π²ΠΈΡΠΈ. Π₯Π°ΡΠ΄Π΅ Π΄Π° ΠΊΠΎΡΠΈΡΡΠΈΠΌΠΎ ΠΏΠΎΠ΄ΡΠ°Π·ΡΠΌΠ΅Π²Π°Π½Π΅ Π²ΡΠ΅Π΄Π½ΠΎΡΡΠΈ Π·Π° ΡΡΠ΅ΡΠ°ΡΠ΅ ΠΈ ΠΊΠ°Π½Π°Π»Π΅ ΠΎΠ΄ ΡΠ°ΡΠΊΠ΅ Π΄ΠΎ ΡΠ°ΡΠΊΠ΅. ΠΠ° Π±ΠΈΡΠΌΠΎ ΡΠΎ ΡΡΠ°Π΄ΠΈΠ»ΠΈ, ΠΈΠ·Π±ΡΠΈΡΠ°ΡΠ΅ΠΌΠΎ ΠΏΠΎΠ·ΠΈΠ²Π΅ Π‘Π΅ΡΠΠ΅Π²ΠΈΡΠ΅ΠΡΡΡΠΈΠ±ΡΡΠ΅ ΠΈ Π‘Π΅ΡΠ¦Ρ Π°Π½Π½Π΅Π»ΠΡΡΡΠΈΠ±ΡΡΠ΅ ΠΎΠ΄ ΠΌΠΈΡΠΈΡΡΡ.ΡΡ, ΠΊΠΎΡΠΈ ΠΈΠΌΠ°ΠΌΠΎ Ρ ΡΠΈΡΡΠΎΠΌ Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡΡΠΌΡ.
ΠΠ°ΡΠ° ΡΠΊΡΠΈΠΏΡΠ° ΡΠ°Π΄Π° ΡΡΠ΅Π±Π° ΡΠ΅Π΄Π½ΠΎΡΡΠ°Π²Π½ΠΎ Π΄Π° ΠΏΡΠΎΠ³Π»Π°ΡΠΈ ΠΠΎΠΈΠ½ΡΠ’ΠΎΠΠΎΠΈΠ½ΡΠ₯Π΅Π»ΠΏΠ΅Ρ ΠΈ Π½Π΅ ΠΎΠ±Π°Π²ΡΠ°ΡΡΠ΅ Π½ΠΈΠΊΠ°ΠΊΠ²Π΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡΠ΅ ΠΈΠ½ΡΡΠ°Π»Π°ΡΠΈΡΠ΅ ΠΊΠ°ΠΎ ΡΡΠΎ ΡΠ΅ ΠΏΡΠΈΠΊΠ°Π·Π°Π½ΠΎ Ρ ΠΏΡΠΈΠΌΠ΅ΡΡ ΠΈΡΠΏΠΎΠ΄,
...
NodeContainer nodes;
nodes.Create (2);
PointToPointHelper pointToPoint;
NetDeviceContainer devices;
devices = pointToPoint.Install (nodes);
...
Π‘Π°ΠΌΠΎ Π½Π°ΠΏΡΠ΅Π΄ ΠΈ ΠΊΡΠ΅ΠΈΡΠ°ΡΡΠ΅ Π½ΠΎΠ²Ρ ΡΠΊΡΠΈΠΏΡΡ ΡΠ° ΠΠ°Ρ (./Π²Π°Ρ) ΠΈ Π²ΡΠ°ΡΠΈΠΌΠΎ ΡΠ΅ Π½Π°Π·Π°Π΄ ΠΈ ΡΠΊΡΡΡΠΈΠΌΠΎ Π½Π΅ΠΊΠΈ ΡΠ½ΠΎΡ ΠΈΠ· Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ΅ Π£ΠΠ Π΅Ρ ΠΎ ΡΠ΅ΡΠ²Π΅ΡΠ° ΠΈ ΡΠΊΡΡΡΠΈΠΌΠΎ Π²ΡΠ΅ΠΌΠ΅Π½ΡΠΊΠΈ ΠΏΡΠ΅ΡΠΈΠΊΡ.
$ 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 ΡΠ΅ΠΊΡΠ½Π΄Π΅. Π’ΠΎ ΡΠ΅ Π·Π°ΡΠΎ ΡΡΠΎ ΡΠΌΠΎ ΡΠ΅Π΄Π½ΠΎΡΡΠ°Π²Π½ΠΎ ΡΠ΅ΡΠ΅ΡΠΎΠ²Π°Π»ΠΈ Π±ΡΠ·ΠΈΠ½Ρ ΠΏΠΎΠ΄Π°ΡΠ°ΠΊΠ° ΠΠΎΠΈΠ½ΡΠ’ΠΎΠΠΎΠΈΠ½ΡΠΠ΅ΡΠΠ΅Π²ΠΈΡΠ΅ ΡΠ° ΠΏΠ΅Ρ ΠΌΠ΅Π³Π°Π±ΠΈΡΠ° Ρ ΡΠ΅ΠΊΡΠ½Π΄ΠΈ Π½Π° ΠΏΠΎΠ΄ΡΠ°Π·ΡΠΌΠ΅Π²Π°Π½Ρ Π²ΡΠ΅Π΄Π½ΠΎΡΡ, ΠΊΠΎΡΠ° ΡΠ΅ 32768 Π±ΠΈΡΠ° Ρ ΡΠ΅ΠΊΡΠ½Π΄ΠΈ. ΠΠΊΠΎ Π±ΠΈΡΠΌΠΎ Π·Π°ΠΌΠ΅Π½ΠΈΠ»ΠΈ Π½ΠΎΠ²ΠΈ ΠΠ°ΡΠ°Π Π°ΡΠ΅ ΠΊΠΎΡΠΈΡΡΠ΅ΡΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Π½Ρ Π»ΠΈΠ½ΠΈΡΡ, ΠΌΠΎΠ³Π»ΠΈ Π±ΠΈΡΠΌΠΎ ΠΏΠΎΠ½ΠΎΠ²ΠΎ Π΄Π° ΡΠ±ΡΠ·Π°ΠΌΠΎ Π½Π°ΡΡ ΡΠΈΠΌΡΠ»Π°ΡΠΈΡΡ. Π’ΠΎ ΡΠ΅ΠΌΠΎ ΡΡΠ°Π΄ΠΈΡΠΈ Π½Π° ΡΠ»Π΅Π΄Π΅ΡΠΈ Π½Π°ΡΠΈΠ½, ΠΏΡΠ΅ΠΌΠ° ΡΠΎΡΠΌΡΠ»ΠΈ ΠΊΠΎΡΡ ΠΏΠΎΠ΄ΡΠ°Π·ΡΠΌΠ΅Π²Π° Π΅Π»Π΅ΠΌΠ΅Π½Ρ ΠΏΠΎΠΌΠΎΡΠΈ:
$ ./waf --run "scratch/myfirst --ns3::PointToPointNetDevice::DataRate=5Mbps"
ΠΠ²ΠΎ ΡΠ΅ Π²ΡΠ°ΡΠΈΡΠΈ Π°ΡΡΠΈΠ±ΡΡ ΠΠ°ΡΠ°Π Π°ΡΠ΅ Π½Π° ΡΠ΅Π³ΠΎΠ²Ρ ΠΏΠΎΠ΄ΡΠ°Π·ΡΠΌΠ΅Π²Π°Π½Ρ Π²ΡΠ΅Π΄Π½ΠΎΡΡ ΠΎΠ΄ ΠΏΠ΅Ρ ΠΌΠ΅Π³Π°Π±ΠΈΡΠ° Ρ ΡΠ΅ΠΊΡΠ½Π΄ΠΈ. ΠΠ° Π»ΠΈ ΡΡΠ΅ ΠΈΠ·Π½Π΅Π½Π°ΡΠ΅Π½ΠΈ ΡΠ΅Π·ΡΠ»ΡΠ°ΡΠΎΠΌ? ΠΡΠΏΠΎΡΡΠ°Π²ΠΈΠ»ΠΎ ΡΠ΅ Π΄Π° Π΄Π° Π±ΠΈΡΠΌΠΎ Π²ΡΠ°ΡΠΈΠ»ΠΈ ΠΎΡΠΈΠ³ΠΈΠ½Π°Π»Π½ΠΎ ΠΏΠΎΠ½Π°ΡΠ°ΡΠ΅ ΡΠΊΡΠΈΠΏΡΠ΅, ΡΠ°ΠΊΠΎΡΠ΅ ΠΌΠΎΡΠ°ΠΌΠΎ Π΄Π° ΠΏΠΎΠ΄Π΅ΡΠΈΠΌΠΎ ΠΊΠ°ΡΡΠ΅ΡΠ΅ ΠΊΠ°Π½Π°Π»Π° ΡΠ°ΠΊΠΎ Π΄Π° ΠΎΠ΄Π³ΠΎΠ²Π°ΡΠ° Π±ΡΠ·ΠΈΠ½ΠΈ ΡΠ²Π΅ΡΠ»ΠΎΡΡΠΈ. ΠΠΎΠΆΠ΅ΠΌΠΎ ΡΡΠ°ΠΆΠΈΡΠΈ ΠΎΠ΄ ΡΠΈΡΡΠ΅ΠΌΠ° ΠΊΠΎΠΌΠ°Π½Π΄Π½Π΅ Π»ΠΈΠ½ΠΈΡΠ΅ Π΄Π° ΠΎΠ΄ΡΡΠ°ΠΌΠΏΠ° Π°ΡΡΠΈΠ±ΡΡΠ΅ ΠΊΠ°Π½Π°Π»Π°, Π±Π°Ρ ΠΊΠ°ΠΎ ΡΡΠΎ ΡΠΌΠΎ ΡΡΠ°Π΄ΠΈΠ»ΠΈ Π·Π° ΠΌΡΠ΅ΠΆΠ½ΠΈ ΡΡΠ΅ΡΠ°Ρ:
$ ./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"
Ρ ΠΎΠ²ΠΎΠΌ ΡΠ»ΡΡΠ°ΡΡ Π²ΡΠ°ΡΠ°ΠΌΠΎ Π²ΡΠ΅ΠΌΠ΅ ΠΊΠΎΡΠ΅ ΡΠΌΠΎ ΠΈΠΌΠ°Π»ΠΈ ΠΊΠ°Π΄Π° ΡΠΌΠΎ Π΅ΠΊΡΠΏΠ»ΠΈΡΠΈΡΠ½ΠΎ ΠΏΠΎΡΡΠ°Π²ΠΈΠ»ΠΈ ΠΠ°ΡΠ°Π Π°ΡΠ΅ ΠΈ ΠΠ΅Π»Π°ΠΈ Ρ ΡΠΊΡΠΈΠΏΡΠΈ:
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 ΡΠ΅ΠΊΡΠ½Π΄ΠΈ. ΠΠ° ΠΎΠ²Π°Ρ Π½Π°ΡΠΈΠ½ Π±ΠΈΡΠΌΠΎ Π·Π°ΠΏΡΠ°Π²ΠΎ ΠΌΠΎΠ³Π»ΠΈ ΠΏΠΎΡΡΠ°Π²ΠΈΡΠΈ Π±ΠΈΠ»ΠΎ ΠΊΠΎΡΠΈ ΠΎΠ΄ Π°ΡΡΠΈΠ±ΡΡΠ° ΠΊΠΎΡΠΈ ΡΠ΅ ΠΊΠΎΡΠΈΡΡΠ΅ Ρ ΡΠΊΡΠΈΠΏΡΠΈ. ΠΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΎ, ΠΌΠΎΠ³Π»ΠΈ Π±ΠΈΡΠΌΠΎ Π΄Π° ΠΏΠΎΡΡΠ°Π²ΠΈΠΌΠΎ Π°ΡΡΠΈΠ±ΡΡΠ΅ ΠΠ°ΠΊΠΠ°ΡΠΊΠ΅ΡΡ Π½Π° Π²ΡΠ΅Π΄Π½ΠΎΡΡΠΈ ΠΊΠΎΡΠ΅ Π½ΠΈΡΡ ΡΠ΅Π΄Π½Π° Π£Π΄ΠΏΠΡΡ ΠΎΠ¦Π»ΠΈΠ΅Π½Ρ.
ΠΠ°ΠΊΠΎ Π±ΠΈΡΡΠ΅ ΡΠΎ ΠΈΡΠΊΠΎΡΠΈΡΡΠΈΠ»ΠΈ? ΠΠΎΠΊΡΡΠ°ΡΠΈ. ΠΠ°ΠΏΠ°ΠΌΡΠΈΡΠ΅ Π΄Π° ΠΌΠΎΡΠ°ΡΠ΅ Π΄Π° ΠΊΠΎΠΌΠ΅Π½ΡΠ°ΡΠΈΡΠ΅ΡΠ΅ ΠΌΠ΅ΡΡΠΎ Π³Π΄Π΅ Π·Π°ΠΌΠ΅ΡΡΡΠ΅ΠΌΠΎ ΠΏΠΎΠ΄ΡΠ°Π·ΡΠΌΠ΅Π²Π°Π½Ρ Π²ΡΠ΅Π΄Π½ΠΎΡΡ Π°ΡΡΠΈΠ±ΡΡΠ° ΠΈ Π΅ΠΊΡΠΏΠ»ΠΈΡΠΈΡΠ½ΠΎ ΠΏΠΎΡΡΠ°Π²ΡΠ°ΠΌΠΎ ΠΠ°ΠΊΠΠ°ΡΠΊΠ΅ΡΡ Ρ ΡΡΠ΅Π½Π°ΡΠΈΡΡ. ΠΠ°ΡΠΈΠΌ ΠΌΠΎΡΠ°ΡΠ΅ ΠΏΠΎΠ½ΠΎΠ²ΠΎ ΠΈΠ·Π³ΡΠ°Π΄ΠΈΡΠΈ ΡΠΊΡΠΈΠΏΡΡ. Π’Π°ΠΊΠΎΡΠ΅ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΠΊΠΎΡΠΈΡΡΠΈΡΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Π½Ρ Π»ΠΈΠ½ΠΈΡΡ Π΄Π° Π±ΠΈΡΡΠ΅ Π΄ΠΎΠ±ΠΈΠ»ΠΈ ΠΏΠΎΠΌΠΎΡ Ρ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈ Π·Π° ΠΏΠΎΡΡΠ°Π²ΡΠ°ΡΠ΅ Π½ΠΎΠ²Π΅ ΠΏΠΎΠ΄ΡΠ°Π·ΡΠΌΠ΅Π²Π°Π½Π΅ Π²ΡΠ΅Π΄Π½ΠΎΡΡΠΈ Π°ΡΡΠΈΠ±ΡΡΠ°. ΠΠ°Π΄Π° ΠΎΠ²ΠΎ ΡΡ Π²Π°ΡΠΈΡΠ΅, ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΊΠΎΠ½ΡΡΠΎΠ»ΠΈΡΠ°ΡΠΈ Π±ΡΠΎΡ ΠΏΠ°ΠΊΠ΅ΡΠ° ΠΊΠΎΡΠΈ ΡΠ΅ ΠΏΡΠΈΠΊΠ°Π·ΡΡΡ Π½Π° ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΡ Π»ΠΈΠ½ΠΈΡΠΈ. ΠΠΎΡΡΠΎ ΡΠΌΠΎ ΠΌΠΈ ΠΌΠ°ΡΡΠΈΠ²ΠΈ ΡΡΠ΄ΠΈ, Π½Π°ΡΠ° ΠΊΠΎΠΌΠ°Π½Π΄Π½Π° Π»ΠΈΠ½ΠΈΡΠ° Π±ΠΈ ΡΡΠ΅Π±Π°Π»ΠΎ Π΄Π° ΠΈΠ·Π³Π»Π΅Π΄Π° ΠΎΡΠΏΡΠΈΠ»ΠΈΠΊΠ΅ ΠΎΠ²Π°ΠΊΠΎ:
$ ./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.
ΠΠΊΠΎ ΠΈΠ·Π°Π±Π΅ΡΠ΅ΡΠ΅ Π°ΡΠ³ΡΠΌΠ΅Π½Ρ βΠΡΠΈΠ½ΡΠΡΠΎΡΠΏΡβ, ΡΡΠ΅Π±Π°Π»ΠΎ Π±ΠΈ Π΄Π° Π²ΠΈΠ΄ΠΈΡΠ΅ Π»ΠΈΡΡΡ ΡΠ²ΠΈΡ ΡΠ΅Π³ΠΈΡΡΡΠΎΠ²Π°Π½ΠΈΡ Π³ΡΡΠΏΠ° Π’ΠΈΠΏΠ΅ΠΠ΄. ΠΠΌΠ΅Π½Π° Π³ΡΡΠΏΠ° ΡΡ Ρ ΡΠΊΠ»Π°Π΄Ρ ΡΠ° ΠΈΠΌΠ΅Π½ΠΈΠΌΠ° ΠΌΠΎΠ΄ΡΠ»Π° Ρ ΠΈΠ·Π²ΠΎΡΠ½ΠΎΠΌ Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡΡΠΌΡ (ΠΈΠ°ΠΊΠΎ Π½Π°ΠΏΠΈΡΠ°Π½Π° Π²Π΅Π»ΠΈΠΊΠΈΠΌ ΡΠ»ΠΎΠ²ΠΈΠΌΠ°). Π¨ΡΠ°ΠΌΠΏΠ°ΡΠ΅ ΡΠ²ΠΈΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡΠ° ΠΎΠ΄ΡΠ΅Π΄Π½ΠΎΠΌ Π±ΠΈ Π±ΠΈΠ»ΠΎ ΠΏΡΠ΅Π²ΠΈΡΠ΅ ΠΎΠ±ΠΈΠΌΠ½ΠΎ, ΡΠ°ΠΊΠΎ Π΄Π° ΡΠ΅ Π΄ΠΎΡΡΡΠΏΠ°Π½ Π΄ΠΎΠ΄Π°ΡΠ½ΠΈ ΡΠΈΠ»ΡΠ΅Ρ Π·Π° ΡΡΠ°ΠΌΠΏΠ°ΡΠ΅ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡΠ° ΠΏΠΎ Π³ΡΡΠΏΠ°ΠΌΠ°. ΠΠ°ΠΊΠ»Π΅, ΠΏΠΎΠ½ΠΎΠ²ΠΎ ΡΠ΅ ΡΠΎΠΊΡΡΠΈΡΠ°ΡΡΡΠΈ Π½Π° ΠΌΠΎΠ΄ΡΠ» ΠΎΠ΄ ΡΠ°ΡΠΊΠ΅ Π΄ΠΎ ΡΠ°ΡΠΊΠ΅:
./waf --run "scratch/myfirst --PrintGroup=PointToPoint"
TypeIds in group PointToPoint:
ns3::PointToPointChannel
ns3::PointToPointNetDevice
ns3::PointToPointRemoteChannel
ns3::PppHeader
ΠΠ²Π΄Π΅ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΡΠΎΠ½Π°ΡΠΈ Π΄ΠΎΡΡΡΠΏΠ½Π° Π’ΠΈΠΏΠ΅ΠΠ΄ ΠΈΠΌΠ΅Π½Π° Π·Π° ΡΡΠ°ΠΆΠ΅ΡΠ΅ Π°ΡΡΠΈΠ±ΡΡΠ°, Π½Π° ΠΏΡΠΈΠΌΠ΅Ρ Ρ
--PrintAttributes = ns3 :: PointToPointChannel
ΠΊΠ°ΠΎ ΡΡΠΎ ΡΠ΅ Π³ΠΎΡΠ΅ ΠΏΡΠΈΠΊΠ°Π·Π°Π½ΠΎ.
ΠΡΡΠ³ΠΈ Π½Π°ΡΠΈΠ½ Π΄Π° ΡΠ°Π·Π½Π°ΡΠ΅ ΠΎ Π°ΡΡΠΈΠ±ΡΡΠΈΠΌΠ° ΡΠ΅ ΠΏΡΠ΅ΠΊΠΎ ΠΠΎΠΊΠΈΠ³Π΅Π½ Π½Ρβ3. ΠΠΎΡΡΠΎΡΠΈ ΡΡΡΠ°Π½ΠΈΡΠ° ΠΊΠΎΡΠ° Π½Π°Π²ΠΎΠ΄ΠΈ ΡΠ²Π΅ Π°ΡΡΠΈΠ±ΡΡΠ΅ ΡΠ΅Π³ΠΈΡΡΡΠΎΠ²Π°Π½Π΅ Ρ ΡΠΈΠΌΡΠ»Π°ΡΠΎΡΡ.
5.2.2 Π‘Π½ΠΈΠΌΠ°ΡΠ΅ ΡΠΎΠΏΡΡΠ²Π΅Π½ΠΈΡ ΠΊΠΎΠΌΠ°Π½Π΄ΠΈ
Π’Π°ΠΊΠΎΡΠ΅ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄ΠΎΠ΄Π°ΡΠΈ ΡΠΎΠΏΡΡΠ²Π΅Π½Π΅ ΠΊΡΠΊΠ΅ ΠΏΡΠ΅ΠΊΠΎ ΡΠΈΡΡΠ΅ΠΌΠ° ΠΊΠΎΠΌΠ°Π½Π΄Π½Π΅ Π»ΠΈΠ½ΠΈΡΠ΅. ΠΠ²ΠΎ ΡΠ΅ ΡΠ°Π΄ΠΈ ΠΏΡΠΈΠ»ΠΈΡΠ½ΠΎ ΡΠ΅Π΄Π½ΠΎΡΡΠ°Π²Π½ΠΎ ΠΏΠΎΠΌΠΎΡΡ ΠΌΠ΅ΡΠΎΠ΄Π΅ ΠΏΠ°ΡΡΠ΅ΡΠ° ΠΊΠΎΠΌΠ°Π½Π΄Π½Π΅ Π»ΠΈΠ½ΠΈΡΠ΅ ΠΠΎΠ΄Π°ΡΡ Π²ΡΠ΅Π΄Π½ΠΎΡΡ.
Π₯Π°ΡΠ΄Π΅ Π΄Π° ΠΊΠΎΡΠΈΡΡΠΈΠΌΠΎ ΠΎΠ²Ρ ΡΡΠ½ΠΊΡΠΈΡΡ Π΄Π° ΠΎΠ΄ΡΠ΅Π΄ΠΈΠΌΠΎ Π±ΡΠΎΡ ΠΏΠ°ΠΊΠ΅ΡΠ° ΠΊΠΎΡΠΈ ΡΠ΅ Π±ΠΈΡΠΈ ΠΏΡΠΈΠΊΠ°Π·Π°Π½ΠΈ Π½Π° ΠΏΠΎΡΠΏΡΠ½ΠΎ Π΄ΡΡΠ³Π°ΡΠΈΡΠΈ Π½Π°ΡΠΈΠ½. Π₯Π°ΡΠ΄Π΅ Π΄Π° Π΄ΠΎΠ΄Π°ΠΌΠΎ Π»ΠΎΠΊΠ°Π»Π½Ρ ΠΏΡΠΎΠΌΠ΅Π½ΡΠΈΠ²Ρ ΠΏΠΎΠ΄ Π½Π°Π·ΠΈΠ²ΠΎΠΌ Π½ΠΠ°ΡΠΊΠ΅ΡΠΈ Ρ ΡΡΠ½ΠΊΡΠΈΡΡ Π³Π»Π°Π²Π½ΠΈ. ΠΠΎΡΡΠ°Π²ΠΈΡΠ΅ΠΌΠΎ Π³Π° Π½Π° ΡΠ΅Π΄Π°Π½ Π΄Π° ΠΎΠ΄Π³ΠΎΠ²Π°ΡΠ° Π½Π°ΡΠ΅ΠΌ ΠΏΡΠ΅ΡΡ
ΠΎΠ΄Π½ΠΎΠΌ ΠΏΠΎΠ΄ΡΠ°Π·ΡΠΌΠ΅Π²Π°Π½ΠΎΠΌ ΠΏΠΎΠ½Π°ΡΠ°ΡΡ. ΠΠ° Π±ΠΈΡΠΌΠΎ Π΄ΠΎΠ·Π²ΠΎΠ»ΠΈΠ»ΠΈ ΠΏΠ°ΡΡΠ΅ΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Π½Π΅ Π»ΠΈΠ½ΠΈΡΠ΅ Π΄Π° ΠΏΡΠΎΠΌΠ΅Π½ΠΈ ΠΎΠ²Ρ Π²ΡΠ΅Π΄Π½ΠΎΡΡ, ΠΌΠΎΡΠ°ΠΌΠΎ Π΄Π° ΡΡ
Π²Π°ΡΠΈΠΌΠΎ ΠΎΠ²Ρ Π²ΡΠ΅Π΄Π½ΠΎΡΡ Ρ ΠΏΠ°ΡΡΠ΅ΡΡ. Π’ΠΎ ΡΠ°Π΄ΠΈΠΌΠΎ Π΄ΠΎΠ΄Π°Π²Π°ΡΠ΅ΠΌ ΠΏΠΎΠ·ΠΈΠ²Π° ΠΠΎΠ΄Π°ΡΡ Π²ΡΠ΅Π΄Π½ΠΎΡΡ. ΠΠ΄ΠΈ ΠΈ ΠΏΡΠΎΠΌΠ΅Π½ΠΈ ΡΠΊΡΠΈΠΏΡΡ ΡΡΡΠ°ΡΡΡ
/ΠΌΠΈΡΠΈΡΡΡ.ΡΡ ΠΏΠ° Π΄Π° ΠΏΠΎΡΠ½Π΅ΠΌΠΎ ΡΠ° ΡΠ»Π΅Π΄Π΅ΡΠΈΠΌ ΠΊΠΎΠ΄ΠΎΠΌ,
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);
...
ΠΠΎΠΌΠ΅ΡΠΈΡΠ΅ ΡΠ΅ Π½Π°Π΄ΠΎΠ»Π΅ Π΄ΠΎ ΡΠ°ΡΠΊΠ΅ Ρ ΡΠΊΡΠΈΠΏΡΠΈ Π³Π΄Π΅ ΠΏΠΎΡΡΠ°Π²ΡΠ°ΠΌΠΎ Π°ΡΡΠΈΠ±ΡΡ ΠΠ°ΠΊΠΠ°ΡΠΊΠ΅ΡΡ ΠΈ ΠΌΠ΅ΡΠ°ΠΌΠΎ Π³Π° ΡΠ°ΠΊΠΎ Π΄Π° Π±ΡΠ΄Π΅ ΠΏΠΎΡΡΠ°Π²ΡΠ΅Π½ Π½Π° ΠΏΡΠΎΠΌΠ΅Π½ΡΠΈΠ²Ρ Π½ΠΠ°ΡΠΊΠ΅ΡΡ ΡΠΌΠ΅ΡΡΠΎ Π½Π° ΠΊΠΎΠ½ΡΡΠ°Π½ΡΡ 1, ΠΊΠ°ΠΎ ΡΡΠΎ ΡΠ΅ ΠΏΡΠΈΠΊΠ°Π·Π°Π½ΠΎ ΠΈΡΠΏΠΎΠ΄.
echoClient.SetAttribute ("MaxPackets", UintegerValue (nPackets));
Π‘Π°Π΄Π° Π°ΠΊΠΎ ΠΏΠΎΠΊΡΠ΅Π½Π΅ΡΠ΅ ΡΠΊΡΠΈΠΏΡΡ ΠΈ ΡΠ½Π΅ΡΠ΅ΡΠ΅ Π°ΡΠ³ΡΠΌΠ΅Π½Ρ -ΠΡΠΈΠ½ΡΠ₯Π΅Π»ΠΏ, ΡΡΠ΅Π±Π°Π»ΠΎ Π±ΠΈ Π΄Π° Π²ΠΈΠ΄ΠΈΡΠ΅ Π½ΠΎΠ²ΠΈ Π°ΡΠ³ΡΠΌΠ΅Π½Ρ ΠΊΠΎΡΠΈΡΠ½ΠΈΠΊΠ°. Π½Π°Π²Π΅Π΄Π΅Π½ Π½Π° Π΅ΠΊΡΠ°Π½Ρ ΠΏΠΎΠΌΠΎΡΠΈ. Π£Π½Π΅ΡΠΈΡΠ΅,
$ ./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
ΠΠΊΠΎ ΠΆΠ΅Π»ΠΈΡΠ΅ Π΄Π° ΠΏΡΠΎΠΌΠ΅Π½ΠΈΡΠ΅ Π±ΡΠΎΡ ΠΏΡΠ΅Π½Π΅ΡΠΈΡ ΠΏΠ°ΠΊΠ΅ΡΠ°, ΡΠΎ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΡΠΈΠ½ΠΈΡΠΈ ΡΠ°ΠΊΠΎ ΡΡΠΎ ΡΠ΅ΡΠ΅ ΠΏΠΎΡΡΠ°Π²ΠΈΡΠΈ Π°ΡΠ³ΡΠΌΠ΅Π½Ρ ΠΊΠΎΠΌΠ°Π½Π΄Π½Π΅ Π»ΠΈΠ½ΠΈΡΠ΅ -β-Π½ΠΠ°ΡΠΊΠ΅ΡΡ.
$ ./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()
Π‘Π°Π΄Π° ΡΡΠ΅ ΠΏΠΎΡΠ»Π°Π»ΠΈ Π΄Π²Π° ΠΏΠ°ΠΊΠ΅ΡΠ°. ΠΡΠΈΠ»ΠΈΡΠ½ΠΎ ΡΠ΅Π΄Π½ΠΎΡΡΠ°Π²Π½ΠΎ, Π·Π°Ρ Π½Π΅?
ΠΠΎΠΆΠ΅ΡΠ΅ Π²ΠΈΠ΄Π΅ΡΠΈ Π΄Π° ΠΊΠ°ΠΎ Π½Ρ-3 ΠΊΠΎΡΠΈΡΠ½ΠΈΠΊ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΠΊΠΎΡΠΈΡΡΠΈΡΠ΅ ΡΠΈΡΡΠ΅ΠΌ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠ° ΠΊΠΎΠΌΠ°Π½Π΄Π½Π΅ Π»ΠΈΠ½ΠΈΡΠ΅ Π·Π° ΠΌΠ°Π½ΠΈΠΏΡΠ»Π°ΡΠΈΡΡ Π³Π»ΠΎΠ±Π°Π»Π½ΠΈΠΌ Π²ΡΠ΅Π΄Π½ΠΎΡΡΠΈΠΌΠ° ΠΈ Π°ΡΡΠΈΠ±ΡΡΠΈΠΌΠ°. ΠΠΊΠΎ ΡΡΠ΅ Π°ΡΡΠΎΡ ΠΌΠΎΠ΄Π΅Π»Π°, ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄ΠΎΠ΄Π°ΡΠΈ Π½ΠΎΠ²Π΅ Π°ΡΡΠΈΠ±ΡΡΠ΅ ΡΠ²ΠΎΡΠΈΠΌ ΠΎΠ±ΡΠ΅ΠΊΡΠΈΠΌΠ° ΠΈ ΠΎΠ½ΠΈ ΡΠ΅ Π°ΡΡΠΎΠΌΠ°ΡΡΠΊΠΈ Π±ΠΈΡΠΈ Π΄ΠΎΡΡΡΠΏΠ½ΠΈ Π·Π° ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡΡ Π²Π°ΡΠΈΠΌ ΠΊΠΎΡΠΈΡΠ½ΠΈΡΠΈΠΌΠ° ΠΏΡΠ΅ΠΊΠΎ ΡΠΈΡΡΠ΅ΠΌΠ° ΠΊΠΎΠΌΠ°Π½Π΄Π½Π΅ Π»ΠΈΠ½ΠΈΡΠ΅. ΠΠΊΠΎ ΡΡΠ΅ Π°ΡΡΠΎΡ ΡΠΊΡΠΈΠΏΡΠ΅, ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄ΠΎΠ΄Π°ΡΠΈ Π½ΠΎΠ²Π΅ ΠΏΡΠΎΠΌΠ΅Π½ΡΠΈΠ²Π΅ ΡΠ²ΠΎΡΠΈΠΌ ΡΠΊΡΠΈΠΏΡΠ°ΠΌΠ° ΠΈ Π½Π΅ΠΏΡΠΈΠΌΠ΅ΡΠ½ΠΎ ΠΈΡ
ΡΠΊΡΡΡΠΈΡΠΈ Ρ ΡΠΈΡΡΠ΅ΠΌ ΠΊΠΎΠΌΠ°Π½Π΄Π½Π΅ Π»ΠΈΠ½ΠΈΡΠ΅.
5.3 ΠΠΎΡΠΈΡΡΠ΅ΡΠ΅ ΡΠΈΡΡΠ΅ΠΌΠ° ΠΏΡΠ°ΡΠ΅ΡΠ°
Π¦Π΅Π»ΠΎΠΊΡΠΏΠ½Π° ΠΏΠΎΠ΅Π½ΡΠ° ΠΌΠΎΠ΄Π΅Π»ΠΈΡΠ°ΡΠ° ΡΠ΅ Π΄Π° Π³Π΅Π½Π΅ΡΠΈΡΠ΅ ΠΈΠ·Π»Π°Π· Π·Π° Π΄Π°ΡΠ΅ ΠΏΡΠΎΡΡΠ°Π²Π°ΡΠ΅, Π° Π½Ρ-3 ΡΠΈΡΡΠ΅ΠΌ ΠΏΡΠ°ΡΠ΅ΡΠ° ΡΠ΅ Π³Π»Π°Π²Π½ΠΈ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·Π°ΠΌ Π·Π° ΡΠΎ. ΠΠΎΡΡΠΎ ΡΠ΅ Π½Ρ-3 Π¦++ ΠΏΡΠΎΠ³ΡΠ°ΠΌ, ΠΌΠΎΠ³Ρ ΡΠ΅ ΠΊΠΎΡΠΈΡΡΠΈΡΠΈ ΡΡΠ°Π½Π΄Π°ΡΠ΄Π½Π° ΡΡΠ΅Π΄ΡΡΠ²Π° Π·Π° Π³Π΅Π½Π΅ΡΠΈΡΠ°ΡΠ΅ ΠΈΠ·Π»Π°Π·Π° ΠΈΠ· Π¦++ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠ°:
#include <iostream>
...
int main ()
{
...
std::cout << "The value of x is " << x << std::endl;
...
}
ΠΠΎΠΆΠ΅ΡΠ΅ ΡΠ°ΠΊ ΠΊΠΎΡΠΈΡΡΠΈΡΠΈ ΠΈ ΠΌΠΎΠ΄ΡΠ» Π·Π° Π΅Π²ΠΈΠ΄Π΅Π½ΡΠΈΡΠ°ΡΠ΅ Π΄Π° Π΄ΠΎΠ΄Π°ΡΠ΅ ΠΌΠ°Π»ΠΎ ΡΡΡΡΠΊΡΡΡΠ΅ ΡΠ²ΠΎΠΌ ΡΠ΅ΡΠ΅ΡΡ. ΠΠΎΡΡΠΎΡΠΈ ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠΎΠ·Π½Π°ΡΠΈΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° ΡΠ·ΡΠΎΠΊΠΎΠ²Π°Π½ΠΈΡ ΠΎΠ²ΠΈΠΌ ΠΏΡΠΈΡΡΡΠΏΠΎΠΌ, ΠΈ ΡΡΠΎΠ³Π° ΡΠΌΠΎ ΠΎΠ±Π΅Π·Π±Π΅Π΄ΠΈΠ»ΠΈ ΠΎΠΏΡΡΠΈ ΠΏΠΎΠ΄ΡΠΈΡΡΠ΅ΠΌ Π·Π° ΠΏΡΠ°ΡΠ΅ΡΠ΅ Π΄ΠΎΠ³Π°ΡΠ°ΡΠ° Π·Π° ΡΠ΅ΡΠ°Π²Π°ΡΠ΅ ΠΎΠ²ΠΈΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ°.
ΠΠ»Π°Π²Π½ΠΈ ΡΠΈΡΠ΅Π²ΠΈ Π½Ρ-3 ΡΠΈΡΡΠ΅ΠΌΠ° ΠΏΡΠ°ΡΠ΅ΡΠ° ΡΡ:
-
ΠΠ° ΠΎΡΠ½ΠΎΠ²Π½Π΅ Π·Π°Π΄Π°ΡΠΊΠ΅, ΡΠΈΡΡΠ΅ΠΌ ΠΏΡΠ°ΡΠ΅ΡΠ° ΡΡΠ΅Π±Π° Π΄Π° ΠΎΠΌΠΎΠ³ΡΡΠΈ ΠΊΠΎΡΠΈΡΠ½ΠΈΠΊΡ Π΄Π° Π³Π΅Π½Π΅ΡΠΈΡΠ΅ ΡΡΠ°Π½Π΄Π°ΡΠ΄Π½ΠΈ ΡΡΠ°Π³ Π·Π° ΠΏΠΎΠΏΡΠ»Π°ΡΠ½Π΅ ΠΈΠ·Π²ΠΎΡΠ΅ ΠΈ ΠΈΠ·Π°Π±Π΅ΡΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΠ΅ ΠΊΠΎΡΠΈ Π³Π΅Π½Π΅ΡΠΈΡΡ ΡΡΠ°Π³;
-
Π‘ΡΠ΅Π΄ΡΠΈ ΠΊΠΎΡΠΈΡΠ½ΠΈΡΠΈ Π±ΠΈ ΡΡΠ΅Π±Π°Π»ΠΎ Π΄Π° Π±ΡΠ΄Ρ Ρ ΠΌΠΎΠ³ΡΡΠ½ΠΎΡΡΠΈ Π΄Π° ΠΏΡΠΎΡΠΈΡΠ΅ ΡΠΈΡΡΠ΅ΠΌ ΠΏΡΠ°ΡΠ΅ΡΠ° ΠΊΠ°ΠΊΠΎ Π±ΠΈ ΠΏΡΠΎΠΌΠ΅Π½ΠΈΠ»ΠΈ Π³Π΅Π½Π΅ΡΠΈΡΠ°Π½ΠΈ ΠΈΠ·Π»Π°Π·Π½ΠΈ ΡΠΎΡΠΌΠ°Ρ ΠΈΠ»ΠΈ ΡΠ±Π°ΡΠΈΠ»ΠΈ Π½ΠΎΠ²Π΅ ΠΈΠ·Π²ΠΎΡΠ΅ ΠΏΡΠ°ΡΠ΅ΡΠ°, Π±Π΅Π· ΠΌΠΎΠ΄ΠΈΡΠΈΠΊΠ°ΡΠΈΡΠ΅ ΡΠ΅Π·Π³ΡΠ° ΡΠΈΠΌΡΠ»Π°ΡΠΎΡΠ°;
-
ΠΠ°ΠΏΡΠ΅Π΄Π½ΠΈ ΠΊΠΎΡΠΈΡΠ½ΠΈΡΠΈ ΠΌΠΎΠ³Ρ Π΄Π° ΠΌΠΎΠ΄ΠΈΡΠΈΠΊΡΡΡ ΡΠ΅Π·Π³ΡΠΎ ΡΠΈΠΌΡΠ»Π°ΡΠΎΡΠ° Π΄Π° Π΄ΠΎΠ΄Π°ΡΡ Π½ΠΎΠ²Π΅ ΠΈΠ·Π²ΠΎΡΠ΅ ΡΡΠ°Π³ΠΎΠ²Π° ΠΈ ΠΏΠΎΠ½ΠΎΡΠ΅. Π‘ΠΈΡΡΠ΅ΠΌ ΠΏΡΠ°ΡΠ΅ΡΠ° Π½Ρ-3 ΠΈΠ·Π³ΡΠ°ΡΠ΅Π½ ΡΠ΅ Π½Π° ΠΏΡΠΈΠ½ΡΠΈΠΏΠΈΠΌΠ° Π½Π΅Π·Π°Π²ΠΈΡΠ½ΠΎΠ³ ΠΏΡΠ°ΡΠ΅ΡΠ° ΠΈΠ·Π²ΠΎΡΠ° ΠΈ ΠΏΡΠΈΡΠ΅ΠΌΠ½ΠΈΠΊΠ°, ΠΊΠ°ΠΎ ΠΈ ΠΎΠ±ΡΠ΅Π΄ΠΈΡΠ΅Π½ΠΎΠ³ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌΠ° Π·Π° ΠΏΠΎΠ²Π΅Π·ΠΈΠ²Π°ΡΠ΅ ΠΈΠ·Π²ΠΎΡΠ° ΡΠ° ΠΏΠΎΡΡΠΎΡΠ°ΡΠΈΠΌΠ°.
Π‘ΠΈΡΡΠ΅ΠΌ ΠΏΡΠ°ΡΠ΅ΡΠ° Π½Ρ-3 ΠΈΠ·Π³ΡΠ°ΡΠ΅Π½ ΡΠ΅ Π½Π° ΠΏΡΠΈΠ½ΡΠΈΠΏΠΈΠΌΠ° Π½Π΅Π·Π°Π²ΠΈΡΠ½ΠΎΠ³ ΠΏΡΠ°ΡΠ΅ΡΠ° ΠΈΠ·Π²ΠΎΡΠ° ΠΈ ΠΏΡΠΈΡΠ΅ΠΌΠ½ΠΈΠΊΠ°, ΠΊΠ°ΠΎ ΠΈ ΡΠ΅Π΄ΠΈΠ½ΡΡΠ²Π΅Π½ΠΎΠ³ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌΠ° Π·Π° ΠΏΠΎΠ²Π΅Π·ΠΈΠ²Π°ΡΠ΅ ΠΈΠ·Π²ΠΎΡΠ° ΡΠ° ΠΏΡΠΈΡΠ΅ΠΌΠ½ΠΈΡΠΈΠΌΠ°. ΠΠ·Π²ΠΎΡΠΈ ΡΡΠ°Π³ΠΎΠ²Π° ΡΡ ΠΎΠ±ΡΠ΅ΠΊΡΠΈ ΠΊΠΎΡΠΈ ΠΌΠΎΠ³Ρ ΡΠΈΠ³Π½Π°Π»ΠΈΠ·ΠΈΡΠ°ΡΠΈ Π΄ΠΎΠ³Π°ΡΠ°ΡΠ΅ ΠΊΠΎΡΠΈ ΡΠ΅ Π΄Π΅ΡΠ°Π²Π°ΡΡ Ρ ΡΠΈΠΌΡΠ»Π°ΡΠΈΡΠΈ ΠΈ ΠΎΠΌΠΎΠ³ΡΡΠΈΡΠΈ ΠΏΡΠΈΡΡΡΠΏ ΠΎΡΠ½ΠΎΠ²Π½ΠΈΠΌ ΠΏΠΎΠ΄Π°ΡΠΈΠΌΠ° ΠΎΠ΄ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ°. ΠΠ° ΠΏΡΠΈΠΌΠ΅Ρ, ΠΈΠ·Π²ΠΎΡ ΠΏΡΠ°ΡΠ΅ΡΠ° ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠΊΠ°ΠΆΠ΅ ΠΊΠ°Π΄Π° ΡΠ΅ ΠΌΡΠ΅ΠΆΠ½ΠΈ ΡΡΠ΅ΡΠ°Ρ ΠΏΡΠΈΠΌΠΈΠΎ ΠΏΠ°ΠΊΠ΅Ρ ΠΈ ΡΡΠΈΠ½ΠΈ ΡΠ°Π΄ΡΠΆΠ°Ρ ΠΏΠ°ΠΊΠ΅ΡΠ° Π΄ΠΎΡΡΡΠΏΠ½ΠΈΠΌ Π·Π°ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠΎΠ²Π°Π½ΠΈΠΌ ΠΏΡΠΈΠΌΠ°ΠΎΡΠΈΠΌΠ° ΠΏΡΠ°ΡΠ΅ΡΠ°.
ΠΠ·Π²ΠΎΡΠΈ ΠΏΡΠ°ΡΠ΅ΡΠ° ΡΠ°ΠΌΠΈ ΠΏΠΎ ΡΠ΅Π±ΠΈ ΡΡ Π±Π΅ΡΠΊΠΎΡΠΈΡΠ½ΠΈ ΠΎΡΠΈΠΌ Π°ΠΊΠΎ Π½ΠΈΡΡ "ΡΠΏΠ°ΡΠ΅Π½ΠΈ" ΡΠ° Π΄ΡΡΠ³ΠΈΠΌ Π΄Π΅Π»ΠΎΠ²ΠΈΠΌΠ° ΠΊΠΎΠ΄Π° ΠΊΠΎΡΠΈ Π·Π°ΠΏΡΠ°Π²ΠΎ ΡΠ°Π΄Π΅ Π½Π΅ΡΡΠΎ ΠΊΠΎΡΠΈΡΠ½ΠΎ ΡΠ° ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡΠ°ΠΌΠ° ΠΊΠΎΡΠ΅ ΠΏΡΡΠΆΠ° ΠΏΡΠΈΡΠ΅ΠΌΠ½ΠΈΠΊ. Π’ΡΠ°Π³Π°ΡΠΈ ΡΡ ΠΏΠΎΡΡΠΎΡΠ°ΡΠΈ Π΄ΠΎΠ³Π°ΡΠ°ΡΠ° ΠΈ ΠΏΠΎΠ΄Π°ΡΠ°ΠΊΠ° Π΄ΠΎΠ±ΠΈΡΠ΅Π½ΠΈΡ ΠΎΠ΄ ΠΈΠ·Π²ΠΎΡΠ° ΠΏΡΠ°ΡΠ΅ΡΠ°. ΠΠ° ΠΏΡΠΈΠΌΠ΅Ρ, ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΊΡΠ΅ΠΈΡΠ°ΡΠΈ ΠΏΡΠΈΡΠ΅ΠΌΠ½ΠΈΠΊ ΠΏΡΠ°ΡΠ΅ΡΠ° ΠΊΠΎΡΠΈ ΡΠ΅ (ΠΊΠ°Π΄Π° ΡΠ΅ ΠΏΠΎΠ²Π΅Π·Π°Π½ ΡΠ° ΠΈΠ·Π²ΠΎΡΠΎΠΌ ΠΏΡΠ°ΡΠ΅ΡΠ° ΠΈΠ· ΠΏΡΠ΅ΡΡ ΠΎΠ΄Π½ΠΎΠ³ ΠΏΡΠΈΠΌΠ΅ΡΠ°) ΠΎΠ΄ΡΡΠ°ΠΌΠΏΠ°ΡΠΈ Π΄Π΅Π»ΠΎΠ²Π΅ ΠΎΠ΄ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ° Ρ ΠΏΡΠΈΠΌΡΠ΅Π½ΠΎΠΌ ΠΏΠ°ΠΊΠ΅ΡΡ.
ΠΠ±ΡΠ°Π·Π»ΠΎΠΆΠ΅ΡΠ΅ Π·Π° ΠΎΠ²ΠΎ Π΅ΠΊΡΠΏΠ»ΠΈΡΠΈΡΠ½ΠΎ ΡΠ°Π·Π΄Π²Π°ΡΠ°ΡΠ΅ ΡΠ΅ Π΄Π° ΡΠ΅ ΠΎΠΌΠΎΠ³ΡΡΠΈ ΠΊΠΎΡΠΈΡΠ½ΠΈΡΠΈΠΌΠ° Π΄Π° ΠΏΠΎΠ²Π΅ΠΆΡ Π½ΠΎΠ²Π΅ ΡΠΈΠΏΠΎΠ²Π΅ ΠΏΠΎΠ½ΠΎΡΠ° ΡΠ° ΠΏΠΎΡΡΠΎΡΠ΅ΡΠΈΠΌ ΠΈΠ·Π²ΠΎΡΠΈΠΌΠ° ΠΏΡΠ°ΡΠ΅ΡΠ° Π±Π΅Π· ΠΏΠΎΡΡΠ΅Π±Π΅ Π΄Π° ΡΡΠ΅ΡΡΡΡ ΠΈ ΠΏΠΎΠ½ΠΎΠ²ΠΎ ΠΊΠΎΠΌΠΏΠ°ΡΠ»ΠΈΡΠ°ΡΡ ΡΠ΅Π·Π³ΡΠΎ ΡΠΈΠΌΡΠ»Π°ΡΠΎΡΠ°. ΠΠ°ΠΊΠ»Π΅, Ρ Π³ΠΎΡΡΠ΅ΠΌ ΠΏΡΠΈΠΌΠ΅ΡΡ, ΠΊΠΎΡΠΈΡΠ½ΠΈΠΊ ΠΌΠΎΠΆΠ΅ Π΄Π° Π΄Π΅ΡΠΈΠ½ΠΈΡΠ΅ Π½ΠΎΠ²ΠΈ ΡΡΠ°Π³Π°Ρ Ρ ΡΠ²ΠΎΡΠΎΡ ΡΠΊΡΠΈΠΏΡΠΈ ΠΈ Π΄Π° Π³Π° ΠΏΠΎΠ²Π΅ΠΆΠ΅ ΡΠ° ΠΏΠΎΡΡΠΎΡΠ΅ΡΠΈΠΌ ΠΈΠ·Π²ΠΎΡΠΎΠΌ ΠΏΡΠ°ΡΠ΅ΡΠ° Π΄Π΅ΡΠΈΠ½ΠΈΡΠ°Π½ΠΈΠΌ Ρ ΡΠ΅Π·Π³ΡΡ ΡΠΈΠΌΡΠ»Π°ΡΠΈΡΠ΅ ΡΠ°ΠΌΠΎ ΡΡΠ΅ΡΠΈΠ²Π°ΡΠ΅ΠΌ ΠΊΠΎΡΠΈΡΠ½ΠΈΡΠΊΠ΅ ΡΠΊΡΠΈΠΏΡΠ΅.
Π£ ΠΎΠ²ΠΎΠΌ Π²ΠΎΠ΄ΠΈΡΡ ΡΠ΅ΠΌΠΎ ΠΏΡΠΎΡΠΈ ΠΊΡΠΎΠ· Π½Π΅ΠΊΠ΅ ΠΎΠ΄ ΡΠ½Π°ΠΏΡΠ΅Π΄ Π΄Π΅ΡΠΈΠ½ΠΈΡΠ°Π½ΠΈΡ ΠΈΠ·Π²ΠΎΡΠ° ΠΈ ΠΏΠΎΠ½ΠΎΡΠ° ΠΈ ΠΏΠΎΠΊΠ°Π·Π°ΡΠΈ ΠΊΠ°ΠΊΠΎ ΡΠ΅ ΠΎΠ½ΠΈ ΠΌΠΎΠ³Ρ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠΈΡΠ°ΡΠΈ ΡΠ· Π½Π°ΡΠΌΠ°ΡΠΈ Π½Π°ΠΏΠΎΡ ΠΊΠΎΡΠΈΡΠ½ΠΈΠΊΠ°. ΠΠΎΠ³Π»Π΅Π΄Π°ΡΡΠ΅ Π½Ρ-3 ΠΏΡΠΈΡΡΡΠ½ΠΈΠΊ ΠΈΠ»ΠΈ ΠΎΠ΄Π΅ΡΠΊΠ΅ ΡΠ° ΡΠΏΡΡΡΡΠ²ΠΈΠΌΠ° Π·Π° ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡΠ΅ ΠΎ Π½Π°ΠΏΡΠ΅Π΄Π½ΠΎΡ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡΠΈ ΠΏΡΠ°ΡΠ΅ΡΠ°, ΡΠΊΡΡΡΡΡΡΡΠΈ ΠΏΡΠΎΡΠΈΡΠ΅ΡΠ΅ ΠΈΠΌΠ΅Π½ΡΠΊΠΎΠ³ ΠΏΡΠΎΡΡΠΎΡΠ° ΠΏΡΠ°ΡΠ΅ΡΠ° ΠΈ ΠΊΡΠ΅ΠΈΡΠ°ΡΠ΅ Π½ΠΎΠ²ΠΈΡ ΠΈΠ·Π²ΠΎΡΠ° ΠΏΡΠ°ΡΠ΅ΡΠ°.
5.3.1 ΠΠ‘Π¦ΠΠ ΠΏΡΠ°ΡΠ΅ΡΠ΅
Π½Ρ-3 ΠΏΡΡΠΆΠ° ΠΏΠΎΠΌΠΎΡΠ½Ρ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»Π½ΠΎΡΡ ΠΊΠΎΡΠ° ΠΎΠ±Π΅Π·Π±Π΅ΡΡΡΠ΅ ΡΠΈΡΡΠ΅ΠΌ ΠΏΡΠ°ΡΠ΅ΡΠ° Π½ΠΈΡΠΊΠΎΠ³ Π½ΠΈΠ²ΠΎΠ° ΠΊΠΎΡΠΈ ΡΠ΅ Π²Π°ΠΌ ΠΏΠΎΠΌΠΎΡΠΈ ΡΠ° Π΄Π΅ΡΠ°ΡΠΈΠΌΠ° ΠΏΡΠΈΠ»ΠΈΠΊΠΎΠΌ ΠΏΠΎΡΡΠ°Π²ΡΠ°ΡΠ° ΡΠ΅Π΄Π½ΠΎΡΡΠ°Π²Π½ΠΈΡ ΠΏΡΠ°ΡΠ΅ΡΠ° ΠΏΠ°ΠΊΠ΅ΡΠ°. ΠΠΊΠΎ ΠΎΠΌΠΎΠ³ΡΡΠΈΡΠ΅ ΠΎΠ²Ρ ΡΡΠ½ΠΊΡΠΈΡΡ, Π²ΠΈΠ΄Π΅ΡΠ΅ΡΠ΅ ΠΈΠ·Π»Π°Π· Ρ ΠΠ‘Π¦ΠΠ Π΄Π°ΡΠΎΡΠ΅ΠΊΠ°ΠΌΠ°. ΠΠ° ΠΎΠ½Π΅ ΠΊΠΎΡΠΈ ΡΡ ΡΠΏΠΎΠ·Π½Π°ΡΠΈ ΡΠ° Π½Ρ-2 ΠΈΠ·Π»Π°Π·ΠΎΠΌ, ΠΎΠ²Π°Ρ ΡΠΈΠΏ ΡΡΠ°Π³Π° ΡΠ΅ ΡΠ»ΠΈΡΠ°Π½ ΠΎΡΡ.ΡΡ, ΠΊΠΎΡΠΈ ΡΠ΅ Π³Π΅Π½Π΅ΡΠΈΡΠ΅ ΠΏΠΎΠΌΠΎΡΡ ΠΌΠ½ΠΎΠ³ΠΈΡ ΡΠΊΡΠΈΠΏΡΠΈ.
Π₯Π°ΡΠ΄Π΅ Π΄Π° ΠΏΡΠ΅ΡΠ΅ΠΌΠΎ Π½Π° ΠΏΠΎΡΠ°ΠΎ ΠΈ Π΄ΠΎΠ΄Π°ΠΌΠΎ Π½Π΅ΠΊΠ΅ ΡΠ΅Π·ΡΠ»ΡΠ°ΡΠ΅ ΠΠ‘Π¦ΠΠ ΠΏΡΠ°ΡΠ΅ΡΠ° Π½Π°ΡΠΎΡ ΡΡΡΠ°ΡΡΡ
/ΠΌΠΈΡΠΈΡΡΡ.ΡΡ ΡΠΊΡΠΈΠΏΡΠΈ. ΠΠ΅ΠΏΠΎΡΡΠ΅Π΄Π½ΠΎ ΠΏΡΠ΅ ΠΏΠΎΠ·ΠΈΠ²Π° Simulator :: Run ()
, Π΄ΠΎΠ΄Π°ΡΡΠ΅ ΡΠ»Π΅Π΄Π΅ΡΠ΅ Π»ΠΈΠ½ΠΈΡΠ΅ ΠΊΠΎΠ΄Π°:
ΠΡΡΠΈΠΈΠ’ΡΠ°ΡΠ΅Π₯Π΅Π»ΠΏΠ΅Ρ Π°ΡΡΠΈΠΈ;
pointToPoint.EnableAsciiAll (ascii.CreateFileStream ("myfirst.tr"));
ΠΠ°ΠΎ ΠΈ ΠΌΠ½ΠΎΠ³ΠΈ Π΄ΡΡΠ³ΠΈ Π½Ρ-3 ΠΈΠ΄ΠΈΠΎΠΌΠΈ, ΠΎΠ²Π°Ρ ΠΊΠΎΠ΄ ΠΊΠΎΡΠΈΡΡΠΈ ΠΏΠΎΠΌΠΎΡΠ½ΠΈ ΠΎΠ±ΡΠ΅ΠΊΠ°Ρ Π·Π° ΠΊΡΠ΅ΠΈΡΠ°ΡΠ΅ ΠΠ‘Π¦ΠΠ ΡΡΠ°Π³ΠΎΠ²Π°. ΠΡΡΠ³ΠΈ ΡΠ΅Π΄ ΡΠ°Π΄ΡΠΆΠΈ Π΄Π²Π° ΡΠ³Π½Π΅ΠΆΡΠ΅Π½Π° ΠΏΠΎΠ·ΠΈΠ²Π° ΠΌΠ΅ΡΠΎΠ΄Π°. ΠΠ΅ΡΠΎΠ΄Π° "ΠΈΠ·Π½ΡΡΡΠ°". Π¦ΡΠ΅Π°ΡΠ΅Π€ΠΈΠ»Π΅Π‘ΡΡΠ΅Π°ΠΌ() ΠΊΠΎΡΠΈΡΡΠΈ ΠΈΠ΄ΠΈΠΎΠΌ Π°Π½ΠΎΠ½ΠΈΠΌΠ½ΠΎΠ³ ΠΎΠ±ΡΠ΅ΠΊΡΠ° Π·Π° ΠΊΡΠ΅ΠΈΡΠ°ΡΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΠ° ΡΠΎΠΊΠ° Π΄Π°ΡΠΎΡΠ΅ΠΊΠ° Π½Π° ΡΡΠ΅ΠΊΡ (Π±Π΅Π· ΠΈΠΌΠ΅Π½Π° ΠΎΠ±ΡΠ΅ΠΊΡΠ°) ΠΈ ΠΏΡΠΎΡΠ»Π΅ΡΡΡΠ΅ Π³Π° ΠΏΠΎΠ·Π²Π°Π½ΠΎΡ ΠΌΠ΅ΡΠΎΠ΄ΠΈ. ΠΡΠΈ ΡΠ΅ΠΌΠΎ Π΄ΡΠ±ΡΠ΅ Ρ ΠΎΠ²ΠΎ Ρ Π±ΡΠ΄ΡΡΠ½ΠΎΡΡΠΈ, Π°Π»ΠΈ ΡΠ²Π΅ ΡΡΠΎ ΡΡΠ΅Π±Π° Π΄Π° Π·Π½Π°ΡΠ΅ Ρ ΠΎΠ²ΠΎΠΌ ΡΡΠ΅Π½ΡΡΠΊΡ ΡΠ΅ Π΄Π° ΠΊΡΠ΅ΠΈΡΠ°ΡΠ΅ ΠΎΠ±ΡΠ΅ΠΊΠ°Ρ ΠΊΠΎΡΠΈ ΠΏΡΠ΅Π΄ΡΡΠ°Π²ΡΠ° Π΄Π°ΡΠΎΡΠ΅ΠΊΡ ΠΏΠΎΠ΄ Π½Π°Π·ΠΈΠ²ΠΎΠΌ ΠΌΠΈΡΠΈΡΡΡ.ΡΡ ΠΈ ΠΏΡΠ΅Π½Π΅ΡΠΈΡΠ΅ Π³Π° Ρ Π½Ρ-3. ΠΠΎΠ²Π΅ΡΠ°Π²Π°ΠΌΠΎ Π½Ρ-3 Π΄Π° Π±ΡΠΈΠ½Π΅ ΠΎ ΠΊΡΠ΅ΠΈΡΠ°Π½ΠΎΠΌ ΠΎΠ±ΡΠ΅ΠΊΡΡ ΡΠΎΠΊΠΎΠΌ ΡΠ΅Π»ΠΎΠ³ ΡΠ΅Π³ΠΎΠ²ΠΎΠ³ ΠΆΠΈΠ²ΠΎΡΠ½ΠΎΠ³ Π²Π΅ΠΊΠ°, ΡΠΎΠΊΠΎΠΌ ΠΊΠΎΡΠ΅Π³ ΡΠ΅ΡΠ°Π²Π° ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ΅ ΡΠ·ΡΠΎΠΊΠΎΠ²Π°Π½Π΅ ΠΌΠ°Π»ΠΎ ΠΏΠΎΠ·Π½Π°ΡΠΈΠΌ (Π½Π°ΠΌΠ΅ΡΠ½ΠΈΠΌ) ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅ΡΠ΅ΠΌ ΠΏΠΎΠ²Π΅Π·Π°Π½ΠΈΠΌ ΡΠ° ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΠΈΠΌΠ° ΠΊΠΎΠΏΠΈΡΠ°ΡΠ° ΠΎΠ±ΡΠ΅ΠΊΠ°ΡΠ° Π¦++ ΡΠΎΠΊΠ°.
ΠΠΊΡΡΠ΅ΡΠ½ΠΈ ΠΏΠΎΠ·ΠΈΠ² ΠΠ½Π°Π±Π»Π΅ΠΡΡΠΈΠΈΠΠ»Π»() ΠΊΠ°ΠΆΠ΅ ΠΏΠΎΠΌΠΎΡΠ½ΠΈΠΊΡ Π΄Π° ΠΆΠ΅Π»ΠΈΡΠ΅ Π΄Π° ΡΠΊΡΡΡΠΈΡΠ΅ ΠΠ‘Π¦ΠΠ ΠΏΡΠ°ΡΠ΅ΡΠ΅ Ρ ΡΠ²ΠΎΡΡ ΡΠΈΠΌΡΠ»Π°ΡΠΈΡΡ Π·Π° ΡΠ²Π΅ Π²Π΅Π·Π΅ ΡΡΠ΅ΡΠ°ΡΠ° ΠΎΠ΄ ΡΠ°ΡΠΊΠ΅ Π΄ΠΎ ΡΠ°ΡΠΊΠ΅ ΠΈ Π΄Π° ΠΆΠ΅Π»ΠΈΡΠ΅ Π΄Π° (Π½Π°Π²Π΅Π΄Π΅Π½ΠΈ) ΠΏΡΠΈΡΠ΅ΠΌΠ½ΠΈΡΠΈ ΠΏΡΠ°ΡΠ΅ΡΠ° ΡΠ½ΠΈΠΌΠ°ΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡΠ΅ ΠΎ ΠΊΡΠ΅ΡΠ°ΡΡ ΠΏΠ°ΠΊΠ΅ΡΠ° Ρ ΠΠ‘Π¦ΠΠ ΡΠΎΡΠΌΠ°ΡΡ.
ΠΠ° ΠΎΠ½Π΅ ΠΊΠΎΡΠΈ ΡΡ ΡΠΏΠΎΠ·Π½Π°ΡΠΈ ΡΠ° Π½Ρ-2, ΠΏΡΠ°ΡΠ΅Π½ΠΈ Π΄ΠΎΠ³Π°ΡΠ°ΡΠΈ ΡΡ Π΅ΠΊΠ²ΠΈΠ²Π°Π»Π΅Π½ΡΠ½ΠΈ ΠΏΠΎΠ·Π½Π°ΡΠΈΠΌ ΡΠ°ΡΠΊΠ°ΠΌΠ° ΠΏΡΠ°ΡΠ΅ΡΠ° ΠΊΠΎΡΠ΅ Π±Π΅Π»Π΅ΠΆΠ΅ Π΄ΠΎΠ³Π°ΡΠ°ΡΠ΅ "+", "-", "Π΄" ΠΈ "Ρ".
Π‘Π°Π΄Π° ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° Π½Π°ΠΏΡΠ°Π²ΠΈΡΠ΅ ΡΠΊΡΠΈΠΏΡΡ ΠΈ Π΄Π° ΡΠ΅ ΠΏΠΎΠΊΡΠ΅Π½Π΅ΡΠ΅ ΠΈΠ· ΠΊΠΎΠΌΠ°Π½Π΄Π½Π΅ Π»ΠΈΠ½ΠΈΡΠ΅:
$ ./waf --run scratch/myfirst
ΠΠ°ΠΎ ΠΈ ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΡΡΠ° Π΄ΠΎ ΡΠ°Π΄Π°, Π²ΠΈΠ΄Π΅ΡΠ΅ΡΠ΅ Π½Π΅ΠΊΠΎΠ»ΠΈΠΊΠΎ ΠΏΠΎΡΡΠΊΠ° ΠΎΠ΄ ΠΠ°Ρ-Π°, Π° Π·Π°ΡΠΈΠΌ ββΠΈΠ·ΡΠ°Π΄Π°β ΡΠ΅ ΡΡΠΏΠ΅ΡΠ½ΠΎ Π·Π°Π²ΡΡΠ΅Π½Π°β ΡΠ° Π½Π΅ΠΊΠΈΠΌ ΠΏΠΎΡΡΠΊΠ°ΠΌΠ° ΠΈΠ· ΠΏΠΎΠΊΡΠ΅Π½ΡΡΠΎΠ³ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠ°.
ΠΠ°Π΄Π° ΡΠ΅ ΠΏΠΎΠΊΡΠ΅Π½Π΅, ΠΏΡΠΎΠ³ΡΠ°ΠΌ ΡΠ΅ ΠΊΡΠ΅ΠΈΡΠ°ΡΠΈ Π΄Π°ΡΠΎΡΠ΅ΠΊΡ ΠΏΠΎΠ΄ Π½Π°Π·ΠΈΠ²ΠΎΠΌ ΠΌΠΈΡΠΈΡΡΡ.ΡΡ. ΠΠ±ΠΎΠ³ ΠΏΡΠΈΡΠΎΠ΄Π΅ ΠΏΠΎΡΠ»Π° ΠΠ°Ρ, ΠΏΠΎΠ΄ΡΠ°Π·ΡΠΌΠ΅Π²Π°Π½ΠΎ ΡΠ΅ Π΄Π°ΡΠΎΡΠ΅ΠΊΠ° Π½Π΅ ΠΊΡΠ΅ΠΈΡΠ° Ρ Π»ΠΎΠΊΠ°Π»Π½ΠΎΠΌ Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡΡΠΌΡ, Π²Π΅Ρ Ρ Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡΡΠΌΡ Π½Π°ΡΠ²ΠΈΡΠ΅Π³ Π½ΠΈΠ²ΠΎΠ° ΡΠΏΡΠ΅ΠΌΠΈΡΡΠ°. ΠΠΊΠΎ ΠΆΠ΅Π»ΠΈΡΠ΅ Π΄Π° ΠΏΡΠΎΠΌΠ΅Π½ΠΈΡΠ΅ ΠΏΡΡΠ°ΡΡ Π½Π° ΠΊΠΎΡΠΎΡ ΡΠ΅ ΡΡΠ²Π°ΡΡ ΡΡΠ°Π³ΠΎΠ²ΠΈ, ΠΎΠ½Π΄Π° ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΠΊΠΎΡΠΈΡΡΠΈΡΠ΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΠ°Ρ ΠΠ°Ρ Π΄Π° ΡΠΎ ΠΎΠ΄ΡΠ΅Π΄ΠΈΡΠ΅ --cwd
. ΠΠΈΡΠΌΠΎ ΠΎΠ²ΠΎ ΡΡΠ°Π΄ΠΈΠ»ΠΈ, ΠΏΠ° Π΄Π° Π±ΠΈΡΠΌΠΎ ΠΏΠΎΠ³Π»Π΅Π΄Π°Π»ΠΈ ΠΠ‘Π¦ΠΠ Π΄Π°ΡΠΎΡΠ΅ΠΊΡ ΠΏΡΠ°ΡΠ΅ΡΠ° ΠΌΠΈΡΠΈΡΡΡ.ΡΡ Ρ Π²Π°ΡΠ΅ΠΌ ΠΎΠΌΠΈΡΠ΅Π½ΠΎΠΌ ΡΡΠ΅ΡΠΈΠ²Π°ΡΡ, ΠΌΠΎΡΠ°ΡΠ΅ΠΌΠΎ Π΄Π° ΠΎΠ΄Π΅ΠΌΠΎ Π΄ΠΎ Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡΡΠΌΠ° Π½Π°ΡΠ²ΠΈΡΠ΅Π³ Π½ΠΈΠ²ΠΎΠ° Π½Π°ΡΠ΅Π³ ΡΠΏΡΠ΅ΠΌΠΈΡΡΠ°.
ΠΠ°ΡΡΠΈΠ½Π³ ΠΠ‘Π¦ΠΠ ΡΡΠ°Π³ΠΎΠ²Π°
Π’Π°ΠΌΠΎ ΠΈΠΌΠ° Π΄ΠΎΡΡΠ° ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡΠ° Ρ ΠΏΡΠΈΠ»ΠΈΡΠ½ΠΎ Π³ΡΡΡΠΎΠΌ ΠΎΠ±Π»ΠΈΠΊΡ, Π°Π»ΠΈ ΠΏΡΠ²Π° ΡΡΠ²Π°Ρ ΠΊΠΎΡΡ ΡΡΠ΅Π±Π° Π΄Π° ΠΏΡΠΈΠΌΠ΅ΡΠΈΡΠ΅ ΡΠ΅ Π΄Π° ΡΠ΅ Π΄Π°ΡΠΎΡΠ΅ΠΊΠ° ΡΠ°ΡΡΠΎΡΠΈ ΠΎΠ΄ ΠΏΠΎΡΠ΅Π΄ΠΈΠ½Π°ΡΠ½ΠΈΡ ΡΠ΅Π΄ΠΎΠ²Π°. ΠΠ²ΠΎ ΡΠ΅ ΠΏΠΎΡΡΠ°ΡΠΈ ΡΠ°ΡΠ½ΠΎ Π²ΠΈΠ΄ΡΠΈΠ²ΠΎ Π°ΠΊΠΎ ΠΏΡΠΎΡΠΈΡΠΈΡΠ΅ ΠΏΡΠΎΠ·ΠΎΡ Π·Π° Π³Π»Π΅Π΄Π°ΡΠ΅.
Π‘Π²Π°ΠΊΠΈ ΡΠ΅Π΄ Ρ Π΄Π°ΡΠΎΡΠ΅ΡΠΈ ΠΎΠ΄Π³ΠΎΠ²Π°ΡΠ° Π΄ΠΎΠ³Π°ΡΠ°ΡΡ ΠΏΡΠ°ΡΠ΅ΡΠ°. Π£ ΠΎΠ²ΠΎΠΌ ΡΠ»ΡΡΠ°ΡΡ, ΠΏΡΠ°ΡΠΈΠΌΠΎ Π΄ΠΎΠ³Π°ΡΠ°ΡΠ΅ Ρ ΡΠ΅Π΄Ρ Π·Π° ΠΏΡΠ΅Π½ΠΎΡ ΠΊΠΎΡΠΈ ΡΡ ΠΏΡΠΈΡΡΡΠ½ΠΈ Ρ ΡΠ²Π°ΠΊΠΎΠΌ ΠΌΡΠ΅ΠΆΠ½ΠΎΠΌ ΡΡΠ΅ΡΠ°ΡΡ ΡΠ°ΡΠΊΠ°-ΡΠ°ΡΠΊΠ° Ρ ΡΠΈΠΌΡΠ»Π°ΡΠΈΡΠΈ. Π Π΅Π΄ ΠΏΡΠ΅Π½ΠΎΡΠ° ΡΠ΅ ΡΠ΅Π΄ ΠΊΡΠΎΠ· ΠΊΠΎΡΠΈ ΡΠ²Π°ΠΊΠΈ ΠΏΠ°ΠΊΠ΅Ρ ΠΌΠΎΡΠ° ΠΏΡΠΎΡΠΈ Π·Π° Π²Π΅Π·Ρ ΠΎΠ΄ ΡΠ°ΡΠΊΠ΅ Π΄ΠΎ ΡΠ°ΡΠΊΠ΅. ΠΠΌΠ°ΡΡΠ΅ Π½Π° ΡΠΌΡ Π΄Π° ΡΠ²Π°ΠΊΠΈ ΡΠ΅Π΄ Ρ Π΄Π°ΡΠΎΡΠ΅ΡΠΈ ΠΏΡΠ°ΡΠ΅ΡΠ° ΠΏΠΎΡΠΈΡΠ΅ ΡΠ΅Π΄Π½ΠΈΠΌ Π·Π½Π°ΠΊΠΎΠΌ (ΠΈ ΠΈΠΌΠ° ΡΠ°Π·ΠΌΠ°ΠΊ ΠΈΠ·Π° ΡΠ΅Π³Π°). ΠΠ²Π°Ρ ΡΠΈΠΌΠ±ΠΎΠ» ΡΠ΅ ΠΈΠΌΠ°ΡΠΈ ΡΠ»Π΅Π΄Π΅ΡΠ΅ Π·Π½Π°ΡΠ΅ΡΠ΅:
+: ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡΠ° ΡΠ΅ΠΊΠ°ΡΠ° ΡΠ΅ Π΄Π΅ΡΠΈΠ»Π° Π½Π° ΡΠ΅Π΄Ρ ΡΡΠ΅ΡΠ°ΡΠ°;
-: ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡΠ° ΠΏΡΠ΅ΡΠ·ΠΈΠΌΠ°ΡΠ° Π΅Π»Π΅ΠΌΠ΅Π½ΡΠ° ΡΠ΅ Π΄Π΅ΡΠΈΠ»Π° Ρ ΡΠ΅Π΄Ρ ΡΡΠ΅ΡΠ°ΡΠ°;
Π΄: ΠΏΠ°ΠΊΠ΅Ρ ΡΠ΅ ΠΎΠ΄Π±Π°ΡΠ΅Π½, ΠΎΠ±ΠΈΡΠ½ΠΎ Π·Π°ΡΠΎ ΡΡΠΎ ΡΠ΅ ΡΠ΅Π΄ Π±ΠΈΠΎ ΠΏΡΠ½;
Ρ: ΠΡΠ΅ΠΆΠ½ΠΈ ΡΡΠ΅ΡΠ°Ρ ΡΠ΅ ΠΏΡΠΈΠΌΠΈΠΎ ΠΏΠ°ΠΊΠ΅Ρ.
Π₯Π°ΡΠ΄Π΅ Π΄Π° Π±Π»ΠΈΠΆΠ΅ ΠΏΠΎΠ³Π»Π΅Π΄Π°ΠΌΠΎ ΠΏΡΠ²ΠΈ ΡΠ΅Π΄ Ρ Π΄Π°ΡΠΎΡΠ΅ΡΠΈ ΠΏΡΠ°ΡΠ΅ΡΠ°. ΠΠΎΠ΄Π΅Π»ΠΈΡΡ Π³Π° Π½Π° Π΄Π΅Π»ΠΎΠ²Π΅ (ΡΠ° ΡΠ²Π»Π°ΡΠ΅ΡΠ΅ΠΌ ΡΠ°Π΄ΠΈ ΡΠ°ΡΠ½ΠΎΡΠ΅) ΠΈ Π±ΡΠΎΡΠ΅ΠΌ ΡΠ΅Π΄Π° ΡΠ° Π»Π΅Π²Π΅ ΡΡΡΠ°Π½Π΅:
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) ΡΠ΅ Π²ΡΠ΅ΠΌΠ΅ ΡΠΈΠΌΡΠ»Π°ΡΠΈΡΠ΅, ΠΈΠ·ΡΠ°ΠΆΠ΅Π½ΠΎ Ρ ΡΠ΅ΠΊΡΠ½Π΄Π°ΠΌΠ°. ΠΠΎΠΆΠ΄Π° ΡΠ΅ ΡΠ΅ΡΠ°ΡΠ΅ ΡΡΠ° ΡΠΌΠΎ ΠΏΠΈΡΠ°Π»ΠΈ Π£Π΄ΠΏΠΡΡ ΠΎΠ¦Π»ΠΈΠ΅Π½ΡΠΠΏΠΏΠ»ΠΈΡΠ°ΡΠΈΠΎΠ½ ΠΏΠΎΡΠ½ΠΈΡΠ΅ Π΄Π° ΡΠ°ΡΠ΅ΡΠ΅ ΠΏΠ°ΠΊΠ΅ΡΠ΅ Π·Π° Π΄Π²Π΅ ΡΠ΅ΠΊΡΠ½Π΄Π΅. ΠΠ²Π΄Π΅ Π²ΠΈΠ΄ΠΈΠΌΠΎ ΠΏΠΎΡΠ²ΡΠ΄Ρ Π΄Π° ΡΠ΅ ΡΠΎ Π·Π°ΠΈΡΡΠ° Π΄Π΅ΡΠ°Π²Π°.
Π‘Π»Π΅Π΄Π΅ΡΠΈ ΠΎΠ΄Π΅ΡΠ°ΠΊ ΠΏΡΠΈΠΌΠ΅ΡΠ° ΠΏΡΠ°ΡΠ΅ΡΠ° (ΠΈΠ· ΡΠ΅Π΄Π° 2) ΠΏΠΎΠΊΠ°Π·ΡΡΠ΅ ΠΊΠΎΡΠΈ ΠΈΠ·Π²ΠΎΡ ΠΏΡΠ°ΡΠ΅ΡΠ° ΡΠ΅ Π³Π΅Π½Π΅ΡΠΈΡΠ°ΠΎ ΠΎΠ²Π°Ρ Π΄ΠΎΠ³Π°ΡΠ°Ρ (ΡΠΊΠ°Π·ΡΡΠ΅ Π½Π° ΡΡΠ°Π³ ΠΏΡΠΎΡΡΠΎΡΠ° ΠΈΠΌΠ΅Π½Π°). ΠΠΎΠΆΠ΅ΡΠ΅ ΡΠ°Π·ΠΌΠΈΡΡΠ°ΡΠΈ ΠΎ ΠΈΠΌΠ΅Π½ΡΠΊΠΎΠΌ ΠΏΡΠΎΡΡΠΎΡΡ ΠΏΡΠ°ΡΠ΅ΡΠ° ΡΠ»ΠΈΡΠ½ΠΎ ΠΊΠ°ΠΎ ΠΎ ΠΈΠΌΠ΅Π½ΡΠΊΠΎΠΌ ΠΏΡΠΎΡΡΠΎΡΡ ΡΠΈΡΡΠ΅ΠΌΠ° Π΄Π°ΡΠΎΡΠ΅ΠΊΠ°. ΠΠΎΡΠ΅Π½ ΠΈΠΌΠ΅Π½ΡΠΊΠΎΠ³ ΠΏΡΠΎΡΡΠΎΡΠ° ΡΠ΅ ΠΠΎΠ΄Π΅ΠΠΈΡΡ. ΠΠ²ΠΎ ΠΎΠ΄Π³ΠΎΠ²Π°ΡΠ° ΠΊΠΎΠ½ΡΠ΅ΡΠ½Π΅ΡΡ ΠΊΠΎΡΠΈΠΌ ΡΠ΅ ΡΠΏΡΠ°Π²ΡΠ° Ρ Π³Π»Π°Π²Π½ΠΎΠΌ Π½Ρ-3 ΠΊΠΎΠ΄Ρ. Π‘Π°Π΄ΡΠΆΠΈ ΡΠ²Π΅ ΡΠ²ΠΎΡΠΎΠ²Π΅ ΠΊΠΎΡΠΈ ΡΡ ΠΊΡΠ΅ΠΈΡΠ°Π½ΠΈ Ρ ΡΠΊΡΠΈΠΏΡΠΈ. ΠΠ°Ρ ΠΊΠ°ΠΎ ΡΡΠΎ ΡΠΈΡΡΠ΅ΠΌ Π΄Π°ΡΠΎΡΠ΅ΠΊΠ° ΠΌΠΎΠΆΠ΅ ΠΈΠΌΠ°ΡΠΈ Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡΡΠΌΠ΅ Ρ ΡΠ²ΠΎΠΌ ΠΊΠΎΡΠ΅Π½Ρ, ΠΠΎΠ΄Π΅ΠΠΈΡΡ ΠΌΠΎΠΆΠ΅ΠΌΠΎ ΠΈΠΌΠ°ΡΠΈ ΠΌΠ½ΠΎΠ³ΠΎ ΡΠ²ΠΎΡΠΎΠ²Π°. ΠΠ°ΠΊΠ»Π΅, Π»ΠΈΠ½ΠΈΡΠ° /ΠΠΎΠ΄Π΅ΠΠΈΡΡ/0 ΡΠ΅ ΠΎΠ΄Π½ΠΎΡΠΈ Π½Π° Π½ΡΠ»ΡΠΈ ΡΠ²ΠΎΡ Ρ ΠΠΈΡΡΠΈ ΡΠ²ΠΎΡΠΎΠ²Π°, ΠΊΠΎΡΠΈ ΠΎΠ±ΠΈΡΠ½ΠΎ ΡΠΌΠ°ΡΡΠ°ΠΌΠΎ "ΡΠ²ΠΎΡΠΎΠΌ 0". Π‘Π²Π°ΠΊΠΈ ΡΠ²ΠΎΡ ΠΈΠΌΠ° Π»ΠΈΡΡΡ ΡΡΠ΅ΡΠ°ΡΠ° ΠΊΠΎΡΠΈ ΡΡ ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ°Π½ΠΈ. ΠΠ²Π° Π»ΠΈΡΡΠ° ΡΠ΅ Π½Π°Π»Π°Π·ΠΈ ΡΠ»Π΅Π΄Π΅ΡΠ΅ Ρ ΠΈΠΌΠ΅Π½ΡΠΊΠΎΠΌ ΠΏΡΠΎΡΡΠΎΡΡ. ΠΠΎΠΆΠ΅ΡΠ΅ Π²ΠΈΠ΄Π΅ΡΠΈ Π΄Π° ΠΎΠ²Π°Ρ Π΄ΠΎΠ³Π°ΡΠ°Ρ ΡΡΠ°Π³Π° ΠΏΠΎΡΠΈΡΠ΅ ΠΈΠ· ΠΠ΅Π²ΠΈΡΠ΅ΠΠΈΡΡ/0, ΡΡΠΎ ΡΠ΅ Π½ΡΠ»ΡΠΈ ΡΡΠ΅ΡΠ°Ρ ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ°Π½ Ρ ΡΠ²ΠΎΡΡ.
Π‘Π»Π΅Π΄Π΅ΡΠΈ ΠΏΠΎΠ΄Π½ΠΈΠ·, $ ns3 :: PointToPointNetDevice
, Π³ΠΎΠ²ΠΎΡΠΈ ΠΊΠΎΡΠΈ ΡΡΠ΅ΡΠ°Ρ ΡΠ΅ Π½Π° ΠΏΠΎΠ·ΠΈΡΠΈΡΠΈ Π½ΡΠ»Π°: Π»ΠΈΡΡΠ° ΡΡΠ΅ΡΠ°ΡΠ° Π½ΡΠ»ΡΠ΅ ΡΠ°ΡΠΊΠ΅. ΠΠΎΠ΄ΡΠ΅ΡΠΈΠΌΠΎ ΡΠ΅ Π΄Π° ΡΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡΠ° + ΠΏΡΠΎΠ½Π°ΡΠ΅Π½Π° Ρ ΡΠ΅Π΄Ρ 0 Π·Π½Π°ΡΠΈΠ»Π° Π΄Π° ΡΠ΅ Π΅Π»Π΅ΠΌΠ΅Π½Ρ Π΄ΠΎΠ΄Π°Ρ Ρ ΡΠ΅Π΄ Π·Π° ΠΏΡΠ΅Π½ΠΎΡ ΡΡΠ΅ΡΠ°ΡΠ°. ΠΠ²ΠΎ ΡΠ΅ ΠΎΠ³Π»Π΅Π΄Π° Ρ ΠΏΠΎΡΠ»Π΅Π΄ΡΠΈΠΌ ΡΠ΅Π³ΠΌΠ΅Π½ΡΠΈΠΌΠ° βΠΏΡΡΠ°ΡΠ° ΡΡΠ°Π·Π΅β: Π’ΠΊΠΡΠ΅ΡΠ΅/ΠΠ½ΠΊΡΠ΅ΡΠ΅.
ΠΡΠ΅ΠΎΡΡΠ°Π»Π΅ ΡΠ΅ΠΊΡΠΈΡΠ΅ Ρ ΠΏΡΠ°ΡΠ΅ΡΡ ΡΡΠ΅Π±Π° Π΄Π° Π±ΡΠ΄Ρ ΠΏΡΠΈΠ»ΠΈΡΠ½ΠΎ ΠΈΠ½ΡΡΠΈΡΠΈΠ²Π½ΠΈ. Π Π΅Π΄ΠΎΠ²ΠΈ 3-4 ΠΎΠ·Π½Π°ΡΠ°Π²Π°ΡΡ Π΄Π° ΡΠ΅ ΠΏΠ°ΠΊΠ΅Ρ ΠΈΠ½ΠΊΠ°ΠΏΡΡΠ»ΠΈΡΠ°Π½ Ρ ΠΏΡΠΎΡΠΎΠΊΠΎΠ» ΠΎΠ΄ ΡΠ°ΡΠΊΠ΅ Π΄ΠΎ ΡΠ°ΡΠΊΠ΅. Π Π΅Π΄ΠΎΠ²ΠΈ 5-7 ΠΏΠΎΠΊΠ°Π·ΡΡΡ Π΄Π° ΠΏΠ°ΠΊΠ΅Ρ ΠΈΠΌΠ° Π·Π°Π³Π»Π°Π²ΡΠ΅ ΠΠ4 Π²Π΅ΡΠ·ΠΈΡΠ΅ ΠΈ Π΄Π° ΠΏΠΎΡΠΈΡΠ΅ ΠΈΠ· ΠΠ Π°Π΄ΡΠ΅ΡΠ΅ 10.1.1.1
ΠΈ Π½Π°ΠΌΠ΅ΡΠ΅Π½ Π·Π° 10.1.1.2
. Π Π΅Π΄ΠΎΠ²ΠΈ 8-9 ΠΏΠΎΠΊΠ°Π·ΡΡΡ Π΄Π° ΠΎΠ²Π°Ρ ΠΏΠ°ΠΊΠ΅Ρ ΠΈΠΌΠ° Π£ΠΠ Π·Π°Π³Π»Π°Π²ΡΠ΅ ΠΈ Π½Π° ΠΊΡΠ°ΡΡ ΡΠ΅Π΄ 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)
ΠΠΌΠ°ΡΡΠ΅ Π½Π° ΡΠΌΡ Π΄Π° ΡΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡΠ° ΠΏΡΠ°ΡΠ΅ΡΠ° ΡΠ°Π΄Π° Ρ ΠΈ Π΄Π° ΡΠ΅ Π²ΡΠ΅ΠΌΠ΅ ΡΠΈΠΌΡΠ»Π°ΡΠΈΡΠ΅ ΠΏΠΎΠ²Π΅ΡΠ°Π½ΠΎ Π½Π° 2,25732 ΡΠ΅ΠΊΡΠ½Π΄Π΅. ΠΠΊΠΎ ΡΡΠ΅ ΠΏΠ°ΠΆΡΠΈΠ²ΠΎ ΠΏΡΠ°ΡΠΈΠ»ΠΈ ΡΠΏΡΡΡΡΠ²ΠΎ, ΡΠΎ Π·Π½Π°ΡΠΈ Π΄Π° ΡΡΠ΅ ΠΎΡΡΠ°Π²ΠΈΠ»ΠΈ Π±ΡΠ·ΠΈΠ½Ρ ΠΏΠΎΠ΄Π°ΡΠ°ΠΊΠ° ΠΈ ΠΊΠ°ΡΡΠ΅ΡΠ΅ Π²Π΅Π·Π΅ Π½Π° ΠΌΡΠ΅ΠΆΠ½ΠΈΠΌ ΡΡΠ΅ΡΠ°ΡΠΈΠΌΠ° Π½Π° ΠΏΠΎΠ΄ΡΠ°Π·ΡΠΌΠ΅Π²Π°Π½ΠΈΠΌ Π²ΡΠ΅Π΄Π½ΠΎΡΡΠΈΠΌΠ°. ΠΠ²ΠΎ Π²ΡΠ΅ΠΌΠ΅ Π±ΠΈ ΡΡΠ΅Π±Π°Π»ΠΎ Π΄Π° Π²Π°ΠΌ ΡΠ΅ ΠΏΠΎΠ·Π½Π°ΡΠΎ, ΠΊΠ°ΠΎ ΡΡΠΎ ΡΡΠ΅ Π²ΠΈΠ΄Π΅Π»ΠΈ Ρ ΠΏΡΠ΅ΡΡ ΠΎΠ΄Π½ΠΎΠΌ ΠΎΠ΄Π΅ΡΠΊΡ.
Π£Π½ΠΎΡ ΠΈΠΌΠ΅Π½ΡΠΊΠΎΠ³ ΠΏΡΠΎΡΡΠΎΡΠ° ΠΈΠ·Π²ΠΎΡΠ° ΠΏΡΠ°ΡΠ΅ΡΠ° (ΡΠ΅Π΄ 2) ΡΠ΅ ΠΈΠ·ΠΌΠ΅ΡΠ΅Π½ ΡΠ°ΠΊΠΎ Π΄Π° ΠΎΠ΄ΡΠ°ΠΆΠ°Π²Π° Π΄Π° ΠΎΠ²Π°Ρ Π΄ΠΎΠ³Π°ΡΠ°Ρ ΠΏΠΎΡΠΈΡΠ΅ ΠΈΠ· ΡΠ²ΠΎΡΠ° 1 (/ΠΠΎΠ΄Π΅ΠΠΈΡΡ/1) ΠΈ ΠΏΠ°ΠΊΠ΅Ρ ΡΠ΅ ΠΏΡΠΈΠΌΡΠ΅Π½ ΠΎΠ΄ ΡΡΡΠ°Π½Π΅ ΠΈΠ·Π²ΠΎΡΠ° ΠΏΡΠ°ΡΠ΅ΡΠ° (/ΠΠ°ΡΠ ΠΊ). Π’ΡΠ΅Π±Π°Π»ΠΎ Π±ΠΈ Π΄Π° Π²Π°ΠΌ Π±ΡΠ΄Π΅ ΠΏΡΠΈΠ»ΠΈΡΠ½ΠΎ Π»Π°ΠΊΠΎ Π΄Π° ΠΏΡΠ°ΡΠΈΡΠ΅ ΠΊΡΠ΅ΡΠ°ΡΠ΅ ΠΏΠ°ΠΊΠ΅ΡΠ° ΠΊΡΠΎΠ· ΡΠΎΠΏΠΎΠ»ΠΎΠ³ΠΈΡΡ Π³Π»Π΅Π΄Π°ΡΡΡΠΈ ΠΏΡΠ΅ΠΎΡΡΠ°Π»Π΅ ΡΡΠ°Π³ΠΎΠ²Π΅ Ρ Π΄Π°ΡΠΎΡΠ΅ΡΠΈ.
5.3.2 ΠΠ¦ΠΠ Π’ΡΠ°ΡΠ΅
Π½Ρ-3 ΠΠ΅Π²ΠΈΡΠ΅ Π₯Π΅Π»ΠΏΠ΅ΡΡ ΡΠ΅ ΡΠ°ΠΊΠΎΡΠ΅ ΠΌΠΎΠ³Ρ ΠΊΠΎΡΠΈΡΡΠΈΡΠΈ Π·Π° ΠΊΡΠ΅ΠΈΡΠ°ΡΠ΅ Π΄Π°ΡΠΎΡΠ΅ΠΊΠ° ΠΏΡΠ°ΡΠ΅ΡΠ° Ρ .ΠΏΡΠ°ΠΏ ΡΠΎΡΠΌΠ°ΡΡ. ΠΠΊΡΠΎΠ½ΠΈΠΌ ΠΏΡΠ°ΠΏ (ΠΎΠ±ΠΈΡΠ½ΠΎ ΡΠ΅ ΠΏΠΈΡΠ΅ ΠΌΠ°Π»ΠΈΠΌ ΡΠ»ΠΎΠ²ΠΈΠΌΠ°) ΠΎΠ·Π½Π°ΡΠ°Π²Π° Ρ Π²Π°ΡΠ°ΡΠ΅ ΠΏΠ°ΠΊΠ΅ΡΠ° ΠΈ Π·Π°ΠΏΡΠ°Π²ΠΎ ΡΠ΅ ΠΠΠ ΠΊΠΎΡΠΈ ΡΠΊΡΡΡΡΡΠ΅ Π΄Π΅ΡΠΈΠ½ΠΈΡΠ°ΡΠ΅ ΡΠΎΡΠΌΠ°ΡΠ° Π΄Π°ΡΠΎΡΠ΅ΠΊΠ΅ .ΠΏΡΠ°ΠΏ. ΠΠ°ΡΠΏΠΎΠΏΡΠ»Π°ΡΠ½ΠΈΡΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌ ΠΊΠΎΡΠΈ ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠΈΡΠ° ΠΈ ΠΏΡΠΈΠΊΠ°Π·ΡΡΠ΅ ΠΎΠ²Π°Ρ ΡΠΎΡΠΌΠ°Ρ ΡΠ΅ ΠΠΈΡΠ΅ΡΡ Π°ΡΠΊ (ΡΠ°Π½ΠΈΡΠ΅ Π·Π²Π°ΠΎ ΠΡΡ Π΅ΡΠ΅Π°Π»). ΠΠ΅ΡΡΡΠΈΠΌ, ΠΏΠΎΡΡΠΎΡΠΈ ΠΌΠ½ΠΎΠ³ΠΎ Π°Π½Π°Π»ΠΈΠ·Π°ΡΠΎΡΠ° ΡΡΠ°Π³ΠΎΠ²Π° ΡΠ°ΠΎΠ±ΡΠ°ΡΠ°ΡΠ° ΠΊΠΎΡΠΈ ΠΊΠΎΡΠΈΡΡΠ΅ ΠΎΠ²Π°Ρ ΡΠΎΡΠΌΠ°Ρ ΠΏΠ°ΠΊΠ΅ΡΠ°. ΠΠΎΠ΄ΡΡΠΈΡΠ΅ΠΌΠΎ ΠΊΠΎΡΠΈΡΠ½ΠΈΠΊΠ΅ Π΄Π° ΠΊΠΎΡΠΈΡΡΠ΅ ΠΌΠ½ΠΎΠ³Π΅ Π΄ΠΎΡΡΡΠΏΠ½Π΅ Π°Π»Π°ΡΠ΅ Π·Π° Π°Π½Π°Π»ΠΈΠ·Ρ ΠΏΡΠ°ΠΏ ΡΡΠ°Π³ΠΎΠ²Π°. Π£ ΠΎΠ²ΠΎΠΌ Π²ΠΎΠ΄ΠΈΡΡ ΡΠ΅ΠΌΠΎ ΡΠ΅ ΡΠΎΠΊΡΡΠΈΡΠ°ΡΠΈ Π½Π° Π³Π»Π΅Π΄Π°ΡΠ΅ ΠΏΡΠ°ΠΏ ΡΡΠ°Π³ΠΎΠ²Π° ΠΏΠΎΠΌΠΎΡΡ ΡΡΠΏΠ΄ΡΠΌΠΏ.
ΠΠΌΠΎΠ³ΡΡΠ°Π²Π°ΡΠ΅ ΠΏΡΠ°ΡΠ΅ΡΠ° ΠΏΡΠ°ΠΏ Π²ΡΡΠΈ ΡΠ΅ ΡΠ° ΡΠ΅Π΄Π½ΠΎΠΌ Π»ΠΈΠ½ΠΈΡΠΎΠΌ ΠΊΠΎΠ΄Π°.
pointToPoint.EnablePcapAll ("myfirst");
ΠΠ°Π»Π΅ΠΏΠΈΡΠ΅ ΠΎΠ²Π°Ρ ΡΠ΅Π΄ ΠΊΠΎΠ΄Π° ΠΏΠΎΡΠ»Π΅ ΠΠ‘Π¦ΠΠ ΠΊΠΎΠ΄Π° Π·Π° ΠΏΡΠ°ΡΠ΅ΡΠ΅ ΠΊΠΎΡΠΈ ΡΠΌΠΎ ΡΠΏΡΠ°Π²ΠΎ Π΄ΠΎΠ΄Π°Π»ΠΈ ΡΡΡΠ°ΡΡΡ /ΠΌΠΈΡΠΈΡΡΡ.ΡΡ. ΠΠΌΠ°ΡΡΠ΅ Π½Π° ΡΠΌΡ Π΄Π° ΡΠΌΠΎ ΠΏΡΠΎΡΠ»Π΅Π΄ΠΈΠ»ΠΈ ΡΠ°ΠΌΠΎ ΡΡΡΠΈΠ½Π³ "ΠΌΠΈΡΠΈΡΡΡ", Π½Π΅ "ΠΌΠΈΡΠΈΡΡΡ.ΠΏΡΠ°ΠΏ" ΠΈΠ»ΠΈ Π±ΠΈΠ»ΠΎ ΡΡΠ° ΡΠ»ΠΈΡΠ½ΠΎ. Π’ΠΎ ΡΠ΅ Π·Π°ΡΠΎ ΡΡΠΎ ΡΠ΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΠ°Ρ ΠΏΡΠ΅ΡΠΈΠΊΡ, Π° Π½Π΅ ΠΏΡΠ½ΠΎ ΠΈΠΌΠ΅ Π΄Π°ΡΠΎΡΠ΅ΠΊΠ΅. Π’ΠΎΠΊΠΎΠΌ ΡΠΈΠΌΡΠ»Π°ΡΠΈΡΠ΅, ΠΏΠΎΠΌΠΎΡΠ½ΠΈΠΊ ΡΠ΅ Π·Π°ΠΏΡΠ°Π²ΠΎ ΠΊΡΠ΅ΠΈΡΠ°ΡΠΈ Π΄Π°ΡΠΎΡΠ΅ΠΊΡ ΠΏΡΠ°ΡΠ΅ΡΠ° Π·Π° ΡΠ²Π°ΠΊΠΈ ΡΡΠ΅ΡΠ°Ρ ΠΎΠ΄ ΡΠ°ΡΠΊΠ΅ Π΄ΠΎ ΡΠ°ΡΠΊΠ΅. ΠΠΌΠ΅Π½Π° Π΄Π°ΡΠΎΡΠ΅ΠΊΠ° ΡΠ΅ Π±ΠΈΡΠΈ Π½Π°ΠΏΡΠ°Π²ΡΠ΅Π½Π° ΠΊΠΎΡΠΈΡΡΠ΅ΡΠΈ ΠΏΡΠ΅ΡΠΈΠΊΡ, Π±ΡΠΎΡ ΡΠ²ΠΎΡΠ°, Π±ΡΠΎΡ ΡΡΠ΅ΡΠ°ΡΠ° ΠΈ ΡΡΡΠΈΠΊΡ ".ΠΏΡΠ°ΠΏ'.
ΠΠ° Π½Π°Ρ ΠΏΡΠΈΠΌΠ΅Ρ ΡΠΊΡΠΈΠΏΡΠ΅, Π½Π° ΠΊΡΠ°ΡΡ ΡΠ΅ΠΌΠΎ Π²ΠΈΠ΄Π΅ΡΠΈ Π΄Π°ΡΠΎΡΠ΅ΠΊΠ΅ ΠΏΠΎΠ΄ Π½Π°Π·ΠΈΠ²ΠΎΠΌ "ΠΌΠΈΡΠΈΡΡΡ-0-0.ΠΏΡΠ°ΠΏ"Π"ΠΌΠΈΡΠΈΡΡΡ-1-0.ΠΏΡΠ°ΠΏ", ΠΊΠΎΡΠΈ ΡΡ ΠΏΡΠ°ΠΏ ΡΡΠ°Π³ΠΎΠ²ΠΈ Π·Π° ΡΠ²ΠΎΡ 0-ΡΡΠ΅ΡΠ°Ρ 0 ΠΈ ΡΠ²ΠΎΡ 1-ΡΡΠ΅ΡΠ°Ρ 0 ΡΠ΅ΡΠΏΠ΅ΠΊΡΠΈΠ²Π½ΠΎ. ΠΠ°Π΄Π° Π΄ΠΎΠ΄Π°ΡΠ΅ Π»ΠΈΠ½ΠΈΡΡ ΠΊΠΎΠ΄Π° Π΄Π° Π±ΠΈΡΡΠ΅ ΠΎΠΌΠΎΠ³ΡΡΠΈΠ»ΠΈ ΠΏΡΠ°ΡΠ΅ΡΠ΅ ΠΏΡΠ°ΠΏ, ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΠΎΠΊΡΠ΅Π½ΡΡΠΈ ΡΠΊΡΠΈΠΏΡΡ Π½Π° ΡΠΎΠ±ΠΈΡΠ°ΡΠ΅Π½ Π½Π°ΡΠΈΠ½:
$ ./waf --run scratch/myfirst
ΠΠΊΠΎ ΠΏΠΎΠ³Π»Π΅Π΄Π°ΡΠ΅ Ρ Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡΡΠΌ Π½Π°ΡΠ²ΠΈΡΠ΅Π³ Π½ΠΈΠ²ΠΎΠ° Π²Π°ΡΠ΅ Π΄ΠΈΡΡΡΠΈΠ±ΡΡΠΈΡΠ΅, ΡΡΠ΅Π±Π°Π»ΠΎ Π±ΠΈ Π΄Π° Π²ΠΈΠ΄ΠΈΡΠ΅ ΡΡΠΈ Π΄Π°ΡΠΎΡΠ΅ΠΊΠ΅: ΠΠ‘Π¦ΠΠ Π΄Π°ΡΠΎΡΠ΅ΠΊΡ ΠΏΡΠ°ΡΠ΅ΡΠ° ΠΌΠΈΡΠΈΡΡΡ.ΡΡ, ΠΊΠΎΡΠ΅ ΡΠΌΠΎ ΠΏΡΠ΅ΡΡ ΠΎΠ΄Π½ΠΎ ΠΏΡΠΎΡΡΠ°Π²Π°Π»ΠΈ, Π΄Π°ΡΠΎΡΠ΅ΠΊΠ΅ ΠΌΠΈΡΠΈΡΡΡ-0-0.ΠΏΡΠ°ΠΏ ΠΈ ΠΌΠΈΡΠΈΡΡΡ-1-0.ΠΏΡΠ°ΠΏ - Π½ΠΎΠ²Π΅ ΠΏΡΠ°ΠΏ Π΄Π°ΡΠΎΡΠ΅ΠΊΠ΅ ΠΊΠΎΡΠ΅ ΡΠΌΠΎ ΡΠΏΡΠ°Π²ΠΎ Π³Π΅Π½Π΅ΡΠΈΡΠ°Π»ΠΈ.
Π§ΠΈΡΠ°ΡΠ΅ ΠΈΠ·Π»Π°Π·Π° ΠΏΠΎΠΌΠΎΡΡ ΡΡΠΏΠ΄ΡΠΌΠΏ
ΠΠ° ΡΠ°Π΄Π°, Π½Π°ΡΠ»Π°ΠΊΡΠΈ Π½Π°ΡΠΈΠ½ Π΄Π° Π²ΠΈΠ΄ΠΈΡΠ΅ ΠΏΡΠ°ΠΏ Π΄Π°ΡΠΎΡΠ΅ΠΊΠ΅ ΡΠ΅ Π΄Π° ΠΊΠΎΡΠΈΡΡΠΈΡΠ΅ ΡΡΠΏΠ΄ΡΠΌΠΏ.
$ 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
ΠΠ° ΡΠΌΠ΅ΡΠ»ΠΈΡΡΡ ΠΌΠΈΡΠΈΡΡΡ-0-0.ΠΏΡΠ°ΠΏ (ΠΊΠ»ΠΈΡΠ΅Π½ΡΡΠΊΠΈ ΡΡΠ΅ΡΠ°Ρ) ΠΌΠΎΠΆΠ΅ΡΠ΅ Π²ΠΈΠ΄Π΅ΡΠΈ Π΄Π° ΡΠ΅ Π΅Ρ ΠΎ ΠΏΠ°ΠΊΠ΅Ρ ΡΠ°ΡΠ΅ Π½Π°ΠΊΠΎΠ½ 2 ΡΠ΅ΠΊΡΠ½Π΄Π΅ ΡΠΈΠΌΡΠ»Π°ΡΠΈΡΠ΅. ΠΠΊΠΎ ΠΏΠΎΠ³Π»Π΅Π΄Π°ΡΠ΅ Π΄ΡΡΠ³Ρ Π΄Π΅ΠΏΠΎΠ½ΠΈΡΡ (ΠΌΠΈΡΠΈΡΡΡ-1-0.ΠΏΡΠ°ΠΏ), Π²ΠΈΠ΄Π΅ΡΠ΅ΡΠ΅ Π΄Π° ΡΠ΅ ΠΏΠ°ΠΊΠ΅Ρ ΠΏΡΠΈΠΌΡΠ΅Π½ Π½Π° 2,257324 ΡΠ΅ΠΊΡΠ½Π΄ΠΈ. ΠΠΈΠ΄Π΅ΡΠ΅ΡΠ΅ Ρ Π΄ΡΡΠ³ΠΎΠΌ Π΄ΡΠΌΠΏΡ Π΄Π° ΡΠ΅ ΠΏΠ°ΠΊΠ΅Ρ Π²ΡΠ°ΡΠ΅Π½ Ρ 2.257324 ΡΠ΅ΠΊΡΠ½Π΄ΠΈ, ΠΈ ΠΊΠΎΠ½Π°ΡΠ½ΠΎ Π΄Π° ΡΠ΅ ΠΏΠ°ΠΊΠ΅Ρ ΠΏΡΠΈΠΌΠΈΠΎ Π½Π°Π·Π°Π΄ ΠΎΠ΄ ΡΡΡΠ°Π½Π΅ ΠΊΠ»ΠΈΡΠ΅Π½ΡΠ° Ρ ΠΏΡΠ²ΠΎΠΌ Π΄ΡΠΌΠΏΡ Ρ 2.514648 ΡΠ΅ΠΊΡΠ½Π΄ΠΈ.
Π§ΠΈΡΠ°ΡΠ΅ ΠΈΠ·Π»Π°Π·Π° ΡΠ° ΠΠΈΡΠ΅ΡΡ Π°ΡΠΊΠΎΠΌ
ΠΠΊΠΎ Π½ΠΈΡΡΠ΅ ΡΠΏΠΎΠ·Π½Π°ΡΠΈ ΡΠ° ΠΠΈΡΠ΅ΡΡ
Π°ΡΠΊ, ΠΏΠΎΡΡΠΎΡΠΈ Π²Π΅Π± Π»ΠΎΠΊΠ°ΡΠΈΡΠ° ΡΠ° ΠΊΠΎΡΠ΅ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΡΠ΅ΡΠ·Π΅ΡΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠ΅ ΠΈ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡΡ:
ΠΠ·Π²ΠΎΡ: Π²Π²Π².Ρ Π°Π±Ρ.ΡΠΎΠΌ