Π”ΠΈΠΏΠ»ΠΎΠΌΡ‹, курсовыС, Ρ€Π΅Ρ„Π΅Ρ€Π°Ρ‚Ρ‹, ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½Ρ‹Π΅...
Брочная ΠΏΠΎΠΌΠΎΡ‰ΡŒ Π² ΡƒΡ‡Ρ‘Π±Π΅

БистСма дистанционного обучСния Ρ€Π°Π±ΠΎΡ‚Π΅ Π½Π° ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π΅

ΠšΡƒΡ€ΡΠΎΠ²Π°ΡΠŸΠΎΠΌΠΎΡ‰ΡŒ Π² Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΠΈΠ£Π·Π½Π°Ρ‚ΡŒ ΡΡ‚ΠΎΠΈΠΌΠΎΡΡ‚ΡŒΠΌΠΎΠ΅ΠΉ Ρ€Π°Π±ΠΎΡ‚Ρ‹

ΠŸΠ΅Ρ€Π΅Π΄Π°Ρ‡Π° изобраТСния экрана ΠžΡ‚ΠΏΡ€Π°Π²ΠΊΠ° ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ экрана происходит ΠΏΠΎ Ρ‚Π°ΠΉΠΌΠ΅Ρ€Ρƒ. Π Π°Π·ΠΌΠ΅Ρ€ изобраТСния экрана с Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ΠΌ 800×600 ΠΈ 32 Π±ΠΈΡ‚Π° памяти Π½Π° ΠΏΠΈΠΊΡΠ΅Π»ΡŒ ΠΎΠΊΠΎΠ»ΠΎ 2 ΠΌΠ΅Π³Π°Π±Π°ΠΉΡ‚, Ρ‡Ρ‚ΠΎ Π½Π΅ΠΏΡ€ΠΈΠ΅ΠΌΠ»Π΅ΠΌΠΎ, Ρ‚.ΠΊ. врСмя ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠΈ изобраТСния ТСстко ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΎ условиями поставлСнной Π·Π°Π΄Π°Ρ‡ΠΈ. Но 32 Π±ΠΈΡ‚Π° Π½Π° ΠΏΠΈΠΊΡΠ΅Π»ΡŒ вовсС Π½Π΅ ΡΠ²Π»ΡΠ΅Ρ‚ся Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΡΡ‚ΡŒΡŽ для Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°, поэтому Π² Π΄Π°Π½Π½ΠΎΠΌ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π΅ осущСствляСтся… Π§ΠΈΡ‚Π°Ρ‚ΡŒ Π΅Ρ‰Ρ‘ >

БистСма дистанционного обучСния Ρ€Π°Π±ΠΎΡ‚Π΅ Π½Π° ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π΅ (Ρ€Π΅Ρ„Π΅Ρ€Π°Ρ‚, курсовая, Π΄ΠΈΠΏΠ»ΠΎΠΌ, ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½Π°Ρ)

Π‘ΠΎΠ΄Π΅Ρ€ΠΆΠ°Π½ΠΈΠ΅ Π’Π²Π΅Π΄Π΅Π½ΠΈΠ΅.

1. АналитичСский Ρ€Π°Π·Π΄Π΅Π».

1.1 АрхитСктура Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΉ TCP/IP.

1.2 ОписаниС Windows Sockets.

2. ΠšΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ‚ΠΎΡ€ΡΠΊΠΈΠΉ Ρ€Π°Π·Π΄Π΅Π».

2.1 Π€ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Π°Ρ схСма ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ комплСкса.

2.2 Π˜Π½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΡ ΠΈ Ρ€Π°Π±ΠΎΡ‚Π° сокСт-сСрвСра.

2.3 Π˜Π½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΡ ΠΈ Ρ€Π°Π±ΠΎΡ‚Π° сокСт-ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°.

2.4 ΠŸΠ΅Ρ€Π΅Π΄Π°Ρ‡Π° Π΄Π°Π½Π½Ρ‹Ρ….

2.5 Π£ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΌΡ‹ΡˆΡŒΡŽ ΠΈ ΠΊΠ»Π°Π²ΠΈΠ°Ρ‚ΡƒΡ€ΠΎΠΉ.

2.6 ΠŸΠ΅Ρ€Π΅Π΄Π°Ρ‡Π° изобраТСния экрана.

3. ВСхнологичСский Ρ€Π°Π·Π΄Π΅Π».

3.1 Π’Ρ‹Π±ΠΎΡ€ срСдств Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ.

3.2 Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹.

3.3 БистСмныС трСбования.

3.4 Π˜Π½Ρ‚Π΅Ρ€Ρ„Π΅ΠΉΡ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ.

3.5 Руководство ΠΏΠΎ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΊΠ΅.

3.6 Руководство администратора.

3.7 Руководство ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ.

3.7.1 Руководство прСподаватСля.

3.7.2 Руководство ΡƒΡ‡Π΅Π½ΠΈΠΊΠ°.

4. Π­ΠΊΡΠΏΠ΅Ρ€ΠΈΠΌΠ΅Π½Ρ‚Π°Π»ΡŒΠ½Ρ‹ΠΉ Ρ€Π°Π·Π΄Π΅Π».

4.1 Π‘ΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ Π΄Π°Π½Π½Ρ‹Ρ….

4.2 Π‘ΠΆΠ°Ρ‚ΠΈΠ΅ изобраТСния Π—Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅.

Π’Π²Π΅Π΄Π΅Π½ΠΈΠ΅

Π’ Π½Π°ΡΡ‚оящСС врСмя ΠΏΠ΅Ρ€ΡΠΎΠ½Π°Π»ΡŒΠ½Ρ‹Π΅ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Ρ‹ (Π΄Π°Π»Π΅Π΅ ПК), Π° Ρ‚Π°ΠΊΠΆΠ΅ всСвозмоТныС сСтСвыС соСдинСния ΠŸΠš становятся Π½Π΅ΠΎΡ‚ΡŠΠ΅ΠΌΠ»Π΅ΠΌΠΎΠΉ Ρ‡Π°ΡΡ‚ΡŒΡŽ ΠΆΠΈΠ·Π½ΠΈ людСй. ΠŸΡ€ΠΎΡ†Π΅ΡΡ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€ΠΈΠ·Π°Ρ†ΠΈΠΈ Ρ‚ΠΎΠ»ΠΊΠ°Π΅Ρ‚ людСй, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Ρ€Π°Π½ΡŒΡˆΠ΅ Π½Π΅ Π½ΡƒΠΆΠ΄Π°Π»ΠΈΡΡŒ Π² ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ПК, ΠΊ Π²ΠΎΠ²Π»Π΅Ρ‡Π΅Π½ΠΈΡŽ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π° Π² ΡΠ²ΠΎΡŽ Ρ€Π°Π±ΠΎΡ‚Ρƒ ΠΈ ΠΎΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΡŽ досуга. Бтановится, практичСски, Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹ΠΌ Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚Π°ΠΊΠΈΠ΅ соврСмСнныС срСдства ΠΊΠΎΠΌΠΌΡƒΠ½ΠΈΠΊΠ°Ρ†ΠΈΠΈ, ΠΊΠ°ΠΊ элСктронная ΠΏΠΎΡ‡Ρ‚Π°, ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ для общСния Ρ‡Π΅Ρ€Π΅Π· ΡΠ΅Ρ‚ΡŒ ΠΈΠ½Ρ‚Π΅Ρ€Π½Π΅Ρ‚ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ICQ, Miranda), факс ΠΈ ΠΌΠ½ΠΎΠ³ΠΈΠ΅ Π΄Ρ€ΡƒΠ³ΠΈΠ΅.

Π‘ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹Π΅ систСмы стрСмятся ΠΊ ΠΈΠ½Ρ‚ΡƒΠΈΡ‚ΠΈΠ²Π½ΠΎΠΉ ΠΎΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΠΈ управлСния. Под ΠΈΠ½Ρ‚ΡƒΠΈΡ‚ΠΈΠ²Π½ΠΎΠΉ ΠΎΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΠ΅ΠΉ управлСния подразумСваСтся Π±ΠΎΠ»Π΅Π΅ простоС ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ с Ρ‚ΠΎΡ‡ΠΊΠΈ зрСния ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ, Π½ΠΎ, ΠΊΠ°ΠΊ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ, Ρ‡Π΅ΠΌ ΠΏΡ€ΠΎΡ‰Π΅ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ для ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ, Ρ‚Π΅ΠΌ слоТнСС организация ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ с Ρ‚ΠΎΡ‡ΠΊΠΈ зрСния программиста, ΠΈ Ρ‚Π΅ΠΌ большС рСсурсов ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π° потрСбляСт ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°. Π’ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, ΠΊΠΎΠ³Π΄Π°-Π½ΠΈΠ±ΡƒΠ΄ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹Π΅ систСмы станут Π½Π°ΡΡ‚ΠΎΠ»ΡŒΠΊΠΎ просты, Ρ‡Ρ‚ΠΎ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΠΎ Π²ΡΡ‚Ρ€ΠΎΠ΅Π½Π½Ρ‹ΠΌ ΠΎΠ±ΡƒΡ‡Π°ΡŽΡ‰ΠΈΠΌ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°ΠΌ ΠΈ ΡΠΏΡ€Π°Π²ΠΊΠ΅ смоТСт ΠΎΡΠ²ΠΎΠΈΡ‚ΡŒ ΠΈΡ…, Π½ΠΎ Π½Π° ΡΠ΅Π³ΠΎΠ΄Π½ΡΡˆΠ½ΠΈΠΉ дСнь это Π½Π΅ Ρ‚Π°ΠΊ. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ вопрос ΠΎΠ± ΠΎΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΠΈ обучСния ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π½Ρ‹ΠΌ тСхнологиям вСсьма Π°ΠΊΡ‚ΡƒΠ°Π»Π΅Π½. Π§Ρ‚ΠΎΠ±Ρ‹ Π½Π°ΡƒΡ‡ΠΈΡ‚ΡŒΡΡ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π½Π° ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π΅ (подразумСваСтся просто использованиС ПК, Π½Π΅ ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ для Ρ€Π°Π±ΠΎΡ‚Ρ‹) Π½ΡƒΠΆΠ½ΠΎ всС Π½Π°Π²Ρ‹ΠΊΠΈ ΠΎΡΠ²Π°ΠΈΠ²Π°Ρ‚ΡŒ Π½Π° ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ΅. Π‘ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π½Ρ‹Ρ… курсов Π½Π΅ ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‚ ΡΡ‚ΠΎΠ»ΡŒΠΊΠΎ практичСских занятий, сколько Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ для ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎΠ³ΠΎ освоСния Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π½Π° ΠŸΠš. ΠšΠΎΠ½Π΅Ρ‡Π½ΠΎ, Ссли Π²ΠΎΠΎΡ€ΡƒΠΆΠΈΡ‚ΡŒΡΡ справочной Π»ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΡƒΡ€ΠΎΠΉ ΠΈ Π΄ΠΎΠ»Π³ΠΎ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠΎΠ²Π°Ρ‚ΡŒΡΡ, Ρ‚ΠΎ Π»ΡŽΠ±ΠΎΠΉ Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊ Ρ€Π°Π½ΠΎ ΠΈΠ»ΠΈ ΠΏΠΎΠ·Π΄Π½ΠΎ научится Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π½Π° ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π΅. Π£ ΠΌΠΎΠ»ΠΎΠ΄ΠΎΠ³ΠΎ поколСния Ρ‚Π°ΠΊΠΈΡ… ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ, практичСски, Π½Π΅Ρ‚, ΡƒΠΆΠ΅ Ρ€ΠΎΠ΄ΠΈΠ²ΡˆΠΈΠ΅ΡΡ Π² ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π½ΡƒΡŽ эру, ΠΎΠ½ΠΈ с Π΄Π΅Ρ‚ства Π²ΠΏΠΈΡ‚Π°Π»ΠΈ Π² ΡΠ΅Π±Ρ Π»ΠΎΠ³ΠΈΠΊΡƒ управлСния ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ. Но ΡΡ‚Π°Ρ€ΡˆΠ΅ΠΌΡƒ поколСнию это даСтся Π½Π°ΠΌΠ½ΠΎΠ³ΠΎ слоТнСС, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ ΠΎΠ½ΠΈ Π²ΠΎΡΠΏΠΈΡ‚Ρ‹Π²Π°Π»ΠΈΡΡŒ ΠΈ Π²Ρ‹Ρ€ΠΎΡΠ»ΠΈ Π² Π΄Ρ€ΡƒΠ³ΠΎΠ΅ врСмя, ΠΈ ΡΠ΅ΠΉΡ‡Π°Ρ, ΠΊΠΎΠ³Π΄Π° ΠΏΡ€ΠΎΠΈΠ·ΠΎΡˆΠ΅Π» ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΎΠ½Π½Ρ‹ΠΉ Π²Π·Ρ€Ρ‹Π², ΠΎΠ½ΠΈ с Ρ‚Ρ€ΡƒΠ΄ΠΎΠΌ Π°Π΄Π°ΠΏΡ‚ΠΈΡ€ΡƒΡŽΡ‚ΡΡ ΠΊ Π½ΠΎΠ²Ρ‹ΠΌ тСхнологиям. Из-Π·Π° внСдрСния ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π½Ρ‹Ρ… Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΉ ΠΌΠ½ΠΎΠ³ΠΈΠ΅ Ρ…ΠΎΡ€ΠΎΡˆΠΈΠ΅ спСциалисты оказались Π½Π΅ Π½ΡƒΠΆΠ½Ρ‹, ΠΎΠ½ΠΈ Π½Π΅ ΡΠΌΠΎΠ³Π»ΠΈ ΠΎΡΠ²ΠΎΠΈΡ‚ΡŒ Π½ΠΎΠ²Ρ‹Π΅ Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ Ρ€Π°Π±ΠΎΡ‚Ρ‹. Они, ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎ, Π½Π΅ ΠΎΡΡ‚Π°Π»ΠΈΡΡŒ Π±Π΅Π· Ρ€Π°Π±ΠΎΡ‚Ρ‹, Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ ΠΈΠ· Π½ΠΈΡ… смСнило ΠΏΡ€ΠΎΡ„Π΅ΡΡΠΈΡŽ, Π° ΠΊΡ‚ΠΎ-Ρ‚ΠΎ, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ просто с ΠΌΠ΅Π½ΡŒΡˆΠ΅ΠΉ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒΡŽ, Ρ‡Π΅ΠΌ, Ссли Π±Ρ‹ ΠΎΠ½ Ρ€Π°Π±ΠΎΡ‚Π°Π», ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Π½ΠΎΠ²Ρ‹Π΅ Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ.

Намного дСшСвлС ΠΎΡ€Π³Π°Π½ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠ±ΡƒΡ‡Π΅Π½ΠΈΠ΅ Ρ‡Π΅Ρ€Π΅Π· ΡΠ΅Ρ‚ΡŒ, Ρ‡Π΅ΠΌ ΡƒΡΡ‚Ρ€Π°ΠΈΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π½Ρ‹Π΅ курсы. МногиС люди Π½Π΅ Π² ΡΠΎΡΡ‚ояниС ΡƒΠ΄Π΅Π»ΡΡ‚ΡŒ ΠΌΠ½ΠΎΠ³ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ ΠΎΠ±ΡƒΡ‡Π΅Π½ΠΈΡŽ ΠΈΠ»ΠΈ ΠΏΠ»Π°Ρ‚ΠΈΡ‚ΡŒ большиС дСньги Π·Π° ΠΊΡƒΡ€ΡΡ‹. Но Π΅ΡΠ»ΠΈ ΠΎΡ€Π³Π°Π½ΠΈΠ·ΠΎΠ²Ρ‹Π²Π°Ρ‚ΡŒ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π½Ρ‹ΠΉ класс, Ρ‚ΠΎ Π½Π°Π΄ΠΎ ΠΏΠΎΠΊΡƒΠΏΠ°Ρ‚ΡŒ Π΄ΠΎΡ€ΠΎΠ³ΠΎΠ΅ ΠΎΠ±ΠΎΡ€ΡƒΠ΄ΠΎΠ²Π°Π½ΠΈΠ΅, ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π½Ρ‹Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, Π½Π°Π½ΠΈΠΌΠ°Ρ‚ΡŒ спСциалистов для Π΅Π³ΠΎ настройки, ΠΈ, СстСствСнно, Ρ†Π΅Π½Ρ‹ Π·Π° ΠΎΠ±ΡƒΡ‡Π΅Π½ΠΈΠ΅ Π±ΡƒΠ΄ΡƒΡ‚ соотвСтствСнными. Но Π΅ΡΠ»ΠΈ ΠΏΠΎΠ΄ΡƒΠΌΠ°Ρ‚ΡŒ ΠΎ ΡΠ΅Ρ‚Π΅Π²ΠΎΠΌ ΠΎΠ±ΡƒΡ‡Π΅Π½ΠΈΠ΅, Ρ‚ΠΎ ΡΡΠ½ΠΎ, Ρ‡Ρ‚ΠΎ всС ΠΎΠ±ΠΎΡ€ΡƒΠ΄ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈ Π΅Π³ΠΎ настройка Π±ΡƒΠ΄ΡƒΡ‚ ΠΎΠΏΠ»Π°Ρ‡ΠΈΠ²Π°Ρ‚ΡŒΡΡ ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΎΠΌ, ΠΈ ΡΡ‚ΠΎΡ‚ Ρ„Π°ΠΊΡ‚ Π½Π° ΠΏΠΎΡ€ΡΠ΄ΠΎΠΊ сниТаСт ΡΡ‚ΠΎΠΈΠΌΠΎΡΡ‚ΡŒ самих курсов. ΠŸΡ€Π΅ΠΏΠΎΠ΄Π°Π²Π°Ρ‚Π΅Π»ΡŒ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΠ±ΡŠΡΡΠ½ΠΈΡ‚ΡŒ Ρ‚Π΅ΠΌΡƒ ΠΏΠΎ Π˜Π½Ρ‚Π΅Ρ€Π½Π΅Ρ‚Ρƒ ΠΈΠ»ΠΈ просто Ρ€Π°Π·ΠΎΡΠ»Π°Ρ‚ΡŒ Π»Π΅ΠΊΡ†ΠΈΠΈ ΠΈ Π·Π°Π΄Π°Π½ΠΈΠ΅ ΠΏΠΎ Π½ΠΈΠΌ ΠΈ Π² ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ΅ ΠΎΠ³ΠΎΠ²ΠΎΡ€Π΅Π½Π½ΠΎΠ΅ врСмя ΠΎΡ‚Π²Π΅Ρ‡Π°Ρ‚ΡŒ Π½Π° Π²ΠΎΠΏΡ€ΠΎΡΡ‹ ΠΏΠΎ Π»Π΅ΠΊΡ†ΠΈΡΠΌ ΠΈ Π·Π°Π΄Π°Π½ΠΈΡΠΌ, Π½ΠΎ Π½Π° Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ вопросы слоТно ΠΈΠ»ΠΈ Π΄ΠΎΠ»Π³ΠΎ ΠΎΡ‚Π²Π΅Ρ‡Π°Ρ‚ΡŒ словами, ΠΏΠΎ ΡΡ‚ΠΈΠΌ ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π°ΠΌ ΠΈ Π±Ρ‹Π» Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½ Π΄Π°Π½Π½Ρ‹ΠΉ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚.

Π’ Π΄Π°Π½Π½ΠΎΠΌ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π΅ Ρ€Π΅ΡˆΠ°Π΅Ρ‚ΡΡ ΠΏΠΎΠ΄Π·Π°Π΄Π°Ρ‡Π° дистанционного обучСния Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π½Π° ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π΅. Π’ΠΎ Π΅ΡΡ‚ΡŒ ΠΏΡ€Π΅ΠΏΠΎΠ΄Π°Π²Π°Ρ‚Π΅Π»ΡŒ посрСдством ΡƒΠ΄Π°Π»Π΅Π½Π½ΠΎΠ³ΠΎ управлСния ΠΏΡ€ΠΈ нСобходимости ΠΌΠΎΠΆΠ΅Ρ‚ наглядно ΠΏΡ€ΠΎΠ΄Π΅ΠΌΠΎΠ½ΡΡ‚Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΡƒΡ‡Π΅Π½ΠΈΠΊΡƒ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹. ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° осущСствляСт установлСниС связи ΠΌΠ΅ΠΆΠ΄Ρƒ двумя ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π°ΠΌΠΈ ΠΈ Π·Π°Ρ…Π²Π°Ρ‚ управлСния ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈΠ· Π½ΠΈΡ….

Π‘Ρ‚Π΅ΠΊ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»ΠΎΠ² TCP/IP Π΄Π°Π²Π½ΠΎ стал стандартом Π² ΡΠ΅Ρ‚Π΅Π²Ρ‹Ρ… тСхнологиях, ΠΎΠ½ ΡΠΎΠ΄Π΅Ρ€ΠΆΠΈΡ‚ самыС распространСнныС ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Ρ‹, поэтому Ссли ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° написана для Ρ€Π°Π±ΠΎΡ‚Ρ‹ срСдствами TCP/IP, Ρ‚ΠΎ, ΠΎΡ‡Π΅Π²ΠΈΠ΄Π½ΠΎ, ΠΎΠ½Π° смоТСт Π½Π°ΠΉΡ‚ΠΈ ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅, практичСски, Π²Π΅Π·Π΄Π΅. ИмСнно ΠΏΠΎ ΡΡ‚ΠΈΠΌ ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π°ΠΌ Π΄Π°Π½Π½Ρ‹ΠΉ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ ΠΈ Π±Ρ‹Π» Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½ для Ρ€Π°Π±ΠΎΡ‚Ρ‹ Ρ‡Π΅Ρ€Π΅Π· стСк TCP/IP.

ΠžΡΠ½ΠΎΠ²Π½Ρ‹Π΅ трСбования ΠΊ ΡΠΈΡΡ‚Π΅ΠΌΠ΅:

1. НастроСнная ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π½Π°Ρ ΡΠ΅Ρ‚ΡŒ.

2. Π”Π²Π° ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π° Ρ‡Π΅Ρ€Π΅Π· сСтСвыС ΠΊΠ°Ρ€Ρ‚Ρ‹ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½Ρ‹ ΠΊ ΡΠ΅Ρ‚ΠΈ.

3. ОБ Ρ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΎΠΉ Windows sockets 1.1 ΠΈ Π²Ρ‹ΡˆΠ΅.

4. ΠšΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Ρ‹ (ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹Π΅ трСбования: Pentium3 800 Mhz, 64 Mb RAM).

1. АналитичСский Ρ€Π°Π·Π΄Π΅Π».

1.1 АрхитСктура Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΉ TCP/IP.

ΠŸΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Ρ‹ сСтСвого взаимодСйствия TCP/IP ΡΠ²Π»ΡΡŽΡ‚ΡΡ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠΌ ΡΠ²ΠΎΠ»ΡŽΡ†ΠΈΠΎΠ½Π½ΠΎΠ³ΠΎ развития ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»ΠΎΠ² глобальной Π²Ρ‹Ρ‡ΠΈΡΠ»ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ сСти ARPANET. Π Π°Π±ΠΎΡ‚Ρ‹ ΠΏΠΎ ΡΠΎΠ·Π΄Π°Π½ΠΈΡŽ сСти ARPANET Π±Ρ‹Π»ΠΈ Π½Π°Ρ‡Π°Ρ‚Ρ‹ рядом унивСрситСтов БША ΠΈ Ρ„ΠΈΡ€ΠΌΠΎΠΉ BBN Π² 1968 Π³. Π’ 1971 Π³. ΡΠ΅Ρ‚ΡŒ Π±Ρ‹Π»Π° Π²Π²Π΅Π΄Π΅Π½Π° Π² Ρ€Π΅Π³ΡƒΠ»ΡΡ€Π½ΡƒΡŽ ΡΠΊΡΠΏΠ»ΡƒΠ°Ρ‚Π°Ρ†ΠΈΡŽ ΠΈ ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΠ²Π°Π»Π° для всСх своих ΡƒΠ·Π»ΠΎΠ² Ρ‚Ρ€ΠΈ основныС услуги:

1. ΠΈΠ½Ρ‚Π΅Ρ€Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹ΠΉ Π²Ρ…ΠΎΠ΄ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ Π½Π° ΡƒΠ΄Π°Π»Π΅Π½Π½Ρ‹ΠΉ ΡƒΠ·Π΅Π»;

2. ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡Π° Ρ„Π°ΠΉΠ»ΠΎΠ² ΠΌΠ΅ΠΆΠ΄Ρƒ ΡƒΠ·Π»Π°ΠΌΠΈ сСти;

3. элСктронная ΠΏΠΎΡ‡Ρ‚Π°.

ВсС эти срСдства Π±Π°Π·ΠΈΡ€ΠΎΠ²Π°Π»ΠΈΡΡŒ Π½Π° Ρ‚ранспортных услугах прСдоставляСмых ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΎΠΉ управлСния сСти NCP (Network Control Program), Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΡŽΡ‰Π΅ΠΉ свой Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠΉ Π½Π°Π±ΠΎΡ€ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»ΠΎΠ². НакоплСнный ΠΊ 1974 Π³. ΠΎΠΏΡ‹Ρ‚ эксплуатации сСти ARPANET выявил ΠΌΠ½ΠΎΠ³ΠΈΠ΅ нСдостатки ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»ΠΎΠ² NCP ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΠ» ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ основныС трСбования ΠΊ Π½ΠΎΠ²ΠΎΠΌΡƒ Π½Π°Π±ΠΎΡ€Ρƒ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»ΠΎΠ², ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ²ΡˆΠ΅ΠΌΡƒ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ TCP/IP:

1. Π½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ‚ΡŒ ΠΎΡ‚ ΡΡ€Π΅Π΄Ρ‹ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ сообщСний;

2. Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ ΠΊ ΡΠ΅Ρ‚ΠΈ Π­Π’Πœ любой Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρ‹;

3. Π΅Π΄ΠΈΠ½Ρ‹ΠΉ способ ΠΎΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΠΈ соСдинСния ΠΌΠ΅ΠΆΠ΄Ρƒ ΡƒΠ·Π»Π°ΠΌΠΈ Π² ΡΠ΅Ρ‚ΠΈ;

4. стандартизация ΠΏΡ€ΠΈΠΊΠ»Π°Π΄Π½Ρ‹Ρ… ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»ΠΎΠ².

Π¨ΠΈΡ€ΠΎΠΊΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΠ°Ρ Π½Ρ‹Π½Π΅ вСрсия 4 ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»ΠΎΠ² TCP/IP Π±Ρ‹Π»Π° стандартизирована Π² 1981 Π³. Π² Π²ΠΈΠ΄Π΅ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ², Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΡ‹Ρ… RFC (Request For Comment). ΠŸΠΎΠ»Π½Ρ‹ΠΉ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ сСти ARPANET Π½Π° Π½ΠΎΠ²Ρ‹Π΅ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Ρ‹ Π±Ρ‹Π» Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ Π² 1982 Π³. Π­Ρ‚Π° ΡΠ΅Ρ‚ΡŒ сыграла Ρ€ΠΎΠ»ΡŒ «Π·Π°Ρ€ΠΎΠ΄Ρ‹ΡˆΠ°» всСмирной сСти Internet, построСнной Π½Π° Π±Π°Π·Π΅ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»ΠΎΠ² TCP/IP. РСализация ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»ΠΎΠ² TCP/IP оказалась Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΡƒΠ΄Π°Ρ‡Π½ΠΎΠΉ Π² Π²Π΅Ρ€ΡΠΈΡΡ… BSD4.2 ΠΈ BSD4.3 ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ систСмы UNIX. Π­Ρ‚Π° рСализация являСтся эталоном (стандартом «de facto») для всСх ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ….

Π’ 1984 Π³. ΠΌΠ΅ΠΆΠ΄ΡƒΠ½Π°Ρ€ΠΎΠ΄Π½Π°Ρ ΡΡ‚Π°Π½Π΄Π°Ρ€Ρ‚ΠΈΠ·ΠΈΡ€ΡƒΡŽΡ‰Π°Ρ организация ISO ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠΈΠ»Π° модСль взаимодСйствия ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹Ρ… систСм OSI (Open System Interconnection), ΡΠ²Π»ΡΡŽΡ‰ΡƒΡŽΡΡ ΡƒΠ΄ΠΎΠ±Π½Ρ‹ΠΌ срСдством описания стСков ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»ΠΎΠ².

На Ρ‚Π°Π±Π». 1.1 прСдставлСно ΡΠΎΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠ΅ Ρ‡Π΅Ρ‚Ρ‹Ρ€Π΅Ρ…ΡƒΡ€ΠΎΠ²Π½Π΅Π²ΠΎΠΉ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρ‹ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»ΠΎΠ² TCP/IP ΠΈ ΡΠ΅ΠΌΠΈΡƒΡ€ΠΎΠ²Π½Π΅Π²ΠΎΠΉ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρ‹ OSI.

Π’Π°Π±Π». 1.1.

Π£Ρ€ΠΎΠ²Π½ΠΈ OSI/ISO.

Π£Ρ€ΠΎΠ²Π½ΠΈ TCP/IP.

ΠŸΡ€ΠΈΠΊΠ»Π°Π΄Π½ΠΎΠΉ.

ΠŸΡ€ΠΈΠΊΠ»Π°Π΄Π½ΠΎΠΉ.

(Application).

ΠŸΡ€Π΅Π΄ΡΡ‚Π°Π²ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΈΠΉ.

БСансовый.

Вранспортный.

Вранспортный (Transmission).

Π‘Π΅Ρ‚Π΅Π²ΠΎΠΉ.

ΠœΠ΅ΠΆΡΠ΅Ρ‚Π΅Π²ΠΎΠΉ (Internetwork).

ΠšΠ°Π½Π°Π»ΡŒΠ½Ρ‹ΠΉ.

Π‘Π΅Ρ‚Π΅Π²ΠΎΠΉ.

(Network).

ЀизичСский.

ОбъСдинСниС канального ΠΈ Ρ„изичСского ΡƒΡ€ΠΎΠ²Π½Π΅ΠΉ ΠΌΠΎΠ΄Π΅Π»ΠΈ OSI Π² Π΅Π΄ΠΈΠ½Ρ‹ΠΉ сСтСвой ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ TCP/IP Π±Ρ‹Π»ΠΎ обусловлСно Ρ‚Ρ€Π΅Π±ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ нСзависимости ΠΎΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΠΎΠΉ срСды ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ Π΄Π°Π½Π½Ρ‹Ρ…. Π”Π΅Π»ΠΎ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»ΠΎΠ² канального ΠΈ Ρ„изичСского ΡƒΡ€ΠΎΠ²Π½Π΅ΠΉ Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΡŽΡ‚ΡΡ Π² Π½Π°ΡΡ‚оящСС врСмя, ΠΊΠ°ΠΊ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ, Π΅Π΄ΠΈΠ½Ρ‹ΠΌΠΈ тСхничСскими срСдствами (сСтСвыми ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Π°ΠΌΠΈ).

Богласно Ρ‚Π΅Ρ€ΠΌΠΈΠ½ΠΎΠ»ΠΎΠ³ΠΈΠΈ TCP/IP элСмСнты сСтСвого уровня Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ΡΡ подсСтями (subnetworks). ИдСология TCP/IP допускаСт, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π² ΠΊΠ°Ρ‡Π΅ΡΡ‚Π²Π΅ «ΠΏΠΎΠ΄ΡΠ΅Ρ‚Π΅ΠΉ» выступали Ρ€Π΅Π°Π»ΡŒΠ½Ρ‹Π΅ сСти с ΠΈΡ… ΡΠΎΠ±ΡΡ‚Π²Π΅Π½Π½Ρ‹ΠΌΠΈ стСками ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»ΠΎΠ², ΡƒΠ·Π»Π°ΠΌΠΈ, шлюзами ΠΈ Ρ‚. ΠΏ.

2. АрхитСктура ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»ΠΎΠ² TCP/IP.

На Ρ‚Π°Π±Π». 2.1 прСдставлСна Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π° основных ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»ΠΎΠ² TCP/IP, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Ρ… Π½Π° Ρ‚Ρ€Π΅Ρ… Π½ΠΈΠΆΠ½ΠΈΡ… уровнях стСка.

Π’Π°Π±Π». 1.2.

Вранспортный ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ.

TCP, UDP.

ΠœΠ΅ΠΆΡΠ΅Ρ‚Π΅Π²ΠΎΠΉ ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ.

IP, ICMP.

Π‘Π΅Ρ‚Π΅Π²ΠΎΠΉ ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ.

Ethernet, X.25, Token Ring.

ΠšΡ€Π°Π΅ΡƒΠ³ΠΎΠ»ΡŒΠ½Ρ‹ΠΌ ΠΊΠ°ΠΌΠ½Π΅ΠΌ всСй Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρ‹ являСтся мСТсСтСвой ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ» IP (Internet Protocol). Π‘ Π΅Π³ΠΎ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ рСализуСтся адрСсация ΡƒΠ·Π»ΠΎΠ² сСти ΠΈ Π΄ΠΎΡΡ‚Π°Π²ΠΊΠ° Π΄Π°Π½Π½Ρ‹Ρ…. ΠœΠ΅ΠΆΡΠ΅Ρ‚Π΅Π²ΠΎΠΉ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ» ΡƒΠΏΡ€Π°Π²Π»ΡΡŽΡ‰ΠΈΡ… сообщСний ICMP (Internet Control MessageProtocol) ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½ для ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ диагностичСской ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΈ ΡΠΎΠΎΠ±Ρ‰Π΅Π½ΠΈΠΉ ΠΎΠ± ΠΎΡˆΠΈΠ±ΠΊΠ°Ρ… Π² Ρ€Π°Π±ΠΎΡ‚Π΅ сСти. ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅. ΠŸΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ» ICMP отнСсСн ΠΊ ΠΌΠ΅ΠΆΡΠ΅Ρ‚Π΅Π²ΠΎΠΌΡƒ ΡƒΡ€ΠΎΠ²Π½ΡŽ условно, Ρ‚.ΠΊ., с ΠΎΠ΄Π½ΠΎΠΉ стороны, ΠΎΠ½ ΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ся возмоТностями ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Π° IP для транспортировки собствСнных Π΄Π°Π½Π½Ρ‹Ρ…, Π½ΠΎ, с Π΄Ρ€ΡƒΠ³ΠΎΠΉ стороны, сам для транспортировки Π΄Π°Π½Π½Ρ‹Ρ… ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ Π½Π΅ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΠ΅Ρ‚ся. Двумя основными ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Π°ΠΌΠΈ транспортного уровня ΡΠ²Π»ΡΡŽΡ‚ΡΡ Π½Π°Π΄Π΅ΠΆΠ½Ρ‹ΠΉ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ» управлСния ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡Π΅ΠΉ Π΄Π°Π½Π½Ρ‹Ρ… TCP (Transmission Control Protocol) ΠΈ Π±Ρ‹ΡΡ‚Ρ€Ρ‹ΠΉ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ» Π΄Π΅ΠΉΡ‚Π°Π³Ρ€Π°ΠΌΠΌ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ UDP (User Datagram Protocol). TCP Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΠ΅Ρ‚ сСтСвоС взаимодСйствиС Π² Ρ€Π΅ΠΆΠΈΠΌΠ΅ с ΡƒΡΡ‚Π°Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ΠΌ логичСского (Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ) соСдинСния, Π° UDP — Π±Π΅Π· ΠΎΠ½ΠΎΠ³ΠΎ. Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Π° Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΡŽΡ‚ΡΡ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ обСспСчСния (ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ входящСй Π² ΡΠΎΡΡ‚Π°Π² ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ систСмы), ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ Π±ΡƒΠ΄Π΅ΠΌ Π½Π°Π·Ρ‹Π²Π°Ρ‚ΡŒ ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΌ.

ВзаимодСйствиС ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ сосСдних ΡƒΡ€ΠΎΠ²Π½Π΅ΠΉ осущСствляСтся Ρ‡Π΅Ρ€Π΅Π· стандартизированный интСрфСйс, ΠΈΠΌΠ΅ΡŽΡ‰ΠΈΠΉ, ΠΊΠ°ΠΊ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ, ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π½Ρ‹ΠΉ Ρ…Π°Ρ€Π°ΠΊΡ‚Π΅Ρ€. На ΠΊΠ°ΠΆΠ΄ΠΎΠΌ ΡƒΡ€ΠΎΠ²Π½Π΅ стСка ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»ΠΎΠ² TCP/IP ΠΎΠ±ΠΌΠ΅Π½ Π΄Π°Π½Π½Ρ‹ΠΌΠΈ вСдСтся Π±Π»ΠΎΠΊΠ°ΠΌΠΈ Π΄Π°Π½Π½Ρ‹Ρ… ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎΠΉ Π΄Π»ΠΈΠ½Ρ‹. К ΡΠΎΠΆΠ°Π»Π΅Π½ΠΈΡŽ, отсутствуСт ΡƒΡΡ‚ΠΎΡΠ²ΡˆΠ°ΡΡΡ тСрминология Π² ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡Π΅Π½ΠΈΠΈ этих Π±Π»ΠΎΠΊΠΎΠ². Π’ Π΄Π°Π½Π½ΠΎΠΉ Π ΠŸΠ— названия Π±Π»ΠΎΠΊΠΎΠ² Π΄Π°Π½Π½Ρ‹Ρ… зависят ΠΎΡ‚ ΡƒΡ€ΠΎΠ²Π½Ρ стСка ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»ΠΎΠ², ΠΊΠ°ΠΊ это ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π½ΠΈΠΆΠ΅.

Π’Π°Π±Π». 1.3.

Π£Ρ€ΠΎΠ²Π΅Π½ΡŒ.

НазваниС Π±Π»ΠΎΠΊΠΎΠ² Π΄Π°Π½Π½Ρ‹Ρ….

Вранспортный.

ΠŸΠ°ΠΊΠ΅Ρ‚.

ΠœΠ΅ΠΆΡΠ΅Ρ‚Π΅Π²ΠΎΠΉ.

Π‘Π΅Π³ΠΌΠ΅Π½Ρ‚.

Π‘Π΅Ρ‚Π΅Π²ΠΎΠΉ.

ΠšΠ°Π΄Ρ€

ΠœΠ΅ΠΆΡΠ΅Ρ‚Π΅Π²ΠΎΠΉ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ» IP спСцифицирован Π² RFC 791. Π•Π³ΠΎ основныС характСристики пСрСчислСны Π½ΠΈΠΆΠ΅:

1. Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΠ΅Ρ‚ ΠΎΠ±ΠΌΠ΅Π½ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΏΠ°ΠΊΠ΅Ρ‚Π°ΠΌΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π±ΡƒΠ΄Π΅ΠΌ Π½Π°Π·Ρ‹Π²Π°Ρ‚ΡŒ IP-сСгмСнтами (ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΉ Ρ€Π°Π·ΠΌΠ΅Ρ€ IP-сСгмСнта — 65 535 Π±Π°ΠΉΡ‚);

2. являСтся ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»ΠΎΠΌ взаимодСйствия Π±Π΅Π· установлСния логичСского соСдинСния;

3. для адрСсации ΡƒΠ·Π»ΠΎΠ² сСти ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ адрСс Π΄Π»ΠΈΠ½ΠΎΠΉ 4 Π±Π°ΠΉΡ‚Π°;

4. обСспСчиваСт Π² ΡΠ»ΡƒΡ‡Π°Π΅ нСобходимости Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΡŽ IP-сСгмСнтов;

5. IP-сСгмСнты ΠΈΠΌΠ΅ΡŽΡ‚ ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎΠ΅ врСмя ΠΆΠΈΠ·Π½ΠΈ Π² ΡΠ΅Ρ‚ΠΈ;

6. Π½Π΅ Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€ΡƒΠ΅Ρ‚ Π½Π°Π΄Π΅ΠΆΠ½ΠΎΡΡ‚ΡŒ доставки IP-сСгмСнтов адрСсату;

7. Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ‚ срСдств управлСния ΠΈΠ½Ρ‚Π΅Π½ΡΠΈΠ²Π½ΠΎΡΡ‚ΡŒΡŽ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ IP-сСгмСнтов ΠΏΠΎΡΡ‹Π»Π°ΡŽΡ‰Π΅ΠΉ стороной (flow control);

8. Π½Π΅ Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€ΡƒΠ΅Ρ‚ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΡƒΡŽ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ IP-сСгмСнтов Π½Π° ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°ΡŽΡ‰Π΅ΠΉ сторонС.

ΠŸΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ» управлСния ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡Π΅ΠΉ TCP (Transmission Control Protocol) являСтся ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»ΠΎΠΌ транспортного уровня ΠΈ Π±Π°Π·ΠΈΡ€ΡƒΠ΅Ρ‚ся Π½Π° Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ях, прСдоставляСмых мСТсСтСвым ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»ΠΎΠΌ IP. Основная Π·Π°Π΄Π°Ρ‡Π° TCP — обСспСчСниС Π½Π°Π΄Π΅ΠΆΠ½ΠΎΠΉ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ Π΄Π°Π½Π½Ρ‹Ρ… Π² ΡΠ΅Ρ‚ΠΈ. Π•Π³ΠΎ транспортный адрСс Π² Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠ΅ IP-сСгмСнта Ρ€Π°Π²Π΅Π½ 6. ОписаниС ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Π° TCP Π΄Π°Π½ΠΎ Π² RFC 793.

Π•Π³ΠΎ основныС характСристики пСрСчислСны Π½ΠΈΠΆΠ΅:

1. Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΠ΅Ρ‚ взаимодСйствиС Π² Ρ€Π΅ΠΆΠΈΠΌΠ΅ с ΡƒΡΡ‚Π°Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ΠΌ логичСского (Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ) соСдинСния;

3. обСспСчиваСт Π΄Π²ΡƒΠ½Π°ΠΏΡ€Π°Π²Π»Π΅Π½Π½ΡƒΡŽ Π΄ΡƒΠΏΠ»Π΅ΠΊΡΠ½ΡƒΡŽ связь;

4. ΠΎΡ€Π³Π°Π½ΠΈΠ·ΡƒΠ΅Ρ‚ ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ²Ρ‹ΠΉ (с Ρ‚ΠΎΡ‡ΠΊΠΈ зрСния ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ) Ρ‚ΠΈΠΏ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ Π΄Π°Π½Π½Ρ‹Ρ…;

5. Π΄Π°Π΅Ρ‚ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ пСрСсылки части Π΄Π°Π½Π½Ρ‹Ρ…, ΠΊΠ°ΠΊ «ΡΠΊΡΡ‚Ρ€Π΅Π½Π½Ρ‹Ρ…» ;

6. для ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ ΠΏΠ°Ρ€Ρ‚Π½Π΅Ρ€ΠΎΠ² ΠΏΠΎ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡ‚Π²ΠΈΡŽ Π½Π° Ρ‚ранспортном ΡƒΡ€ΠΎΠ²Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ 16-Π±ΠΈΡ‚ΠΎΠ²Ρ‹Π΅ «Π½ΠΎΠΌΠ΅Ρ€Π° ΠΏΠΎΡ€Ρ‚ΠΎΠ²» ;

7. Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΠ΅Ρ‚ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏ «ΡΠΊΠΎΠ»ΡŒΠ·ΡΡ‰Π΅Π³ΠΎ ΠΎΠΊΠ½Π°» (sliding window) для ΠΏΠΎΠ²Ρ‹ΡˆΠ΅Π½ΠΈΡ скорости ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ;

8. ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ ряд ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠΎΠ² для обСспСчСния Π½Π°Π΄Π΅ΠΆΠ½ΠΎΠΉ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ Π΄Π°Π½Π½Ρ‹Ρ….

НСсмотря Π½Π° Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ для ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡Π° Π΄Π°Π½Π½Ρ‹Ρ… с ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Π° TCP выглядит ΠΊΠ°ΠΊ потоковая, Π½Π° ΡΠ°ΠΌΠΎΠΌ ΠΆΠ΅ Π΄Π΅Π»Π΅ ΠΎΠ±ΠΌΠ΅Π½ ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΏΠ°Ρ€Ρ‚Π½Π΅Ρ€Π°ΠΌΠΈ осущСствляСтся посрСдством ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ² Π΄Π°Π½Π½Ρ‹Ρ…, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΡ‹ Π±ΡƒΠ΄Π΅ΠΌ Π½Π°Π·Ρ‹Π²Π°Ρ‚ΡŒ.

ΠŸΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ» Π΄Π΅ΠΉΡ‚Π°Π³Ρ€Π°ΠΌΠΌ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ UDP (User Datagram Protocol) являСтся ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»ΠΎΠΌ транспортного уровня ΠΈ Π±Π°Π·ΠΈΡ€ΡƒΠ΅Ρ‚ся Π½Π° Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ях, прСдоставляСмых мСТсСтСвым ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»ΠΎΠΌ IP. Основная Π·Π°Π΄Π°Ρ‡Π° UDP — обСспСчСниС «Π±Ρ‹ΡΡ‚Ρ€ΠΎΠΉ» ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ Π΄Π°Π½Π½Ρ‹Ρ… Π² ΡΠ΅Ρ‚ΠΈ. Π•Π³ΠΎ транспортный адрСс Π² Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠ΅ IP-сСгмСнта Ρ€Π°Π²Π΅Π½ 17. ОписаниС ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Π° UDP Π΄Π°Π½ΠΎ Π² RFC 768.

Π•Π³ΠΎ основныС характСристики пСрСчислСны Π½ΠΈΠΆΠ΅:

1. Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΠ΅Ρ‚ взаимодСйствиС Π² Ρ€Π΅ΠΆΠΈΠΌΠ΅ Π±Π΅Π· установлСния логичСского (Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ) соСдинСния;

3. ΠΎΡ€Π³Π°Π½ΠΈΠ·ΡƒΠ΅Ρ‚ ΠΏΠΎΠ±Π»ΠΎΡ‡Π½Ρ‹ΠΉ (Π΄Π΅ΠΉΡ‚Π°Π³Ρ€Π°ΠΌΠ½Ρ‹ΠΉ, ΠΏΠ°ΠΊΠ΅Ρ‚Π½Ρ‹ΠΉ) Ρ‚ΠΈΠΏ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ Π΄Π°Π½Π½Ρ‹Ρ…;

4. для ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ ΠΏΠ°Ρ€Ρ‚Π½Π΅Ρ€ΠΎΠ² ΠΏΠΎ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡ‚Π²ΠΈΡŽ Π½Π° Ρ‚ранспортном ΡƒΡ€ΠΎΠ²Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ 16-Π±ΠΈΡ‚ΠΎΠ²Ρ‹Π΅ «Π½ΠΎΠΌΠ΅Ρ€Π° ΠΏΠΎΡ€Ρ‚ΠΎΠ²» ;

6. Π½Π΅ Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€ΡƒΠ΅Ρ‚ Π½Π°Π΄Π΅ΠΆΠ½ΠΎΠΉ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ Π΄Π°Π½Π½Ρ‹Ρ… (Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Π° ΠΊΠ°ΠΊ потСря UDP-ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ², Ρ‚Π°ΠΊ ΠΈ ΠΈΡ… Π΄ΡƒΠ±Π»ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅);

7. Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ‚ срСдств увСдомлСния источника UDP-ΠΏΠ°ΠΊΠ΅Ρ‚Π° ΠΎ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΡΡ‚ΠΈ/ΠΎΡˆΠΈΠ±ΠΎΡ‡Π½ΠΎΡΡ‚ΠΈ Π² Π΅Π³ΠΎ ΠΏΡ€ΠΈΠ΅ΠΌΠ΅ адрСсатом;

8. Π½Π΅ ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΠ²Π°Π΅Ρ‚ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹ΠΉ порядок доставки UDP-ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ² ΠΎΡ‚ ΠΈΡΡ‚ΠΎΡ‡Π½ΠΈΠΊΠ° ΠΊ ΠΏΡ€ΠΈΠ΅ΠΌΠ½ΠΈΠΊΡƒ;

9. ΠΌΠΎΠΆΠ΅Ρ‚ Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ†Π΅Π»ΠΎΡΡ‚Π½ΠΎΡΡ‚ΡŒ Π΄Π°Π½Π½Ρ‹Ρ… Π² UDP-ΠΏΠ°ΠΊΠ΅Ρ‚Π΅ Π·Π° ΡΡ‡Π΅Ρ‚ использования ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½ΠΎΠΉ суммы;

10. ΠΎΡ‡Π΅Π½ΡŒ прост (особСнно, ΠΏΠΎ ΡΡ€Π°Π²Π½Π΅Π½ΠΈΡŽ с ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»ΠΎΠΌ TCP).

Π‘Π»Π΅Π΄ΡƒΠ΅Ρ‚ ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ, ΠΏΠΎ ΡΡƒΡ‚ΠΈ Π΄Π΅Π»Π°, ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ» транспортного уровня UDP ΠΈΠ³Ρ€Π°Π΅Ρ‚ Ρ€ΠΎΠ»ΡŒ интСрфСйса для ΠΏΡ€ΠΈΠΊΠ»Π°Π΄Π½Ρ‹Ρ… ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ ΠΊ ΡΡ€Π΅Π΄ΡΡ‚Π²Π°ΠΌ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Π° мСТсСтСвого уровня.

Π’ Π΄Π°Π½Π½ΠΎΠΌ курсовом ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ» TCP Ρ‚Π°ΠΊ, ΠΊΠ°ΠΊ ΠΎΠ½ ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΠ²Π°Π΅Ρ‚ Π½Π°Π΄Π΅ΠΆΠ½ΡƒΡŽ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡Ρƒ Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ Π΄Π²ΡƒΠ½Π°ΠΏΡ€Π°Π²Π»Π΅Π½Π½ΡƒΡŽ Π΄ΡƒΠΏΠ»Π΅ΠΊΡΠ½ΡƒΡŽ связь.

1.2 ОписаниС Windows Sockets.

Для программирования установлСния соСдинСния ΠΈ ΠΎΠ±ΠΌΠ΅Π½Π° Π΄Π°Π½Π½Ρ‹ΠΌΠΈ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΉ TCP/IP Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΡƒΠ΄ΠΎΠ±Π½Ρ‹ΠΌ являСтся ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π° OS Windows — Windows Sockets (Π΄Π°Π»Π΅Π΅ WS). WS — это Π½ΠΈΠ·ΠΊΠΎΡƒΡ€ΠΎΠ²Π½Π΅Π²Ρ‹ΠΉ API, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΠΈΠΉ программисту ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ Π² OS Windows прилоТСния, Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‰ΠΈΠ΅ ΠΊΠ°ΠΊ с ΠΏΡ€ΠΎΠ²ΠΎΠ΄Π½Ρ‹ΠΌΠΈ, Ρ‚Π°ΠΊ ΠΈ Π±Π΅ΡΠΏΡ€ΠΎΠ²ΠΎΠ΄Π½Ρ‹ΠΌΠΈ сСтями. (4) WS ΡΠ½Π°Π±ΠΆΠ°ΡŽΡ‚ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² ΡƒΠ΄ΠΎΠ±Π½Ρ‹ΠΌ интСрфСйсом для ΠΎΠ±ΠΌΠ΅Π½Π° Π΄Π°Π½Π½Ρ‹ΠΌΠΈ ΠΌΠ΅ΠΆΠ΄Ρƒ ΡƒΠ΄Π°Π»Π΅Π½Π½Ρ‹ΠΌΠΈ устройствами. ΠΠ΅ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½Π° ΡƒΠ΄Π°Π»Π΅Π½Π½ΠΎΠΌ устройствС Π±Ρ‹Π»Π° установлСна OS Windows — Π³Π»Π°Π²Π½ΠΎΠ΅, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π΅Π³ΠΎ OS ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π»Π° сокСты.

АрхитСктура WS прСдставлСна Π½Π° Π ΠΈΡ. 1.1.

Рис. 1.1 АрхитСктура WS (источник — www.msdn.microsoft.com).

Из Π΄Π°Π½Π½ΠΎΠΉ схСмы Π²ΠΈΠ΄Π½ΠΎ, Ρ‡Ρ‚ΠΎ Π² WS сущСствуСт Π΄Π²Π° Π²ΠΈΠ΄Π° сСрвиса — Transport ΠΈ Name Space. ΠŸΡ€ΠΈΠΌΠ΅Ρ€Π°ΠΌΠΈ обСспСчСния Transport service ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ стСки — TCP/IP, Bluetooth ΠΈ.Ρ‚.Π΄., ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΠ²Π°ΡŽΡ‚ ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΡƒΡŽ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡Ρƒ Π΄Π°Π½Π½Ρ‹Ρ… с ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… сСтСвых ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»ΠΎΠ². ΠŸΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠΌ Name Space service provider ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠ»ΡƒΠΆΠΈΡ‚ΡŒ интСрфСйс Domain Naming System (DNS), ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΠΈΠΉ Π·Π°Π΄Π°Π²Π°Ρ‚ΡŒ ΡΠΈΠΌΠ²ΠΎΠ»ΡŒΠ½Ρ‹Π΅ ΠΈΠΌΠ΅Π½Π° ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π°ΠΌ Π² ΡΠ΅Ρ‚ΠΈ.

Π‘ΠΎΠΊΠ΅Ρ‚ — это модСль ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ½Ρ†Π° соСдинСния, со Π²ΡΠ΅ΠΌΠΈ присущими Π΅ΠΌΡƒ свойствами ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°ΠΌΠΈ. По ΡΡƒΡ‚ΠΈ, это ΠΏΡ€ΠΈΠΊΠ»Π°Π΄Π½ΠΎΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹ΠΉ интСрфСйс, входящий Π² ΡΠΎΡΡ‚Π°Π² ΠΌΠ½ΠΎΠ³ΠΈΡ… ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹Ρ… систСм (ОБ) ΠΈ ΠΏΡ€ΠΈΠ·Π²Π°Π½Π½Ρ‹ΠΉ для ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ сСтСвых возмоТностСй ΠžΠ‘. Π’ ΡΡ‚Π°Π½Π΄Π°Ρ€Ρ‚Π΅ структуры ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»ΠΎΠ² сСмиуровнСвой ΠΌΠΎΠ΄Π΅Π»ΠΈ OSI-сокСты Π»Π΅ΠΆΠ°Ρ‚ Π½Π° Ρ‚Π°ΠΊ Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΠΎΠΌ транспортном ΡƒΡ€ΠΎΠ²Π½Π΅. Π’ Windows ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° сокСтов Π²ΠΊΠ»ΡŽΡ‡Π΅Π½Π° начиная с Π²Π΅Ρ€ΡΠΈΠΈ 3.11.

ΠŸΡ€ΠΈΠΊΠ»Π°Π΄Π½ΠΎΠΉ интСрфСйс Windows Sockets состоит ΠΈΠ· DLL Ws232.dll, которая обСспСчиваСт прилоТСниям доступ ΠΊ Winsock-функциям (см. Ρ€ΠΈΡ. 1.2). Ws232.dll Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ сСрвисы пространства ΠΈΠΌΠ΅Π½ ΠΈ ΠΏΡ€ΠΎΠ²Π°ΠΉΠ΄Π΅Ρ€ΠΎΠ² сСрвисов транспорта для выполнСния ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ ΠΏΠΎ Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΡŽ ΠΈΠΌΠ΅Π½ ΠΈ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ сообщСний. Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° Msafd. dll дСйствуСт ΠΊΠ°ΠΊ ΠΏΡ€ΠΎΠ²Π°ΠΉΠ΄Π΅Ρ€ сСрвисов транспорта. Msafd. dll ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ-ΠΏΠΎΠΌΠΎΡ‰Π½ΠΈΠΊΠΈ для Winsock (ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΡΠ²Π»ΡΡŽΡ‚ΡΡ спСцифичными для ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»ΠΎΠ²), для взаимодСйствия с Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€Π°ΠΌΠΈ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»ΠΎΠ² уровня ядра. НапримСр, Wshtcpip. dll являСтся ΠΏΠΎΠΌΠΎΡ‰Π½ΠΈΠΊΠΎΠΌ для ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Π° TCP/IP, Π° Wshnetbs. dll — для ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Π° NetBEUI. Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° Mswsock. dll Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΠ΅Ρ‚ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½Π½ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ Microsoft Winsock.

ΠŸΡ€ΠΎΠ²Π°ΠΉΠ΄Π΅Ρ€ сСтСвого транспорта Msafddll ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ сСрвисы Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€Π° Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΉ систСмы AFD. sys (Ancillary Function driver, AFD) для Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ сокСтов. AFD являСтся TDI-ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΎΠΌ ΠΈ ΠΈΡΠΏΠΎΠ»Π½ΡΠ΅Ρ‚ сСтСвыС ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ с ΡΠΎΠΊΠ΅Ρ‚Π°ΠΌΠΈ, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ посылка ΠΈ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠ΅ сообщСний, ΠΏΡƒΡ‚Π΅ΠΌ ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠΈ запросов TDI IRP Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€Π°ΠΌ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»ΠΎΠ². AFD Π½Π΅ Π·Π°ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ для использования ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Ρ… Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€ΠΎΠ² ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»ΠΎΠ², поэтому Msafd. dll ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠΈΡ€ΡƒΠ΅Ρ‚ AFD ΠΎΠ± ΠΈΠΌΠ΅Π½ΠΈ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Π°, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΠΎΠ³ΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΌ сокСтом, Ρ‚Π°ΠΊ Ρ‡Ρ‚ΠΎΠ±Ρ‹ AFD ΠΌΠΎΠ³ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚-устройство, ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‰Π΅Π΅ этот ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ».

Рис. 1.2 схСма интСрфСйса WS (источник-Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° русифицированной Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ www.hardline.ru).

2. ΠšΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ‚ΠΎΡ€ΡΠΊΠΈΠΉ Ρ€Π°Π·Π΄Π΅Π».

2.1 Π€ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Π°Ρ схСма ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ комплСкса Π’Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ Π±ΡƒΠ΄ΡƒΡ‚ ΠΏΡ€Π΅ΠΏΠΎΠ΄Π°Π²Π°Ρ‚Π΅Π»ΡŒ ΠΈ ΡƒΡ‡Π΅Π½ΠΈΠΊ, поэтому ΠΏΠ΅Ρ€Π΅Π΄ распрСдСлСниСм Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΈΡ… ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π°ΠΌΠΈ Π½ΡƒΠΆΠ½ΠΎ ΠΊΠ°ΠΊ слСдуСт Ρ€Π°Π·ΠΎΠ±Ρ€Π°Ρ‚ΡŒΡΡ Π² ΠΈΡ… Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡ‚Π²ΠΈΠΈ. Для этого ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π° схСма взаимодСйствия прСподаватСля ΠΈ ΡƒΡ‡Π΅Π½ΠΈΠΊΠ° (Рис. 2.1).

Рис. 2.1 Π‘Ρ…Π΅ΠΌΠ° взаимодСйствия прСподаватСля ΠΈ ΡƒΡ‡Π΅Π½ΠΈΠΊΠ° Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΊΠΎΠ³Π΄Π° ясны Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΈ ΠΏΠΎΡ€ΡΠ΄ΠΎΠΊ дСйствий ΡƒΡ‡Π΅Π½ΠΈΠΊΠ° ΠΈ ΠΏΡ€Π΅ΠΏΠΎΠ΄Π°Π²Π°Ρ‚Сля ΠΌΠΎΠΆΠ½ΠΎ Π΄ΡƒΠΌΠ°Ρ‚ΡŒ Π½Π°Π΄ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹ΠΌ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ΠΌ Π·Π°Π΄Π°Ρ‡ΠΈ.

Для Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ поставлСнной Π·Π°Π΄Π°Ρ‡ΠΈ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ комплСкс ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ обСспСчСния, состоящий ΠΈΠ· Π΄Π²ΡƒΡ… ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ — сСрвСрного ΠΈ ΠΊΠ»ΠΈΠ΅Π½Ρ‚ского.

Рис. 2.2 Π€ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Π°Ρ схСма ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ комплСкса ΠŸΠ΅Ρ€Π²ΠΎΠ½Π°Ρ‡Π°Π»ΡŒΠ½Ρ‹ΠΌ этапом Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ комплСкса ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ Π±Ρ‹Π»ΠΎ составлСниС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΠΉ схСмы, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ распрСдСлСниС ΠΌΠ΅ΠΆΠ΄Ρƒ двумя прилоТСниями основных Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ‚ Ρ€Π΅ΡˆΠΈΡ‚ΡŒ ΠΏΠΎΡΡ‚Π°Π²Π»Π΅Π½Π½ΡƒΡŽ Π·Π°Π΄Π°Ρ‡Ρƒ. Π€ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Π°Ρ схСма Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ комплСкса прСдставлСна Π½Π° Π ΠΈΡ. 2.2. Из ΡΡ…Π΅ΠΌΡ‹ слСдуСт, Ρ‡Ρ‚ΠΎ Π³Π»Π°Π²Π½Ρ‹ΠΌΠΈ функциями сСрвСрного прилоТСния ΡΠ²Π»ΡΡŽΡ‚ΡΡ ΠΎΠΆΠΈΠ΄Π°Π½ΠΈΠ΅ соСдинСния, Ρ„ΠΎΡ€ΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈ ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠ° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅-ΠΊΠ»ΠΈΠ΅Π½Ρ‚Ρƒ ΠΊΠΎΠΌΠ°Π½Π΄ для управлСния ΠΌΡ‹ΡˆΡŒΡŽ ΠΈ ΠΊΠ»Π°Π²ΠΈΠ°Ρ‚ΡƒΡ€ΠΎΠΉ, ΠΏΡ€ΠΈΠ΅ΠΌ изобраТСния экрана ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π° ΠΈ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Π΅Π³ΠΎ Π² ΠΎΠΊΠ½Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ сСрвСра. ΠžΡΠ½ΠΎΠ²Π½Ρ‹ΠΌΠΈ функциями ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π° ΡΠ²Π»ΡΡŽΡ‚ΡΡ: ΠΏΡ€ΠΈΠ΅ΠΌ ΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° ΠΊΠΎΠΌΠ°Π½Π΄ ΠΎΡ‚ ΡΠ΅Ρ€Π²Π΅Ρ€Π°, ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠ° изобраТСния экрана сСрвСру.

2.2 Π˜Π½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΡ ΠΈ Ρ€Π°Π±ΠΎΡ‚Π° сокСт-сСрвСра Π’ ΠΏΡƒΠ½ΠΊΡ‚Π΅ 1.2 Π±Ρ‹Π»ΠΎ освСщСно ΠΎΠ±Ρ‰Π΅Π΅ устройство WS. Для создания комплСкса ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ, Ρ€Π΅ΡˆΠ°ΡŽΡ‰Π΅Π³ΠΎ Π·Π°Π΄Π°Ρ‡ΠΈ установлСния соСдинСния ΠΈ ΠΎΠ±ΠΌΠ΅Π½Π° Π΄Π°Π½Π½Ρ‹ΠΌΠΈ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Π΄Π°Π½Π½ΠΎΠΉ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ OS Windows Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ взаимодСйствия Π΄Π²ΡƒΡ… ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ — сСрвСрного ΠΈ ΠΊΠ»ΠΈΠ΅Π½Ρ‚ского. По Π²Ρ‹ΠΏΠΎΠ»Π½ΡΠ΅ΠΌΡ‹ΠΌ дСйствиям ΠΏΠΎ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΊΠΈ соСдинСния ΠΊΠ»ΠΈΠ΅Π½Ρ‚ ΠΈ ΡΠ΅Ρ€Π²Π΅Ρ€ ΠΎΡ‚Π»ΠΈΡ‡Π°ΡŽΡ‚ΡΡ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‚Π΅ΠΌ, Ρ‡Ρ‚ΠΎ сСрвСр ΠΎΠΆΠΈΠ΄Π°Π΅Ρ‚ соСдинСниС, Π° ΠΊΠ»ΠΈΠ΅Π½Ρ‚ устанавливаСт соСдинСниС.

Π‘Ρ…Π΅ΠΌΠ° Ρ€Π°Π±ΠΎΡ‚Ρ‹ сСрвСра ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½Π° Π½Π° Ρ€ΠΈΡΡƒΠ½ΠΊΠ΅ 2.3.

Рис. 2.3 Π‘Ρ…Π΅ΠΌΠ° Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹-сСрвСра Для Ρ‚ΠΎΠ³ΠΎ Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ WS (Π° Ρ‚ΠΎΡ‡Π½Π΅Π΅, ws232.dll), Π² ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π²Ρ‹Π·Π²Π°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ:

int WSAStartup (WORD Ошибка! НСдопустимый ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ гипСрссылки., LPWSADATA Ошибка! НСдопустимый ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ гипСрссылки.);

ΠŸΠ΅Ρ€Π²Ρ‹ΠΉ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ — вСрсия WS, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΠ°Ρ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌ. Π’Ρ‚ΠΎΡ€ΠΎΠΉ — структура, содСрТащая ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ WS, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€: максимальноС количСство сокСтов (игнорируСтся, начиная с WS 2.0), послСдняя доступная вСрсия WS, общая информация ΠΎ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ WS, доступной Π½Π° Π΄Π°Π½Π½ΠΎΠΉ ΠŸΠ­Π’Πœ. Ѐункция Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ноль Π² ΡΠ»ΡƒΡ‡Π°Π΅ успСха, Π° Π² ΡΠ»ΡƒΡ‡Π°Π΅ Π½Π΅ΡƒΠ΄Π°Ρ‡ΠΈ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°ΡŽΡ‚ΡΡ ΠΊΠΎΠ΄Ρ‹ ошибок:

WSASYSNOTREADY — физичСскиС сСтСвыС устройства Π½Π΅ Π³ΠΎΡ‚ΠΎΠ²Ρ‹ ΠΊ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Π½ΠΈΡŽ.

WSAVERNOTSUPPORTED — Π·Π°ΠΏΡ€ΠΎΡˆΠ΅Π½Π½Π°Ρ вСрсия WS Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ся.

WSAEINPROGRESS — для вСрсий 1.1 ΠΈ ΠΌΠ»Π°Π΄ΡˆΠ΅ — Π·Π°ΠΏΡƒΡ‰Π΅Π½ Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΎΡ‡Π½Ρ‹ΠΉ процСсс.

WSAEPROCLIM — ΠΏΡ€Π΅Π²Ρ‹ΡˆΠ΅Π½ Π»ΠΈΠΌΠΈΡ‚ количСства Π·Π°Π΄Π°Ρ‡, выполняСмых WS-систСмой.

WSAEFAULT — Π²Ρ‚ΠΎΡ€ΠΎΠΉ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ являСтся Π½Π΅ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹ΠΌ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΌ ПослС Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ использования ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ WS Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π²Ρ‹Π·Ρ‹Π²Π°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ:

int WSACleanup (void);

Данная функция отмСняСт использованиС ws232.dll Π΄Π°Π½Π½Ρ‹ΠΌ процСссом. Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ноль Π² ΡΠ»ΡƒΡ‡Π°Π΅ успСха, Π° Π² ΡΠ»ΡƒΡ‡Π°Π΅ ошибки Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°ΡŽΡ‚ΡΡ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ ΠΊΠΎΠ΄Ρ‹:

WSANOTINITIALISED — Π½Π΅ Π±Ρ‹Π»Π° Π²Ρ‹Π·Π²Π°Π½Π° ΠΈ ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½Π° WSAStartup.

WSAENETDOWN — сбой Π² Ρ€Π°Π±ΠΎΡ‚Π΅ сСти.

WSAEINPROGRESS — для вСрсий 1.1 ΠΈ ΠΌΠ»Π°Π΄ΡˆΠ΅ — Π·Π°ΠΏΡƒΡ‰Π΅Π½ Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΎΡ‡Π½Ρ‹ΠΉ процСсс ПослС ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎΠ³ΠΎ Π²Ρ‹Π·ΠΎΠ²Π° WSAStartup ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΈΡΡ‚ΡƒΠΏΠ°Ρ‚ΡŒ ΠΊ ΡΠΎΠ·Π΄Π°Π½ΠΈΡŽ сокСта ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ:

SOCKET socket (int Ошибка! НСдопустимый ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ гипСрссылки., int Ошибка! НСдопустимый ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ гипСрссылки., int Ошибка! НСдопустимый ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ гипСрссылки.);

ΠŸΠ΅Ρ€Π²Ρ‹ΠΉ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ — Ρ‚ΠΈΠΏ адрСса. Для создания TCP/IP-сокСта Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ AF_INET.

Π’Ρ‚ΠΎΡ€ΠΎΠΉ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ — Ρ‚ΠΈΠΏ сокСта. БущСствуСт Π΄Π²Π° Ρ‚ΠΈΠΏΠ° сокСтов — SOCK_STREAM (Π½Π°Π΄Π΅ΠΆΠ½Ρ‹Π΅, упорядочСнныС, полнодуплСксныС ΠΏΠΎΡ‚ΠΎΠΊΠΈ Π±Π°ΠΉΡ‚ΠΎΠ² Π² Ρ€Π΅ΠΆΠΈΠΌΠ΅ с ΡƒΡΡ‚Π°Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ΠΌ соСдинСния) ΠΈ SOCK_DGRAM (ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡Π° Π΄Π°Π½Π½Ρ‹Ρ… Π² Π²ΠΈΠ΄Π΅ Π΄Π΅ΠΉΡ‚Π°Π³Ρ€Π°ΠΌΠΌ Π² Ρ€Π΅ΠΆΠΈΠΌΠ΅ Π±Π΅Π· установлСния соСдинСния) Π’ Π΄Π°Π½Π½ΠΎΠΌ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ сокСты ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ°, Π² ΡΠΈΠ»Ρƒ удобства Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Π½ΠΈΠΌΠΈ ΠΈ Π½Π΅ΠΎΠ±Ρ…одимости Π² ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΈΠ²Π½ΠΎΠΌ ΠΎΠ±ΠΌΠ΅Π½Π΅ Π΄Π°Π½Π½Ρ‹ΠΌΠΈ.

Π’Ρ€Π΅Ρ‚ΠΈΠΉ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ — ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ», ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹ΠΉ для ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ Π΄Π°Π½Π½Ρ‹Ρ…, связанный с Ρ‚ΠΈΠΏΠΎΠΌ адрСса. Для стСка TCP/IP задаСтся Π½ΡƒΠ»Π΅Π²ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅.

Π’ ΡΠ»ΡƒΡ‡Π°Π΅ ΡƒΠ΄Π°Ρ‡Π½ΠΎΠ³ΠΎ выполнСния, функция Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ дСскриптор, ΠΎΠΏΠΈΡΡ‹Π²Π°ΡŽΡ‰ΠΈΠΉ созданный сокСт (Π½Π° ΡΠ°ΠΌΠΎΠΌ Π΄Π΅Π»Π΅ это ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° Ρ†Π΅Π»ΠΎΠ΅ число). Π˜Π½Π°Ρ‡Π΅ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°ΡŽΡ‚ΡΡ ΠΊΠΎΠ΄Ρ‹ ошибок, ΠΈΠ»ΠΈ дСскриптор, Ρ€Π°Π²Π½Ρ‹ΠΉ INVALID_SOCKET.

ΠŸΠ΅Ρ€Π΅Π΄ использованиСм Π²Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π·Π°Π΄Π°Ρ‚ΡŒ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ сокСта. Для этого Π½ΡƒΠΆΠ½ΠΎ ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²ΠΈΡ‚ΡŒ структуру Ρ‚ΠΈΠΏΠ° sockaddr_in, ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π½ΠΈΠΆΠ΅:

struct sockaddr_in.

{.

short sin_family;

u_short sin_port;

struct in_addr sin_addr;

char sin_zero[8];

};

typedef struct sockaddr_in SOCKADDR _IN;

typedef struct sockaddr_in *PSOCKADDR _IN;

typedef struct sockaddr_in FAR *LPSOCKADDR _IN;

ПолС sin_family опрСдСляСт Ρ‚ΠΈΠΏ адрСса. Π’Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π·Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Π² ΡΡ‚ΠΎ ΠΏΠΎΠ»Π΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ AF_INET, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ соотвСтствуСт Ρ‚ΠΈΠΏΡƒ адрСса, принятому Π² Internet:

srv_address.sin_family = AF_INET;

ПолС sin_port опрСдСляСт Π½ΠΎΠΌΠ΅Ρ€ ΠΏΠΎΡ€Ρ‚Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ для ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ Π΄Π°Π½Π½Ρ‹Ρ….

ΠŸΠΎΡ€Ρ‚ — это просто ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‰Π΅ΠΉ ΠΎΠ±ΠΌΠ΅Π½ Π½Π° ΡΠ΅Ρ‚ΠΈ. На ΠΎΠ΄Π½ΠΎΠΌ ΡƒΠ·Π»Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ нСсколько ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‰ΠΈΡ… Ρ€Π°Π·Π½Ρ‹Π΅ ΠΏΠΎΡ€Ρ‚Ρ‹.

ΠžΡΠΎΠ±Π΅Π½Π½ΠΎΡΡ‚ΡŒΡŽ поля sin_port являСтся использованиС Ρ‚Π°ΠΊ Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΠΎΠ³ΠΎ сСтСвого Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π° Π΄Π°Π½Π½Ρ‹Ρ…. Π­Ρ‚ΠΎΡ‚ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ отличаСтся ΠΎΡ‚ Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ принят Π² ΠΏΡ€ΠΎΡ†Π΅ΡΡΠΎΡ€Π°Ρ… с Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€ΠΎΠΉ Intel, Π° ΠΈΠΌΠ΅Π½Π½ΠΎ, младшиС Π±Π°ΠΉΡ‚Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ… хранятся ΠΏΠΎ ΠΌΠ»Π°Π΄ΡˆΠΈΠΌ адрСсам памяти.

Π£Π½ΠΈΠ²Π΅Ρ€ΡΠ°Π»ΡŒΠ½Ρ‹ΠΉ сСтСвой Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ Π΄Π°Π½Π½Ρ‹Ρ… ΡƒΠ΄ΠΎΠ±Π΅Π½ ΠΏΡ€ΠΈ ΠΎΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΠΈ Π³Π»ΠΎΠ±Π°Π»ΡŒΠ½Ρ‹Ρ… сСтСй, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ Π² ΡƒΠ·Π»Π°Ρ… Ρ‚Π°ΠΊΠΎΠΉ сСти ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Ρ‹ с Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΎΠΉ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€ΠΎΠΉ.

Для выполнСния ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠΉ ΠΈΠ· ΠΎΠ±Ρ‹Ρ‡Π½ΠΎΠ³ΠΎ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ Π² ΡΠ΅Ρ‚Π΅Π²ΠΎΠΉ ΠΈ ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎ Π² ΠΈΠ½Ρ‚СрфСйсС Windows Sockets прСдусмотрСн ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΉ Π½Π°Π±ΠΎΡ€ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ. Π’ Ρ‡Π°ΡΡ‚ности, для заполнСния поля sin_port Π½ΡƒΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ htons, Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‰ΡƒΡŽ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ 16-разрядных Π΄Π°Π½Π½Ρ‹Ρ… ΠΈΠ· Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π° Intel Π² ΡΠ΅Ρ‚Π΅Π²ΠΎΠΉ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚.

НиТС ΠΌΡ‹ ΠΏΠΎΠΊΠ°Π·Π°Π»ΠΈ, ΠΊΠ°ΠΊ инициализируСтся ΠΏΠΎΠ»Π΅ sin_port Π² ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ SERVER, описанном Π΄Π°Π»Π΅Π΅:

#define SERV_PORT 5000.

srv_address.sin_port = htons (SERV_PORT);

ВСрнСмся снова ΠΊ ΡΡ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π΅ sockaddr_in. ПолС sin_addr этой структуры прСдставляСт собой структуру in_addr:

struct in_addr.

{.

union.

{.

struct { u_char s_b1,s_b2,s_b3,s_b4; } S_un_b;

struct { u_short s_w1,s_w2; } S_un_w;

u_long S_addr;

} S_un;

};

#define s_addr S_un.S_addr.

#define s_host S_un.S_un_b.s_b2.

#define s_net S_un.S_un_b.s_b1.

#define s_imp S_un.S_un_w.s_w2.

#define s_impno S_un.S_un_b.s_b4.

#define s_lh S_un.S_un_b.s_b3.

ΠŸΡ€ΠΈ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ сокСта Π² ΡΡ‚ΠΎΠΉ структурС Π½ΡƒΠΆΠ½ΠΎ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ адрСс IP, с ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π΄Π°Π½Π½Ρ‹ΠΉ сокСт. Если сокСт Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с Π»ΡŽΠ±Ρ‹ΠΌ адрСсом (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π²Ρ‹ ΡΠΎΠ·Π΄Π°Π΅Ρ‚Π΅ сСрвСр, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±ΡƒΠ΄Π΅Ρ‚ доступСн ΠΈΠ· ΡƒΠ·Π»ΠΎΠ² с Π»ΡŽΠ±Ρ‹ΠΌ адрСсом), адрСс для сокСта ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

srv_address.sin_addr.s_addr = INADDR_ANY;

Π’ ΡΠ»ΡƒΡ‡Π°Π΅, Ссли сокСт Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΌ адрСсом IP (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅-ΠΊΠ»ΠΈΠ΅Π½Ρ‚, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠ±Ρ€Π°Ρ‰Π°Ρ‚ΡŒΡΡ ΠΊ ΡΠ΅Ρ€Π²Π΅Ρ€Ρƒ с ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹ΠΌ адрСсом IP), Π² ΡƒΠΊΠ°Π·Π°Π½Π½ΡƒΡŽ структуру Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π·Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Ρ€Π΅Π°Π»ΡŒΠ½Ρ‹ΠΉ адрСс.

Если извСстСн адрСс Π² Π²ΠΈΠ΄Π΅ Ρ‡Π΅Ρ‚Ρ‹Ρ€Π΅Ρ… дСсятичных чисСл, Ρ€Π°Π·Π΄Π΅Π»Π΅Π½Π½Ρ‹Ρ… Ρ‚ΠΎΡ‡ΠΊΠΎΠΉ (ΠΈΠΌΠ΅Π½Π½ΠΎ Ρ‚Π°ΠΊ Π΅Π³ΠΎ Π²Π²ΠΎΠ΄ΠΈΡ‚ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ), Ρ‚ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ ΠΏΠΎΠ»Π΅ адрСса ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ inet_addr:

dest_sin.sin_addr.s_addr = inet_addr («200.200.200.201»);

Π’ ΡΠ»ΡƒΡ‡Π°Π΅ ошибки функция Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ INADDR_NONE, Ρ‡Ρ‚ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ для ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ.

Π’ Π΄Π°Π½Π½ΠΎΠΌ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π΅ сСрвСр настраиваСтся Π½Π° ΠΎΠΆΠΈΠ΄Π°Π½ΠΈΠ΅ соСдинСния с Π»ΡŽΠ±ΠΎΠ³ΠΎ адрСса, Π° Π½Π° ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅-ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π΅ задаСтся Π΄ΠΎΠΌΠ΅Π½Π½ΠΎΠ΅ имя сСрвСра. Для прСобразования Π΄ΠΎΠΌΠ΅Π½Π½ΠΎΠ³ΠΎ ΠΈΠΌΠ΅Π½ΠΈ Π² Π°Π΄Ρ€Π΅Ρ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ функция gethostbyname, Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°ΡŽΡ‰Π°Ρ адрСс IP:

PHOSTENT phe;

phe = gethostbyname (server_name);

if (phe == NULL).

{.

closesocket (srv_socket);

MessageBox (NULL, «gethostbyname Error», «Error», MB_OK);

return;

}.

memcpy ((char FAR *)&(dest_sin.sin_addr),.

phe->h_addr, phe->h_length);

Π’ ΡΠ»ΡƒΡ‡Π°Π΅ ошибки функция gethostbyname Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ NULL. ΠŸΡ€ΠΈ этом ΠΏΡ€ΠΈΡ‡ΠΈΠ½Ρƒ ошибки ΠΌΠΎΠΆΠ½ΠΎ Π²Ρ‹ΡΡΠ½ΠΈΡ‚ΡŒ, ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΠ² ΠΊΠΎΠ΄ Π²ΠΎΠ·Π²Ρ€Π°Ρ‚Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ WSAGetLastError.

Если ΠΆΠ΅ ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹ΠΉ ΡƒΠ·Π΅Π» Π½Π°ΠΉΠ΄Π΅Π½ Π² Π±Π°Π·Π΅ DNS ΠΈΠ»ΠΈ Π² Ρ„Π°ΠΉΠ»Π΅ HOSTS, функция gethostbyname Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° ΡΡ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Ρƒ hostent, ΠΎΠΏΠΈΡΠ°Π½Π½ΡƒΡŽ Π½ΠΈΠΆΠ΅:

struct hostent.

{.

char FAR * h_name; // имя ΡƒΠ·Π»Π°.

char FAR * FAR * h_aliases; // список Π°Π»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Π½Ρ‹Ρ… ΠΈΠΌΠ΅Π½.

short h_addr type; // Ρ‚ΠΈΠΏ адрСса ΡƒΠ·Π»Π°.

short h_length; // Π΄Π»ΠΈΠ½Π° адрСса.

char FAR * FAR * h_addr _list; // список адрСсов.

#define h_addr h_addr_list[0] // адрСс.

};

typedef struct hostent *PHOSTENT;

typedef struct hostent FAR *LPHOSTENT;

Π˜ΡΠΊΠΎΠΌΡ‹ΠΉ адрСс находится Π² ΠΏΠ΅Ρ€Π²ΠΎΠΌ элСмСнта списка h_addr _list[0], Π½Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΠΎΠΆΠ½ΠΎ Ρ‚Π°ΠΊΠΆΠ΅ ΡΡΡ‹Π»Π°Ρ‚ΡŒΡΡ ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ h_addr. Π”Π»ΠΈΠ½Π° поля адрСса находится Π² ΠΏΠΎΠ»Π΅ h_length.

ПослС Ρ‚ΠΎΠ³ΠΎ ΠΊΠ°ΠΊ Π²Ρ‹ ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²ΠΈΠ»ΠΈ структуру SOCKADDR, записав Π² Π½Π΅Π΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ сокСта (Π² Ρ‡Π°ΡΡ‚ности, адрСс), слСдуСт Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ привязку адрСса ΠΊ ΡΠΎΠΊΠ΅Ρ‚Ρƒ ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ bind:

int bind (SOCKET sock, const struct sockaddr FAR * addr, int namelen);

ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ sock Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ дСскриптор сокСта, созданного Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠ΅ΠΉ socket. Π’ ΠΏΠΎΠ»Π΅ addr слСдуСт Π·Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²Π»Π΅Π½Π½ΡƒΡŽ структуру SOCKADDR, Π° Π² ΠΏΠΎΠ»Π΅ namelen — Ρ€Π°Π·ΠΌΠ΅Ρ€ этой структуры. Π’ ΡΠ»ΡƒΡ‡Π°Π΅ ошибки функция bind Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ SOCKET_ERROR. Π”Π°Π»ΡŒΠ½Π΅ΠΉΡˆΠΈΠΉ Π°Π½Π°Π»ΠΈΠ· ΠΏΡ€ΠΈΡ‡ΠΈΠ½ ошибки слСдуСт Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ WSAGetLastError. ΠŸΡ€ΠΈΠΌΠ΅Ρ€ Π²Ρ‹Π·ΠΎΠ²Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ bind ΠΏΠΎΠΊΠ°Π·Π°Π½ Π½ΠΈΠΆΠ΅:

if (bind (srv_socket, (LPSOCKADDR)&srv_address,.

sizeof (srv_address)) == SOCKET_ERROR).

{.

closesocket (srv_socket);

MessageBox (NULL, «bind Error», «Error», MB_OK);

return;

}.

Рассмотрим ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρƒ создания ΠΊΠ°Π½Π°Π»Π° связи со ΡΡ‚ΠΎΡ€ΠΎΠ½Ρ‹ сСрвСра.

ΠŸΡ€Π΅ΠΆΠ΄Π΅ всСго, Π½ΡƒΠΆΠ½ΠΎ ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ сокСт Π² Ρ€Π΅ΠΆΠΈΠΌ ΠΏΡ€ΠΈΠ΅ΠΌΠ° для выполнСния оТидания соСдинСния с ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΎΠΌ ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ listen:

int listen (SOCKET sock, int backlog);

Π§Π΅Ρ€Π΅Π· ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ sock Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ дСскриптор сокСта, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±ΡƒΠ΄Π΅Ρ‚ использован для создания ΠΊΠ°Π½Π°Π»Π°. ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ backlog Π·Π°Π΄Π°Π΅Ρ‚ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΉ Ρ€Π°Π·ΠΌΠ΅Ρ€ ΠΎΡ‡Π΅Ρ€Π΅Π΄ΠΈ для оТидания соСдинСния (ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ значСния ΠΎΡ‚ 1 Π΄ΠΎ 5). ΠžΡ‡Π΅Ρ€Π΅Π΄ΡŒ содСрТит запросы Π½Π° ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΊΡƒ соСдинСний для ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΏΠ°Ρ€Ρ‹ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ (адрСс IP, ΠΏΠΎΡ€Ρ‚).

Π”Π°Π»Π΅Π΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ ΠΎΠΆΠΈΠ΄Π°Π½ΠΈΠ΅ соСдинСния. Π­Ρ‚ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ двумя Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹ΠΌΠΈ способами. ΠŸΠ΅Ρ€Π²Ρ‹ΠΉ способ Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² Ρ†ΠΈΠΊΠ»ΠΈΡ‡Π΅ΡΠΊΠΎΠΌ Π²Ρ‹Π·ΠΎΠ²Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ accept Π΄ΠΎ Ρ‚Π΅Ρ… ΠΏΠΎΡ€, ΠΏΠΎΠΊΠ° Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ установлСно соСдинСниС. Π—Π°Ρ‚Π΅ΠΌ ΠΌΠΎΠΆΠ½ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€ΠΈΡΡ‚ΡƒΠΏΠ°Ρ‚ΡŒ ΠΊ ΠΎΠ±ΠΌΠ΅Π½Ρƒ Π΄Π°Π½Π½Ρ‹ΠΌΠΈ.

Ѐункция accept ΠΈΠΌΠ΅Π΅Ρ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΏΡ€ΠΎΡ‚ΠΎΡ‚ΠΈΠΏ:

SOCKET accept (SOCKET sock, struct sockaddr FAR * addr,.

int FAR * addrlen);

Π§Π΅Ρ€Π΅Π· ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ sock Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ дСскриптор сокСта, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ находится Π² Ρ€Π΅ΠΆΠΈΠΌΠ΅ ΠΏΡ€ΠΈΠ΅ΠΌΠ° для выполнСния оТидания. ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ addr Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ адрСс Π±ΡƒΡ„Π΅Ρ€Π°, Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±ΡƒΠ΄Π΅Ρ‚ записан адрСс ΡƒΠ·Π»Π°, ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡ΠΈΠ²ΡˆΠ΅Π³ΠΎΡΡ ΠΊ ΡΠ΅Ρ€Π²Π΅Ρ€Ρƒ. Π Π°Π·ΠΌΠ΅Ρ€ этого Π±ΡƒΡ„Π΅Ρ€Π° Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ Π² ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Ρ‚ΠΈΠΏΠ° int, адрСс ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ пСрСдаСтся Ρ‡Π΅Ρ€Π΅Π· ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ addrlen.

ОТиданиС соСдинСния Π² Ρ†ΠΈΠΊΠ»Π΅ ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ ΠΊ Ρ‚ΠΎΡ€ΠΌΠΎΠΆΠ΅Π½ΠΈΡŽ ΠžΠ‘ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π° Π½Π° ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ установлСн сСрвСр. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ Π½Π°ΠΌΠ½ΠΎΠ³ΠΎ Π»ΡƒΡ‡ΡˆΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π΄Ρ€ΡƒΠ³ΠΎΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄, основанный Π½Π° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Π½ΠΈΠΈ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ интСрфСйса Windows Socket, ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½Π½ΠΎΠ³ΠΎ для выполнСния асинхронных ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ.

ВмСсто Ρ‚ΠΎΠ³ΠΎ Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠΆΠΈΠ΄Π°Ρ‚ΡŒ соСдинСниС, вызывая Π² Ρ†ΠΈΠΊΠ»Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ accept, Π² Π΄Π°Π½Π½ΠΎΠΌ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π΅ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ ΠΎΠ΄ΠΈΠ½ Ρ€Π°Π· Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ WSAAsyncSelect, ΡƒΠΊΠ°Π·Π°Π² Π΅ΠΉ, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠΈ запроса Π½Π° ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΊΡƒ соСдинСния функция ΠΎΠΊΠ½Π° вашСго прилоТСния Π΄ΠΎΠ»ΠΆΠ½Π° ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ сообщСниС:

#define WSA_ACCEPT (WM_USER + 1).

// ΠŸΡ€ΠΈ ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠ΅ установки соСдинСния Π³Π»Π°Π²Π½ΠΎΠ΅ ΠΎΠΊΠ½ΠΎ прилоТСния.

// ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ сообщСниС WSA_ACCEPT.

rc = WSAAsyncSelect (srv_socket, hWnd, WSA_ACCEPT, FD_ACCEPT);

if (rc > 0).

{.

closesocket (srv_socket);

MessageBox (NULL, «WSAAsyncSelect Error», «Error», MB_OK);

return;

}.

Π’ Π΄Π°Π½Π½ΠΎΠΌ случаС ΠΎΠΆΠΈΠ΄Π°Π½ΠΈΠ΅ соСдинСния выполняСтся для сокСта srv_socket. ПослСдний ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΈΠΌΠ΅Π΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ FD_ACCEPT. Π­Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈ ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠ΅ создания ΠΊΠ°Π½Π°Π»Π° связи функция ΠΎΠΊΠ½Π° с ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ΠΎΠΌ hWnd ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ сообщСниС WSA_ACCEPT, ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ΅ Π² Π²Π°ΡˆΠ΅ΠΌ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ.

ΠžΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ сообщСния WSA_ACCEPT Π²Π½Π°Ρ‡Π°Π»Π΅ Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ accept, Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‰ΡƒΡŽ созданиС ΠΊΠ°Π½Π°Π»Π° ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ Π΄Π°Π½Π½Ρ‹Ρ…. ПослС этого функция WSAAsyncSelect вызываСтся Π΅Ρ‰Π΅ ΠΎΠ΄ΠΈΠ½ Ρ€Π°Π·, для Ρ‚ΠΎΠ³ΠΎ Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Π°ΡΠΈΠ½Ρ…Ρ€ΠΎΠ½Π½ΡƒΡŽ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ ΠΏΡ€ΠΈΠ΅ΠΌΠ° Π΄Π°Π½Π½Ρ‹Ρ… ΠΎΡ‚ ΡƒΠ΄Π°Π»Π΅Π½Π½ΠΎΠ³ΠΎ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°, Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ ситуации Ρ€Π°Π·Ρ€Ρ‹Π²Π° ΠΊΠ°Π½Π°Π»Π° связи.

2.3 Π˜Π½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΡ ΠΈ Ρ€Π°Π±ΠΎΡ‚Π° сокСт-ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π° дистанционноС ΠΎΠ±ΡƒΡ‡Π΅Π½ΠΈΠ΅ Ρ€Π°Π±ΠΎΡ‚Π° ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€ Π Π°Π±ΠΎΡ‚Π° ΠΏΠΎ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡŽ со ΡΡ‚ΠΎΡ€ΠΎΠ½Ρ‹ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π° нСсколько ΠΏΡ€ΠΎΡ‰Π΅, Ρ‡Π΅ΠΌ Ρ€Π°Π±ΠΎΡ‚Π° ΠΏΠΎ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡŽ со ΡΡ‚ΠΎΡ€ΠΎΠ½Ρ‹ сСрвСра (см. Π ΠΈΡ. 2.3). Π˜Π½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΡ WS ΠΈ ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ сокСта происходит Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½ΠΎ клиСнтскому ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡŽ. Π—Π°ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ структуры производится ΠΏΠΎΡ‡Ρ‚ΠΈ Ρ‚Π°ΠΊΠΆΠ΅, Π½ΠΎ Π½ΡƒΠΆΠ½ΠΎ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ IP адрСс сСрвСра (ΠΏΡ€ΠΈΠΌΠ΅Ρ€ 192.168.0.10). Π£Π΄ΠΎΠ±Π½Π΅ΠΉ Π·Π°Π΄Π°Π²Π°Ρ‚ΡŒ Π΄ΠΎΠΌΠ΅Π½Π½ΠΎΠ΅ имя сСрвСра, Ρ‡Π΅ΠΌ Π΅Π³ΠΎ IP адрСс, для прСобразования ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ gethostbyname. Π”Π°Π»ΡŒΡˆΠ΅ сразу ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΠ΅Π΄ΠΈΠ½ΡΡ‚ΡŒΡΡ:

connect (s, (struct sockaddr *)&anAddr, sizeof (struct sockaddr));

Для обращСния ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹-ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π° ΠΊ ΡΠ΅Ρ€Π²Π΅Ρ€Ρƒ с Π·Π°ΠΏΡ€ΠΎΡΠΎΠΌ Π½Π° ΡƒΡΡ‚Π°Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ логичСской соСдинСния ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ систСмный Π²Ρ‹Π·ΠΎΠ² connect, ΠΈΠΌΠ΅ΡŽΡ‰ΠΈΠΉ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ Π²ΠΈΠ΄.

int connect (SOCKET s, struct sockaddr_in * addr, int addrlen).

АргумСнт s Π·Π°Π΄Π°Π΅Ρ‚ дСскриптор socket’Π°, Ρ‡Π΅Ρ€Π΅Π· ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° обращаСтся ΠΊ ΡΠ΅Ρ€Π²Π΅Ρ€Ρƒ с Π·Π°ΠΏΡ€ΠΎΡΠΎΠΌ Π½Π° ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠ΅. Socket Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ создан систСмным Π²Ρ‹Π·ΠΎΠ²ΠΎΠΌ socket ΠΈ ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡Π΅Π½ адрСсом с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ систСмного Π²Ρ‹Π·ΠΎΠ²Π° bind. АргумСнт addr Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ Π½Π° ΡΡ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Ρƒ Π΄Π°Π½Π½Ρ‹Ρ…, ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‰ΡƒΡŽ адрСс, приписанный socket’Ρƒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹-сСрвСра, ΠΊ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ дСлаСтся запрос Π½Π° ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠ΅. АргумСнт addrlen Π·Π°Π΄Π°Π΅Ρ‚ Ρ€Π°Π·ΠΌΠ΅Ρ€ (Π² Π±Π°ΠΉΡ‚Π°Ρ…) структуры Π΄Π°Π½Π½Ρ‹Ρ…, ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅ΠΌΠΎΠΉ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠΌ addr.

Для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ запрос Π½Π° ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠ΅ Π±Ρ‹Π» ΡƒΡΠΏΠ΅ΡˆΠ½Ρ‹ΠΌ, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ, ΠΏΠΎ ΠΊΡ€Π°ΠΉΠ½Π΅ΠΉ ΠΌΠ΅Ρ€Π΅, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°-сСрвСр Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΠ»Π° ΠΊ ΡΡ‚ΠΎΠΌΡƒ ΠΌΠΎΠΌΠ΅Π½Ρ‚Ρƒ систСмный Π²Ρ‹Π·ΠΎΠ² listen для socket’Π° с ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹ΠΌ адрСсом.

ΠŸΡ€ΠΈ ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎΠΌ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ запроса систСмный Π²Ρ‹Π·ΠΎΠ² connect Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ 0, Π² ΠΏΡ€ΠΎΡ‚ΠΈΠ²Π½ΠΎΠΌ случаС — «-1» (устанавливая ΠΊΠΎΠ΄ ΠΏΡ€ΠΈΡ‡ΠΈΠ½Ρ‹ нСуспСха Π² Π³Π»ΠΎΠ±Π°Π»ΡŒΠ½ΠΎΠΉ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ errno).

ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅. Если ΠΊ ΠΌΠΎΠΌΠ΅Π½Ρ‚Ρƒ выполнСния connect ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹ΠΉ ΠΈΠΌ socket Π½Π΅ Π±Ρ‹Π» привязан ΠΊ Π°Π΄Ρ€Π΅ΡΡƒ посрСдством bind, Ρ‚ΠΎ Ρ‚акая привязка Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½Π° автоматичСски.

ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅. Π’ Ρ€Π΅ΠΆΠΈΠΌΠ΅ взаимодСйствия Π±Π΅Π· установлСния соСдинСния нСобходимости Π² Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ систСмного Π²Ρ‹Π·ΠΎΠ²Π° connect Π½Π΅Ρ‚. Однако, Π΅Π³ΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Π² Ρ‚Π°ΠΊΠΎΠΌ Ρ€Π΅ΠΆΠΈΠΌΠ΅ Π½Π΅ ΡΠ²Π»ΡΠ΅Ρ‚ся ошибкой — просто мСняСтся смысл выполняСмых ΠΏΡ€ΠΈ этом дСйствий: устанавливаСтся адрСс «ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ» для всСх ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… посылок Π΄Π΅ΠΉΡ‚Π°Π³Ρ€Π°ΠΌΠΌ.

Рис. 2.4 Π‘Ρ…Π΅ΠΌΠ° Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°.

2.4 ΠŸΠ΅Ρ€Π΅Π΄Π°Ρ‡Π° Π΄Π°Π½Π½Ρ‹Ρ… ПослС Ρ‚ΠΎΠ³ΠΎ ΠΊΠ°ΠΊ ΠΊΠ°Π½Π°Π» создан, ΠΌΠΎΠΆΠ½ΠΎ Π½Π°Ρ‡ΠΈΠ½Π°Ρ‚ΡŒ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡Ρƒ Π΄Π°Π½Π½Ρ‹Ρ…. Для ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ Π΄Π°Π½Π½Ρ‹Ρ… ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Π° Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠΉ доставки TCP Π² Π΄Π°Π½Π½ΠΎΠΌ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ send ΠΈ recv, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ входят Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹ΠΉ интСрфСйс Windows Sockets.

Ѐункция ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ Π΄Π°Π½Π½Ρ‹Ρ… send ΠΈΠΌΠ΅Π΅Ρ‚ Ρ‚Ρ€ΠΈ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° — дСскриптор сокСта sock, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ выполняСтся ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡Π°, адрСс Π±ΡƒΡ„Π΅Ρ€Π° buf, содСрТащСго ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Π΅ΠΌΠΎΠ΅ сообщСниС, Ρ€Π°Π·ΠΌΠ΅Ρ€ этого Π±ΡƒΡ„Π΅Ρ€Π° bufsize ΠΈ Ρ„Π»Π°Π³ΠΈ flags:

int send (SOCKET sock, const char FAR* buf, int bufsize, int flags);

ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ recv, ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½Π½ΠΎΠΉ для ΠΏΡ€ΠΈΠ΅ΠΌΠ° Π΄Π°Π½Π½Ρ‹Ρ…, Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½Ρ‹ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°ΠΌ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ send:

int recv (SOCKET sock, char FAR * buf, int bufsize, int flags);

Π—Π°ΠΌΠ΅Ρ‚ΠΈΠΌ, Ρ‡Ρ‚ΠΎ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ recv ΠΈ send Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°ΡŽΡ‚ количСство, соотвСтствСнно, принятых ΠΈ ΠΏΠ΅Ρ€Π΅Π΄Π°Π½Π½Ρ‹Ρ… Π±Π°ΠΉΡ‚ Π΄Π°Π½Π½Ρ‹Ρ…. ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ Π΄Π°Π½Π½Ρ‹Π΅, Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π²Ρ‹Π·Ρ‹Π²Π°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ recv Π² Ρ†ΠΈΠΊΠ»Π΅ Π΄ΠΎ Ρ‚Π΅Ρ… ΠΏΠΎΡ€, ΠΏΠΎΠΊΠ° Π½Π΅ Π±ΡƒΠ΄ΡƒΡ‚ приняты всС ΠΏΠ΅Ρ€Π΅Π΄Π°Π½Π½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅. ΠŸΡ€ΠΈ этом Π½Π° ΠΎΠ΄ΠΈΠ½ Π²Ρ‹Π·ΠΎΠ² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ send ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€ΠΈΡ…ΠΎΠ΄ΠΈΡ‚ΡŒΡΡ нСсколько Π²Ρ‹Π·ΠΎΠ²ΠΎΠ² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ recv.

Π’ ΡΠ»ΡƒΡ‡Π°Π΅ ошибки ΠΎΠ±Π΅ эти Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°ΡŽΡ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ SOCKET_ERROR. Для Π°Π½Π°Π»ΠΈΠ·Π° ΠΏΡ€ΠΈΡ‡ΠΈΠ½ возникновСния ошибки слСдуСт Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠ΅ΠΉ WSAGetLastError.

ПослС установки ΠΊΠ°Π½Π°Π»Π° связи вызываСтся функция WSAAsyncSelect, Π² ΠΊΠ°Ρ‡Π΅ΡΡ‚Π²Π΅ послСднСго ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π·Π°Π΄Π°Ρ‚ΡŒ ΠΊΠΎΠΌΠ±ΠΈΠ½Π°Ρ†ΠΈΡŽ констант FD_READ ΠΈ FD_CLOSE. ΠŸΡ€ΠΈ этом функция Π³Π»Π°Π²Π½ΠΎΠ³ΠΎ ΠΎΠΊΠ½Π° прилоТСния Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠΎΠ»ΡƒΡ‡Π°Ρ‚ΡŒ сообщСниС WSA_NETEVENT Π² Ρ‚ΠΎΡ‚ ΠΌΠΎΠΌΠ΅Π½Ρ‚ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ, ΠΊΠΎΠ³Π΄Π° Ρ‡Ρ‚Π΅Π½ΠΈΠ΅ Π΄Π°Π½Π½Ρ‹Ρ… Π½Π΅ Π²Ρ‹Π·ΠΎΠ²Π΅Ρ‚ Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ прилоТСния:

#define WSA_NETEVENT (WM_USER + 2).

rc = WSAAsyncSelect (srv_socket, hWnd, WSA_NETEVENT,.

FD_READ | FD_CLOSE);

ΠŸΡ€ΠΈ нСобходимости выполнСния асинхронной посылки Π΄Π°Π½Π½Ρ‹Ρ… Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ WSAAsyncSelect Π΅Ρ‰Π΅ ΠΈ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ FD_WRITE.

Если функция WSAAsyncSelect Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΠ»Π°ΡΡŒ ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎ, ΠΎΠ½Π° Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π½ΡƒΠ»Π΅Π²ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, ΠΏΡ€ΠΈ ошибкС — Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ SOCKET_ERROR.

2.5 Π£ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΌΡ‹ΡˆΡŒΡŽ ΠΈ ΠΊΠ»Π°Π²ΠΈΠ°Ρ‚ΡƒΡ€ΠΎΠΉ Для управлСния ΠΌΡ‹ΡˆΡŒΡŽ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ ряд сообщСний, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ приходят Π³Π»Π°Π²Π½ΠΎΠΌΡƒ ΠΎΠΊΠ½Ρƒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅-ΠΊΠ»ΠΈΠ΅Π½Ρ‚Ρƒ, ΠΈ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ соотвСтствСнноС сообщСниС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅-сСрвСру. ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°-сСрвСр Π΄ΠΎΠ»ΠΆΠ½Π° ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ эти сообщСния.

БообщСния, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ:

WM_LBUTTONDOWN.

WM_LBUTTONUP.

WM_LBUTTONDBLCLK.

WM_RBUTTONDOWN.

WM_RBUTTONUP.

WM_RBUTTONDBLCLK.

WM_MOUSEMOVE.

ΠŸΠ΅Ρ€Π²Ρ‹Π΅ ΡˆΠ΅ΡΡ‚ΡŒ сообщСний приходят ΠΎΠΊΠ½Ρƒ, ΠΊΠΎΠ³Π΄Π° происходит Π½Π°ΠΆΠ°Ρ‚ΠΈΠ΅, отпусканиС ΠΈ Π΄Π²ΠΎΠΉΠ½ΠΎΠ΅ Π½Π°ΠΆΠ°Ρ‚ΠΈΠ΅ ΠΊΠ½ΠΎΠΏΠΊΠΈ ΠΌΡ‹ΡˆΠΈ (для Π»Π΅Π²ΠΎΠΉ ΠΈ ΠΏΡ€Π°Π²ΠΎΠΉ клавиши получаСтся ΡˆΠ΅ΡΡ‚ΡŒ сообщСний). ШСстоС сообщСниС ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΠ΅ ΠΌΡ‹ΡˆΠΈ.

ΠŸΡ€ΠΈ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠ΅ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈΠ· ΡΡ‚ΠΈΡ… сообщСний ΠΊΠ»ΠΈΠ΅Π½Ρ‚ отправляСт сообщСниС с ΠΊΠΎΠ΄ΠΎΠΌ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ сСрвСру, ΠΊΠΎΠ³Π΄Π° сСрвСр ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ сообщСниС-ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ, ΠΎΠ½ ΡΠΌΡƒΠ»ΠΈΡ€ΡƒΠ΅Ρ‚ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π΅ дСйствиС Π½Π° ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π΅, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ ΠΎΠ½ Π·Π°ΠΏΡƒΡ‰Π΅Π½.

Эмуляция осущСствляСтся Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠ΅ΠΉ mouse_event:

VOID mouse_event (DWORD dwFlags, DWORD dx, DWORD dy, DWORD dwData, ULONG_PTR dwExtraInfo);

dwFlags опрСдСляСт ΠΊΠ°ΠΊΠΎΠ΅ событиС ΡΠΌΡƒΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ, ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Ρ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ значСния:

MOUSEEVENTF_LEFTDOWN.

MOUSEEVENTF_LEFTUP.

MOUSEEVENTF_WHEEL.

MOUSEEVENTF_XDOWN.

MOUSEEVENTF_XUP.

MOUSEEVENTF_ABSOLUTE.

MOUSEEVENTF_MOVE.

MOUSEEVENTF_LEFTDOWN.

MOUSEEVENTF_LEFTUP.

MOUSEEVENTF_RIGHTDOWN.

MOUSEEVENTF_RIGHTUP.

MOUSEEVENTF_MIDDLEDOWN.

MOUSEEVENTF_MIDDLEUP.

MOUSEEVENTF_WHEEL.

MOUSEEVENTF_XDOWN.

MOUSEEVENTF_XUP.

dx ΡΠΌΠ΅Ρ‰Π΅Π½ΠΈΠ΅ ΠΏΠΎ Ρ….

dy ΡΠΌΠ΅Ρ‰Π΅Π½ΠΈΠ΅ ΠΏΠΎ Ρƒ.

dwData Π²Ρ€Π°Ρ‰Π΅Π½ΠΈΠ΅ колСса Π‘ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ mouse_event ΠΌΠΎΠΆΠ½ΠΎ ΡΡΠΌΡƒΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ всС Π½ΡƒΠΆΠ½Ρ‹Π΅ события.

Π£ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΊΠ»Π°Π²ΠΈΠ°Ρ‚ΡƒΡ€ΠΎΠΉ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΈΠΌ отличаСтся ΠΎΡ‚ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΡ ΠΌΡ‹ΡˆΠΊΠΎΠΉ.

НуТно ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π΄Π²Π° сообщСния:

WM_KEYDOWN.

WM_KEYUP.

ΠŸΠ΅Ρ€Π²ΠΎΠ΅ сообщСниС Π³ΠΎΠ²ΠΎΡ€ΠΈ ΠΎ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ Π½Π°ΠΆΠ°Π» ΠΊΠ»Π°Π²ΠΈΡˆΡƒ ΠΊΠ»Π°Π²ΠΈΠ°Ρ‚ΡƒΡ€Ρ‹, Π²Ρ‚ΠΎΡ€ΠΎΠ΅, Ρ‡Ρ‚ΠΎ отпустил. ΠŸΡ€ΠΈ ΠΏΡ€ΠΈΡ…ΠΎΠ΄Π΅ этих сообщСний ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ Π³Π»Π°Π²Π½ΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΎΠΊΠ½Π° wParam ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΊΠΎΠ΄Π° клавиши. ΠšΠ»ΠΈΠ΅Π½Ρ‚ отправляСт ΠΊΠΎΠ΄ клавиши ΠΈ Ρ„Π»Π°Π³ наТатия (Π½Π°ΠΆΠ°Π»ΠΈ ΠΊΠ»Π°Π²ΠΈΡˆΡƒ ΠΈΠ»ΠΈ отпустили). Π‘Π΅Ρ€Π²Π΅Ρ€ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ сообщСниС ΠΈ ΡΠΌΡƒΠ»ΠΈΡ€ΡƒΠ΅Ρ‚ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π΅ событиС с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ keybd_event.

VOID keybd_event (BYTE bVk, BYTE bScan, DWORD dwFlags, PTR dwExtraInfo);

bVk код клавиши.

bScan Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ся.

dwFlags опрСдСляСт Π½Π°ΠΆΠ°Π»ΠΈ ΠΊΠ»Π°Π²ΠΈΡˆΡƒ ΠΈΠ»ΠΈ отпустили (Ссли отпустили KEYEVENTF_KEYUP, ΠΈΠ½Π°Ρ‡Π΅ 0).

2.6 ΠŸΠ΅Ρ€Π΅Π΄Π°Ρ‡Π° изобраТСния экрана ΠžΡ‚ΠΏΡ€Π°Π²ΠΊΠ° ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ экрана происходит ΠΏΠΎ Ρ‚Π°ΠΉΠΌΠ΅Ρ€Ρƒ. Π Π°Π·ΠΌΠ΅Ρ€ изобраТСния экрана с Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ΠΌ 800×600 ΠΈ 32 Π±ΠΈΡ‚Π° памяти Π½Π° ΠΏΠΈΠΊΡΠ΅Π»ΡŒ ΠΎΠΊΠΎΠ»ΠΎ 2 ΠΌΠ΅Π³Π°Π±Π°ΠΉΡ‚, Ρ‡Ρ‚ΠΎ Π½Π΅ΠΏΡ€ΠΈΠ΅ΠΌΠ»Π΅ΠΌΠΎ, Ρ‚.ΠΊ. врСмя ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠΈ изобраТСния ТСстко ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΎ условиями поставлСнной Π·Π°Π΄Π°Ρ‡ΠΈ. Но 32 Π±ΠΈΡ‚Π° Π½Π° ΠΏΠΈΠΊΡΠ΅Π»ΡŒ вовсС Π½Π΅ ΡΠ²Π»ΡΠ΅Ρ‚ся Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΡΡ‚ΡŒΡŽ для Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°, поэтому Π² Π΄Π°Π½Π½ΠΎΠΌ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π΅ осущСствляСтся ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΠΎΠ»Π½ΠΎΡ†Π²Π΅Ρ‚Π½ΠΎΠΉ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ΅ ΠΊ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ΅ Π² Π³Ρ€Π°Π΄Π°Ρ†ΠΈΡΡ… сСрого (256 Ρ†Π²Π΅Ρ‚ΠΎΠ² сСрого). Но Π²ΡΠ΅ Ρ€Π°Π²Π½ΠΎ Ρ€Π°Π·ΠΌΠ΅Ρ€ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠΈ Π² 700 ΠΊΠΈΠ»ΠΎΠ±Π°ΠΉΡ‚ Π½Π΅ ΠΎΡ‚Π²Π΅Ρ‡Π°Π΅Ρ‚ Ρ‚Ρ€Π΅Π±ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°, поэтому ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° сТимаСтся Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΎΠΌ сТатия LZW, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΎΡ‡Π΅Π½ΡŒ эффСктивно Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π½Π° ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΡΡ…. Π’ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ Ρ„Π°ΠΉΠ» получаСтся ΠΎΠΊΠΎΠ»ΠΎ 150 ΠΊΠ±, Ρ‡Ρ‚ΠΎ Π²ΠΏΠΎΠ»Π½Π΅ ΡƒΠ΄ΠΎΠ²Π»Π΅Ρ‚Π²ΠΎΡ€ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ.

Для получСния изобраТСния экрана Π½ΡƒΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ контСкст экрана. Π•Π³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ GetDC, ΠΏΠ΅Ρ€Π΅Π΄Π°Π² ноль Π² ΠΊΠ°Ρ‡Π΅ΡΡ‚Π²Π΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° (Ρ‚.ΠΊ. дСскриптор Ρ€Π°Π±ΠΎΡ‡Π΅Π³ΠΎ стола Ρ€Π°Π²Π΅Π½ Π½ΡƒΠ»ΡŽ):

HDC DESK_DC=GetDC (0);

Π’Π°ΠΊΠΆΠ΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡƒΠ·Π½Π°Ρ‚ΡŒ Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ экрана, это ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ GetSystemMetrics, которая Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ΠΌΠ½ΠΎΠ³ΠΎ Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΎΠΉ систСмной ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ‚ΠΈ ΠΎΡ‚ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°. Для получСния Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠ² экрана Π² ΠΏΠΈΠΊΡΠ΅Π»ΡΡ… Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ SM_CXSCREEN ΠΈΠ»ΠΈ SM_CYSCREEN, функция Π²Π΅Ρ€Π½Π΅Ρ‚ Ρ€Π°Π·ΠΌΠ΅Ρ€ ΠΏΠΎ Π³ΠΎΡ€ΠΈΠ·ΠΎΠ½Ρ‚Π°Π»ΠΈ ΠΈΠ»ΠΈ ΠΏΠΎ Π²Π΅Ρ€Ρ‚ΠΈΠΊΠ°Π»ΠΈ соотвСтствСнно.

int SCR_X =GetSystemMetrics (SM_CXSCREEN);

int SCR_Y =GetSystemMetrics (SM_CYSCREEN);

НуТно ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ контСкст, совмСстимый с ΠΊΠΎΠ½Ρ‚Скстом Ρ€Π°Π±ΠΎΡ‡Π΅Π³ΠΎ стола, для этого ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ функция CreateCompatibleDC, Π² ΠΊΠ°Ρ‡Π΅ΡΡ‚Π²Π΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° Π½ΡƒΠΆΠ½ΠΎ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ контСкст экрана:

HDC BMP_DC = CreateCompatibleDC (DESK_DC);

НуТно ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ bitmap ΠΈ ΡΠ²ΡΠ·Π°Ρ‚ΡŒ Π΅Π³ΠΎ с ΡΠΎΠ·Π΄Π°Π½Π½Ρ‹ΠΌ контСкстом, для этого ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ CreateCompatibleBitmap ΠΈ SelectObject. ΠŸΠ΅Ρ€Π²Π°Ρ функция создаСт bitmap Π² Π½Π΅Π΅ Π½ΡƒΠΆΠ½ΠΎ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ контСкст экрана ΠΈ Π΅Π³ΠΎ Ρ€Π°Π·ΠΌΠ΅Ρ€Ρ‹. Вторая функция связываСт bitmap ΠΈ ΠΊΠΎΠ½Ρ‚Скст, Π² Π½Π΅Π΅ пСрСдаСтся дСскриптор bitmap ΠΈ ΡΠΎΠ·Π΄Π°Π½Π½Ρ‹ΠΉ контСкст.

HBITMAP DRAW_DC = CreateCompatibleBitmap (DESK_DC, SCR_X, SCR_Y);

SelectObject (BMP_DC, DRAW_DC);

ΠžΡΡ‚Π°Π»ΠΎΡΡŒ ΡΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ экрана Π½Π° ΡΠΎΠ·Π΄Π°Π½Π½Ρ‹ΠΉ контСкст, это ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠ΅ΠΉ BitBlt, которая ΠΈΠΌΠ΅Π΅Ρ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅ объявлСниС:

BOOL BitBlt (.

HDC Ошибка! НСдопустимый ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ гипСрссылки., //дСскриптор контСкста, Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΊΠΎΠΏΠΈΡ€ΡƒΠ΅ΠΌ.

int Ошибка! НСдопустимый ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ гипСрссылки., // x-ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Π° Π»Π΅Π²ΠΎΠ³ΠΎ Π²Π΅Ρ€Ρ…Π½Π΅Π³ΠΎ ΡƒΠ³Π»Π° hdcDest.

int Ошибка! НСдопустимый ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ гипСрссылки., // yΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Π° Π»Π΅Π²ΠΎΠ³ΠΎ Π²Π΅Ρ€Ρ…Π½Π΅Π³ΠΎ ΡƒΠ³Π»Π° hdcDest.

int Ошибка! НСдопустимый ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ гипСрссылки., // ΡˆΠΈΡ€ΠΈΠ½Π° hdcDest.

int Ошибка! НСдопустимый ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ гипСрссылки., // высота hdcDest.

HDC Ошибка! НСдопустимый ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ гипСрссылки., // дСскриптор контСкста источника.

int Ошибка! НСдопустимый ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ гипСрссылки., // xΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Π° Π»Π΅Π²ΠΎΠ³ΠΎ Π²Π΅Ρ€Ρ…Π½Π΅Π³ΠΎ ΡƒΠ³Π»Π° hdcSrc.

int Ошибка! НСдопустимый ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ гипСрссылки., // yΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Π° Π»Π΅Π²ΠΎΠ³ΠΎ Π²Π΅Ρ€Ρ…Π½Π΅Π³ΠΎ ΡƒΠ³Π»Π° hdcSrc.

DWORD Ошибка! НСдопустимый ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ гипСрссылки. // ΠΊΠΎΠ΄ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ.

);

Ѐункция ΠΌΠΎΠΆΠ΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ нСсколько дСйствий, для копирования изобраТСния Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΠΎΡΠ»Π°Ρ‚ΡŒ константу SRCCOPY Π² ΠΊΠ°Ρ‡Π΅ΡΡ‚Π²Π΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° dwRop:

BitBlt (BMP_DC, 0,0,SCR_X, SCR_Y, DESK_DC, 0,0,SRCCOPY);

Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π½ΡƒΠΆΠ½ΠΎ ΠΈΠ·Π²Π»Π΅Ρ‡ΡŒ массив Ρ†Π²Π΅Ρ‚ΠΎΠ² пиксСлСй ΠΈΠ· bitmap, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΡ‹ ΡΠΎΠ·Π΄Π°Π»ΠΈ, для этого вызываСтся функция GetBitmapBits:

LONG GetBitmapBits (.

HBITMAP Ошибка! НСдопустимый ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ гипСрссылки., // дСскриптор bitmap.

LONG Ошибка! НСдопустимый ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ гипСрссылки., // количСство ΠΊΠΎΠΏΠΈΡ€ΡƒΠ΅ΠΌΡ‹Ρ… Π±Π°ΠΉΡ‚.

LPVOID Ошибка! НСдопустимый ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ гипСрссылки. // Π±ΡƒΡ„Π΅Ρ€, Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΊΠΎΠΏΠΈΡ€ΡƒΠ΅ΠΌ.

);

ΠŸΠΎΡ‚ΠΎΠΌ Ρ†Π²Π΅Ρ‚Π° пиксСлСй приводятся ΠΊ Ρ†Π²Π΅Ρ‚Π°ΠΌ Π³Ρ€Π°Π΄Π°Ρ†ΠΈΠΈ сСрого. Π›ΡƒΡ‡ΡˆΠΈΠΌ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ΠΌ ΠΊ Π³Ρ€Π°Π΄Π°Ρ†ΠΈΠΈ сСрого считаСтся такая Ρ„ΠΎΡ€ΠΌΡƒΠ»Π°:

I=0.299*Ired + 0.587*Igreen + 0.114*Iblue.

Π“Π΄Π΅ Ired, Igreen, Iblue — интСнсивности красного, Π·Π΅Π»Π΅Π½ΠΎΠ³ΠΎ ΠΈ ΡΠΈΠ½Π΅Π³ΠΎ Ρ†Π²Π΅Ρ‚Π° соотвСтствСнно. Π’ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ прСобразования получаСтся ΠΎΠ΄Π½Π° ΠΈΠ½Ρ‚Π΅Π½ΡΠΈΠ²Π½ΠΎΡΡ‚ΡŒ, Ρ‚. Π΅. Ρ€Π°Π·ΠΌΠ΅Ρ€ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠΈ ΡƒΠΌΠ΅Π½ΡŒΡˆΠ°Π΅Ρ‚ΡΡ Π² Ρ‚Ρ€ΠΈ Ρ€Π°Π·Π°.

ПослС массив подвСргаСтся ΡΠΆΠ°Ρ‚ΠΈΡŽ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΎΠΌ LZW. Π­Ρ‚ΠΎΡ‚ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ‚ прямого ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΡ ΠΊ ΠΈΡΡΠ»Π΅Π΄ΡƒΠ΅ΠΌΡ‹ΠΌ вопросам, поэтому Π±ΡƒΠ΄Π΅Ρ‚ Π΄Π°Π½ΠΎ лишь ΠΊΡ€Π°Ρ‚ΠΊΠΎΠ΅ Π΅Π³ΠΎ описаниС.

Если Π² Π΄Π²ΡƒΡ… словах, Ρ‚ΠΎ LZW-сТатиС замСняСт строки символов Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌΠΈ ΠΊΠΎΠ΄Π°ΠΌΠΈ. Π­Ρ‚ΠΎ дСлаСтся Π±Π΅Π· ΠΊΠ°ΠΊΠΎΠ³ΠΎ-Π»ΠΈΠ±ΠΎ Π°Π½Π°Π»ΠΈΠ·Π° Π²Ρ…ΠΎΠ΄Π½ΠΎΠ³ΠΎ тСкста. ВмСсто этого ΠΏΡ€ΠΈ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ Π½ΠΎΠ²ΠΎΠΉ строки символов просматриваСтся Ρ‚Π°Π±Π»ΠΈΡ†Π° строк. Π‘ΠΆΠ°Ρ‚ΠΈΠ΅ происходит, ΠΊΠΎΠ³Π΄Π° ΠΊΠΎΠ΄ замСняСт строку символов. ΠšΠΎΠ΄Ρ‹, Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΠ΅ΠΌΡ‹Π΅ LZW-Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΎΠΌ, ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ любой Π΄Π»ΠΈΠ½Ρ‹, Π½ΠΎ ΠΎΠ½ΠΈ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ большС Π±ΠΈΡ‚, Ρ‡Π΅ΠΌ Π΅Π΄ΠΈΠ½ΠΈΡ‡Π½Ρ‹ΠΉ символ. ΠŸΠ΅Ρ€Π²Ρ‹Π΅ 256 ΠΊΠΎΠ΄ΠΎΠ² (ΠΊΠΎΠ³Π΄Π° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ 8-Π±ΠΈΡ‚Π½Ρ‹Π΅ символы) ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‚ стандартному Π½Π°Π±ΠΎΡ€Ρƒ символов. ΠžΡΡ‚Π°Π»ΡŒΠ½Ρ‹Π΅ ΠΊΠΎΠ΄Ρ‹ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‚ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅ΠΌΡ‹ΠΌ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΎΠΌ строкам. Π‘Π»ΠΎΠΊ схСма сТатия для Ρ„Π°ΠΉΠ»ΠΎΠ² Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° LZW ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π° Π½Π° Ρ€ΠΈΡΡƒΠ½ΠΊΠ΅ 2.4 (с Ρ‚ΠΎΡ‡ΠΊΠΈ зрСния Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° Ρ„Π°ΠΉΠ» ΠΏΠΎΡ‡Ρ‚ΠΈ Π½ΠΈΡ‡Π΅ΠΌ Π½Π΅ ΠΎΡ‚личаСтся ΠΎΡ‚ ΠΌΠ°ΡΡΠΈΠ²Π°).

Рис. 2.4 Π‘Π»ΠΎΠΊ схСма Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° сТатия LZW.

На Ρ€ΠΈΡ. 2.4 ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π° схСма получСния ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠΈ изобраТСния экрана.

Рис. 2.4 Π‘Ρ…Π΅ΠΌΠ° получСния ΠΈ ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠΈ изобраТСния экрана НСсколько ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠ΅Π² ΠΊ Π²Ρ‹ΡˆΠ΅ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΉ схСмС:

1. ВсС Π½Π΅ΡƒΠ΄Π°Ρ‡ΠΈ Π² Π²Ρ‹ΡˆΠ΅ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΉ схСмС, ΠΊΡ€ΠΎΠΌΠ΅ Π½Π΅ΡƒΠ΄Π°Ρ‡ΠΈ ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠΈ, ΠΎΡ‡Π΅Π½ΡŒ маловСроятны ΠΈ ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΡ€ΠΎΠΈΠ·ΠΎΠΉΡ‚ΠΈ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² ΡΠ»ΡƒΡ‡Π°Π΅ ΠΏΠ΅Ρ€Π΅Π³Ρ€ΡƒΠ·ΠΊΠΈ систСмы ΠΈΠ»ΠΈ Π½Π΅Ρ…Π²Π°Ρ‚ΠΊΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΈΠ²Π½ΠΎΠΉ памяти.

2. НСудача ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠΈ ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠ»ΡƒΡ‡ΠΈΡ‚ΡŒΡΡ Π² ΡΠ»ΡƒΡ‡Π°Π΅ ошибки сСти.

3. ΠšΡ€ΠΎΠΌΠ΅ Π·Π°ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½Π½Ρ‹Ρ… Π±Π°ΠΉΡ‚ ΠΎΡ‚ΠΏΡ€Π°Π²Π»ΡΡŽΡ‚ΡΡ Ρ€Π°Π·ΠΌΠ΅Ρ€Ρ‹ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠΈ Π² ΠΏΠΈΠΊΡΠ΅Π»ΡΡ… ΠΈ Ρ€Π°Π·ΠΌΠ΅Ρ€ сТатого массива.

Π Π°Π±ΠΎΡ‚Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹-ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π° ΠΏΠΎ ΠΏΡ€ΠΈΠ΅ΠΌΡƒ изобраТСния ассимСтрична Ρ€Π°Π±ΠΎΡ‚Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹-сСрвСра ΠΏΠΎ ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠ΅ (дСйствия Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ΡΡ ΠΎΠ±Ρ€Π°Ρ‚Π½Ρ‹Π΅ ΠΈ Π² ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠΌ порядкС).

ΠžΡΠ½ΠΎΠ²Π½Ρ‹Π΅ этапы ΠΏΡ€ΠΈΠ΅ΠΌΠ° изобраТСния:

1. ΠŸΡ€ΠΈΠ΅ΠΌ Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠ² ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠΈ, Ρ€Π°Π·ΠΌΠ΅Ρ€Π° Π·Π°ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ массива ΠΈ ΡΠ°ΠΌΠΎΠ³ΠΎ массива.

НуТно ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Ρ‚ΡŒ ΠΏΠΎΠΊΠ° Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ принят вСсь массив:

int Nrem=Narj;

BYTE *buf=new BYTE[Narj],*p=buf;

while (Nrem>0).

{.

int d=recv (srv_socket,(char*)p, Nrem, 0);

if (d>0).

{.

Nrem-=d;

p+=d;

}.

}.

2. Распаковка массива. ΠŸΡ€ΠΎΠΈΡΡ…ΠΎΠ΄ΠΈΡ‚ ΠΏΠΎ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΡƒ LZW (описаниС ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡ‚ΠΈ Π² Π˜Π½Ρ‚Π΅Ρ€Π½Π΅Ρ‚Π΅).

3. ΠŸΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ интСнсивности ΠΊ Ρ†Π²Π΅Ρ‚Ρƒ Π² Π³Ρ€Π°Π΄Π°Ρ†ΠΈΠΈ сСрого:

COLORREF color=RGB (I, I, I);

4. Π’Ρ‹Π²ΠΎΠ΄ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠΈ Π½Π° ΠΎΠΊΠ½ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹-ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°.

БоздаСтся контСкст устройства ΠΈ bitmap:

HDC DC=GetDC (hWnd);//ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ контСкст ΠΎΠΊΠ½Π°.

HBITMAP HBMP=CreateCompatibleBitmap (DC, SCR_X, SCR_Y);//создаСм совмСстимый.

HDC NHDC=CreateCompatibleDC (DC); // контСкст ΠΈ bitmap.

Π—Π°Ρ‚Π΅ΠΌ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΈΡ… ΡΠ²ΡΠ·Π°Ρ‚ΡŒ:

SelectObject (NHDC, HBMP);

Π‘ΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π² bitmap ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½ΡƒΡŽ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ ΠΈ ΡΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ ΠΈΠ· ΡΠΎΠ·Π΄Π°Π½Π½ΠΎΠ³ΠΎ контСкста Π² ΠΊΠΎΠ½Ρ‚Скст ΠΎΠΊΠ½Π°.

SetBitmapBits (HBMP, LEN, cadrbuff);//cadrbuff-массив, содСрТащий Ρ†Π²Π΅Ρ‚Π° пиксСлСй.

BitBlt (DC, 0, 0, SCR_X, SCR_Y, NHDC, 0, 0, SRCCOPY);

Полная схСма ΠΏΡ€ΠΈΠ΅ΠΌΠ° изобраТСния ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π° Π½Π° Π ΠΈΡ. 2.5.

Рис. 2.5 Π‘Ρ…Π΅ΠΌΠ° ΠΏΡ€ΠΈΠ΅ΠΌΠ° изобраТСния.

Ошибка ΠΏΡ€ΠΈ распаковкС, фактичСски, ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ Π½Π΅ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΡƒΡŽ ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΡƒ массива, Ρ‚.ΠΊ. LZW Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π±Π΅Π· ошибок.

3. ВСхнологичСский Ρ€Π°Π·Π΄Π΅Π».

3.1 Π’Ρ‹Π±ΠΎΡ€ срСдств Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ На ΡΠ΅Π³ΠΎΠ΄Π½ΡΡˆΠ½ΠΈΠΉ дСнь ΠΊΠΎΠ½ΡΠΎΠ»ΡŒΠ½Ρ‹Π΅ прилоТСния ΡƒΠΆΠ΅ Π½Π΅ Π²ΠΎΡΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°ΡŽΡ‚ся ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΌ, трСбуСтся Ρ…ΠΎΡ€ΠΎΡˆΠΎ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½Π½Ρ‹ΠΉ ΠΎΠΊΠΎΠ½Π½Ρ‹ΠΉ интСрфСйс, ΠΈ ΡΡ‚ΠΎΡ‚ Ρ„Π°ΠΊΡ‚ сразу отбрасываСт Ρ‚Π°ΠΊΠΈΠ΅ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Ρ‹ срСды, ΠΊΠ°ΠΊ Turbo C ΠΈ Turbo Pascal.

Π’ ΡΠΈΠ»Ρƒ Π²Ρ‹ΡˆΠ΅ΠΈΠ·Π»ΠΎΠΆΠ΅Π½Π½ΠΎΠ³ΠΎ Π΄ΠΎΠ²ΠΎΠ΄Π° ΠΈ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π΄Ρ€ΡƒΠ³ΠΈΡ… Π΄ΠΎΠ²ΠΎΠ΄ΠΎΠ² Π²Ρ‹Π±ΠΎΡ€ срСдства Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° вСлся ΠΈΠ· ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… срСд Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ:

1. Borland C++Builder6.

2. Borland Delphi7.

3. Microsoft Visual C++.NET.

Borland C++ Builder6:

ΠŸΡ€Π΅ΠΈΠΌΡƒΡ‰Π΅ΡΡ‚Π²Π°:

1. Π›Π΅Π³ΠΊΠΎΡΡ‚ΡŒ создания ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ интСрфСйса.

2. Π“ΠΈΠ±ΠΊΠΈΠΉ ΠΈ ΠΌΠΎΡ‰Π½Ρ‹ΠΉ язык программирования Π‘++.

НСдостатки:

1. МСдлСнная Ρ€Π°Π±ΠΎΡ‚Π° срСды.

2. НСудобство взаимодСйствия с Π°ΡΠΈΠ½Ρ…Ρ€ΠΎΠ½Π½Ρ‹ΠΌΠΈ функциями WinApi (Π±Π΅Π· ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… написаниС Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° становится Π΄Π΅Π»ΠΎΠΌ вСсьма слоТным).

Borland Delphi7:

ΠŸΡ€Π΅ΠΈΠΌΡƒΡ‰Π΅ΡΡ‚Π²Π°:

1. Π›Π΅Π³ΠΊΠΎΡΡ‚ΡŒ создания ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ интСрфСйса.

2. Быстрая Ρ€Π°Π±ΠΎΡ‚Π° Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€Π° ΠΊΠΎΠ΄Π° ΠΈ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡ‚ΠΎΡ€Π°.

3. ΠœΠΎΡ‰Π½Ρ‹ΠΉ язык программирования Object Pascal.

НСдостатки:

1. НСудобство взаимодСйствия с Π°ΡΠΈΠ½Ρ…Ρ€ΠΎΠ½Π½Ρ‹ΠΌΠΈ функциями WinApi.

2. НСсколько Π³Ρ€ΠΎΠΌΠΎΠ·Π΄ΠΊΠΈΠΉ язык программирования.

Visual Π‘++.NET:

ΠŸΡ€Π΅ΠΈΠΌΡƒΡ‰Π΅ΡΡ‚Π²Π°:

1. Π­Ρ‚ΠΎ соврСмСнная срСда Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ, ΠΎΡ‚Π»ΠΈΡ‡Π°ΡŽΡ‰Π°ΡΡΡ ΡƒΠ΄ΠΎΠ±Π½Ρ‹ΠΌ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€ΠΎΠΌ ΠΊΠΎΠ΄Π°.

2. ΠžΠ±Π»Π°Π΄Π°Π΅Ρ‚ Ρ…ΠΎΡ€ΠΎΡˆΠ΅ΠΉ ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒΡŽ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€Π° тСкста, компилятора ΠΈ Π»ΠΈΠ½ΠΊΠΎΠ²Ρ‰ΠΈΠΊΠ°.

3. Π£Π΄ΠΎΠ±Π½ΠΎ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ прилоТСния, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‰ΠΈΠ΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ интСрфСйс WinApi.

НСдостатки:

1. ΠžΡ‚ΡΡƒΡ‚ΡΡ‚Π²ΠΈΠ΅ лСгкости Π² ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ интСрфСйса Π›Π΅Π³ΠΊΠΎ Π·Π°ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ нСдостатки Visual C++.NET нСсущСствСнны, Ρ‚ΠΎΠ³Π΄Π° ΠΊΠ°ΠΊ Borland Delphi7 ΠΈ Borland C++Builder6 ΠΈΠΌΠ΅ΡŽΡ‚ ΠΎΠ΄ΠΈΠ½ ΠΎΡ‡Π΅Π½ΡŒ сущСствСнный нСдостаток, Π° ΠΈΠΌΠ΅Π½Π½ΠΎ ΠΏΠ»ΠΎΡ…ΠΎΠ΅ взаимодСйствиС с ΡΠΎΠΎΠ±Ρ‰Π΅Π½ΠΈΡΠΌΠΈ ΠžΠ‘ Windows. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° Π±Ρ‹Π»Π° Π²Ρ‹Π±Ρ€Π°Π½Π° срСда Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Visual C++.NET.

3.2 Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠœΠΎΠ΄ΡƒΠ»ΡŒΠ½Π°Ρ структура ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹:

ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° сСрвСр:

1. LZW ΠΌΠΎΠ΄ΡƒΠ»ΡŒ Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΠ΅Ρ‚ сТатиС ΠΈ Ρ€Π°ΡΠΏΠ°ΠΊΠΎΠ²ΠΊΡƒ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΎΠΌ LZW.

2. Send ΠΎΡ‚Π²Π΅Ρ‡Π°Π΅Ρ‚ Π·Π° ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΡƒ Π΄Π°Π½Π½Ρ‹Ρ….

3. Receive ΠΎΡ‚Π²Π΅Ρ‡Π°Π΅Ρ‚ Π·Π° ΠΏΡ€ΠΈΠ΅ΠΌ Π΄Π°Π½Π½Ρ‹Ρ….

4. Server ΠΎΡ‚Π²Π΅Ρ‡Π°Π΅Ρ‚ Π·Π° ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ сокСта ΠΈ Π·Π° ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ Π² Ρ€Π΅ΠΆΠΈΠΌ оТидания соСдинСния.

5. NetΠ‘omm Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΠ΅Ρ‚ интСрфСйс ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° ΠΊΠ»ΠΈΠ΅Π½Ρ‚:

1. LZW ΠΌΠΎΠ΄ΡƒΠ»ΡŒ Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΠ΅Ρ‚ сТатиС ΠΈ Ρ€Π°ΡΠΏΠ°ΠΊΠΎΠ²ΠΊΡƒ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΎΠΌ LZW.

2. Send ΠΎΡ‚Π²Π΅Ρ‡Π°Π΅Ρ‚ Π·Π° ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΡƒ Π΄Π°Π½Π½Ρ‹Ρ….

3. Receive ΠΎΡ‚Π²Π΅Ρ‡Π°Π΅Ρ‚ Π·Π° ΠΏΡ€ΠΈΠ΅ΠΌ Π΄Π°Π½Π½Ρ‹Ρ….

4. Client Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΠ΅Ρ‚ интСрфСйс Для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ использовался структурный ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ ΠΊ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡŽ. Π­Ρ‚ΠΎ ΠΎΠ±ΡŠΡΡΠ½ΡΠ΅Ρ‚ΡΡ Ρ‚Π΅ΠΌ, Ρ‡Ρ‚ΠΎ ΠΈΠ·Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎ Π·Π°Π΄Π°Ρ‡Π° ΠΏΠΎΠ΄Ρ€Π°Π·ΡƒΠΌΠ΅Π²Π°Π»Π° использованиС WinApi, Π° ΡΡ‚ΠΎΡ‚ интСрфСйс, хотя ΠΈ Π·Π°ΡΠ²Π»Π΅Π½ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠΌΠΈ ΠΊΠ°ΠΊ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ, Π½ΠΎ ΡΠ²Π»ΡΠ΅Ρ‚ся ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΌ лишь условно. ΠšΠΎΠ½Π΅Ρ‡Π½ΠΎ, этот Ρ„Π°ΠΊΡ‚ вовсС Π½Π΅ ΠΎΠ±ΡΠ·Ρ‹Π²Π°Π΅Ρ‚ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠΎΠ΄ WinApi Ρ‚ΠΎΠ»ΡŒΠΊΠΎ структурно, Π½ΠΎ Π²ΡΠ΅ ΠΆΠ΅ ΡƒΠ΄ΠΎΠ±Π½Π΅ΠΉ ΡΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ Ρ†Π΅Π»ΠΎΡΡ‚Π½ΡƒΡŽ структуру ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹.

ΠžΡΠ½ΠΎΠ²Π½Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹-сСрвСра:

функция ΠΏΡ€ΠΈΠ΅ΠΌΠ° ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ для ΠΊΠ»Π°Π²ΠΈΠ°Ρ‚ΡƒΡ€Ρ‹:

void recvkey (SOCKET s);

функция ΠΏΡ€ΠΈΠ΅ΠΌΠ° ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ для ΠΌΡ‹ΡˆΠΊΠΈ:

void recvmouse (SOCKET s);

функция ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ изобраТСния экрана:

void sendscr (SOCKET s, HWND hWnd);

Π’ΠΎ Π²ΡΠ΅Ρ… Π²Ρ‹ΡˆΠ΅ΠΏΠ΅Ρ€Π΅Ρ‡ΠΈΡΠ»Π΅Π½Π½Ρ‹Ρ… функциях s — сокСт, с ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ обмСниваСмся ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠ΅ΠΉ, Π° hWnd — дСскриптор Π³Π»Π°Π²Π½ΠΎΠ³ΠΎ ΠΎΠΊΠ½Π° прилоТСния.

ΠžΡΠ½ΠΎΠ²Π½Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°:

функция ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ двиТСния курсора (dx, dy — смСщСниС курсора):

void mousemove (SOCKET srv_socket, short dx, short dy);

функция ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ наТатия клавиши ΠΊΠ»Π°Π²ΠΈΠ°Ρ‚ΡƒΡ€ΠΎΠΉ (.

Vcode — Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΠΊΠΎΠ΄ клавиши, fldown — Ρ„Π»Π°Π³, ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‰ΠΈΠΉ Π±Ρ‹Π»Π° клавиша Π½Π°ΠΆΠ°Ρ‚Π° ΠΈΠ»ΠΈ ΠΎΡ‚ΠΏΡƒΡ‰Π΅Π½Π°).

void sendkey (SOCKET srv_socket, unsigned Vcode, BOOL fldown);

функция ΠΏΡ€ΠΈΠ΅ΠΌΠ° изобраТСния экрана (hWnd — дСскриптор ΠΎΠΊΠ½Π°, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π²Π΅Π΄Π΅Π½ΠΎ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½ΠΎΠ΅ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅).

void recvscr (SOCKET srv_socket, HWND hWnd).

3.3 БистСмныС трСбования Π”Π²Π° ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π° Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½Ρ‹ ΠΊ ΡΠ΅Ρ‚ΠΈ с ΠΏΡ€ΠΎΠΏΡƒΡΠΊΠ½ΠΎΠΉ ΡΠΏΠΎΡΠΎΠ±Π½ΠΎΡΡ‚ΡŒΡŽ ΠΎΡ‚ 100 ΠΌΠ΅Π³Π°Π±ΠΈΡ‚ Π² ΡΠ΅ΠΊΡƒΠ½Π΄Ρƒ. Π­Ρ‚ΠΎ Ρ‚Ρ€Π΅Π±ΠΎΠ²Π°Π½ΠΈΠ΅, каТСтся, довольно ТСстким ΠΈ Π΄Π΅Π»Π°Π΅Ρ‚ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹ΠΌ использованиС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Ρ‡Π΅Ρ€Π΅Π· ΡΠ΅Ρ‚ΡŒ ΠΈΠ½Ρ‚Π΅Ρ€Π½Π΅Ρ‚, Π½ΠΎ ΡΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹Π΅ сСти со ΡΠΊΠΎΡ€ΠΎΡΡ‚Π½Ρ‹ΠΌ Π²Ρ‹Ρ…ΠΎΠ΄ΠΎΠΌ Π² ΠΈΠ½Ρ‚Π΅Ρ€Π½Π΅Ρ‚ становятся Π±ΠΎΠ»Π΅Π΅ доступными ΠΈ ΠΎΡ…Π²Π°Ρ‚Ρ‹Π²Π°ΡŽΡ‚ ΡƒΠΆΠ΅ большиС Ρ‚Π΅Ρ€Ρ€ΠΈΡ‚ΠΎΡ€ΠΈΠΈ. Π­Ρ‚ΠΈ ΠΎΠ±ΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΡΡ‚Π²Π°, скорСС всСго, ΡΠ΄Π΅Π»Π°ΡŽΡ‚ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹ΠΌ Π² Π±Π»ΠΈΠΆΠ°ΠΉΡˆΠ΅ΠΌ Π±ΡƒΠ΄ΡƒΡ‰Π΅ΠΌ использования Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° Ρ‡Π΅Ρ€Π΅Π· ΠΈΠ½Ρ‚Π΅Ρ€Π½Π΅Ρ‚.

ВрСбования ΠΊ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π°ΠΌ:

— OS Windows с ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΎΠΉ Windows Socket 1.1 ΠΈ Π²Ρ‹ΡˆΠ΅.

— 64 Mb RAM.

— CPU уровня Pentium3 800Mhz, Athlon 800Mhz ΠΈ Π²Ρ‹ΡˆΠ΅.

— Π’ΠΈΠ΄Π΅ΠΎ ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡ΠΊΠ° 16Mb Π²ΠΈΠ΄Π΅ΠΎ памяти.

— ΡΠ΅Ρ‚Свая ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡ΠΊΠ° 100ΠœΠ΅Π³Π°Π±ΠΈΡ‚/с.

— ΠΠ°ΡΡ‚роСнная ΡΠ΅Ρ‚ΡŒ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‰Π°Ρ 100ΠœΠ΅Π³Π°Π±ΠΈΡ‚/с.

— ΠΌΡ‹ΡˆΡŒ.

3.4 Π˜Π½Ρ‚Π΅Ρ€Ρ„Π΅ΠΉΡ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ ΠŸΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠΉ интСрфСйс Π² ΠΎΠ±Π΅ΠΈΡ… ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°Ρ… прСдставлСн Π³Π»Π°Π²Π½Ρ‹ΠΌ мСню ΠΈ Π²ΡΠΏΠΎΠΌΠΎΠ³Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌΠΈ ΠΎΠΊΠ½Π°ΠΌΠΈ:

ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°-сСрвСр:

Рис 3.1.

Start server — устанавливаСт ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ Π² Ρ€Π΅ΠΆΠΈΠΌ оТидания соСдинСния;

Stop server — ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° пСрСстаСт ΠΎΠΆΠΈΠ΄Π°Ρ‚ΡŒ соСдинСния ΠΈΠ»ΠΈ Π·Π°Π²Π΅Ρ€ΡˆΠ°Π΅Ρ‚ соСдинСниС, Ссли Π½Π°Ρ…ΠΎΠ΄ΠΈΠ»Π°ΡΡŒ Π² Ρ€Π΅ΠΆΠΈΠΌΠ΅ соСдинСния;

Рис 3.2.

Рис 3.3.

Π’ ΠΎΠΊΠ½Π΅ ΠΎΠΏΡ†ΠΈΠΉ ΠΌΠΎΠΆΠ½ΠΎ Π·Π°Π΄Π°Ρ‚ΡŒ Π½ΠΎΠ²Ρ‹ΠΉ ΠΊΠΎΠ΄ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ.

ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°-ΠΊΠ»ΠΈΠ΅Π½Ρ‚:

Рис 3.4.

Main содСрТит Π²ΠΊΠ»Π°Π΄ΠΊΠΈ Properties ΠΈ Exit.

Properties — ΠΎΠΊΠ½ΠΎ ΠΎΠΏΡ†ΠΈΠΉ.

Π’ ΠΎΠΊΠ½Π΅ ΠΎΠΏΡ†ΠΈΠΉ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°Π·Π½Π°Ρ‡ΠΈΡ‚ΡŒ имя сСрвСра.

Рис 3.4.

Рис 3.5.

Connect — ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ соСдинСниС с ΡΠ΅Ρ€Π²Π΅Ρ€ΠΎΠΌ.

Disconnect — Ρ€Π°Π·ΠΎΡ€Π²Π°Ρ‚ΡŒ соСдинСниС с ΡΠ΅Ρ€Π²Π΅Ρ€ΠΎΠΌ.

Рис 3.6.

Only show — Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ/Π²Ρ‹ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ Ρ€Π΅ΠΆΠΈΠΌ наблюдСния.

Control — Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ Ρ€Π΅ΠΆΠΈΠΌ управлСния (Π²Ρ‹ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ F3).

ΠžΠ±Ρ‰ΠΈΠ΅ элСмСнты мСню (ΠΏΡ€ΠΈΡΡƒΡ‚ΡΡ‚Π²ΡƒΡŽΡ‚ Π² ΠΎΠ±ΠΎΠΈΡ… ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°Ρ…):

Рис 3.7.

Message — ΠΏΠΎΡΠ»Π°Ρ‚ΡŒ сообщСниС сСрвСру.

File — ΠΏΠΎΡΠ»Π°Ρ‚ΡŒ Ρ„Π°ΠΉΠ» сСрвСру.

Π Π΅ΠΆΠΈΠΌΡ‹ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°:

1. НаблюдСниС (Рис. 3.8).

Рис 3.8.

Π£ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ (Рис. 3.9).

Рис 3.9.

3.5 Руководство ΠΏΠΎ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΊΠ΅ Установка ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹: Π΄Π°Π½Π½ΠΎΠ΅ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ устанавливаСтся простым ΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ Π½Π° ΠΆΠ΅ΡΡ‚ΠΊΠΈΠΉ диск (клиСнтскоС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π½Π° ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€ прСподаватСля, Π° ΡΠ΅Ρ€Π²Π΅Ρ€Π½ΠΎΠ΅ Π½Π° ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€ ΡƒΡ‡Π΅Π½ΠΈΠΊΠ°). НСобходимо присутствиС Π½Π° ΠΎΠ±ΠΎΠΈΡ… ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π°Ρ… настроСнной сСти ΠΈ ΡΠ΅Ρ‚Π΅Π²Ρ‹Ρ… ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡Π΅ΠΊ. НСобходимо ΠΏΡ€ΠΎΡΠ»Π΅Π΄ΠΈΡ‚ΡŒ Π·Π° ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΠΉ настройкой адрСса сСти ΠΈ ΠΌΠ°ΡΠΊΠΈ сСти.

3.6 Руководство администратора Администратор Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ список ΠΏΠ°Ρ€ΠΎΠ»Π΅ΠΉ ΠΈ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… ΠΈΠΌΠ΅Π½ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€ΠΎΠ² ΡƒΡ‡Π΅Π½ΠΈΠΊΠΎΠ², Π½Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ Π΄Π°Π½Π½ΠΎΠ΅ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅. Для этого ΠΎΠ½ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡΠΎΠ±Ρ€Π°Ρ‚ΡŒ список ΠΈΠΌΠ΅Π½ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€ΠΎΠ² Ρƒ ΡƒΡ‡Π΅Π½ΠΈΠΊΠΎΠ². Π—Π°Ρ‚Π΅ΠΌ ΠΎΠ½ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΊΠ°ΠΊΠΈΠΌ-Ρ‚ΠΎ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ ΡΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ список ΠΏΠ°Ρ€ΠΎΠ»Π΅ΠΉ (Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹-Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€Π°) ΠΈ ΡƒΠ²Π΅Π΄ΠΎΠΌΠΈΡ‚ΡŒ ΡƒΡ‡Π΅Π½ΠΈΠΊΠΎΠ² ΠΎ ΠΏΡ€ΠΈΡΠ²ΠΎΠ΅Π½Π½Ρ‹Ρ… ΠΈΠΌ ΠΏΠ°Ρ€ΠΎΠ»ΡΡ…. И ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ ΠΏΡ€Π΅ΠΏΠΎΠ΄Π°Π²Π°Ρ‚Π΅Π»ΡŽ список ΠΏΠ°Ρ€ΠΎΠ»Π΅ΠΉ ΠΈ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ Π΅ΠΌΡƒ список ΠΈΠΌΠ΅Π½. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, имя ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π° ΠΊΠ°ΠΊ Π±Ρ‹ ΠΈΠ³Ρ€Π°Π΅Ρ‚ Ρ€ΠΎΠ»ΡŒ Π»ΠΎΠ³ΠΈΠ½Π°.

3.7 Руководство ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ.

3.7.1 Руководство прСподаватСля ΠŸΡ€Π΅ΠΏΠΎΠ΄Π°Π²Π°Ρ‚Π΅Π»ΡŒ Π΄ΠΎΠ»ΠΆΠ΅Π½ ввСсти Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹ΠΉ имя ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π°, с ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ ΠΎΠ½ Ρ…ΠΎΡ‡Π΅Ρ‚ ΡΠ²ΡΠ·Π°Ρ‚ΡŒΡΡ, ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ шаг ΠΏΡ€ΠΎΠΉΡ‚ΠΈ Π°Π²Ρ‚ΠΎΡ€ΠΈΠ·Π°Ρ†ΠΈΡŽ Ρƒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Сля. ΠŸΡ€ΠΎΡ†Π΅ΡΡ Π°Π²Ρ‚ΠΎΡ€ΠΈΠ·Π°Ρ†ΠΈΠΈ Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ΅ пароля. Π­Ρ‚ΠΎΡ‚ ΠΏΠ°Ρ€ΠΎΠ»ΡŒ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ сообщСн ΠΏΡ€Π΅ΠΏΠΎΠ΄Π°Π²Π°Ρ‚Π΅Π»ΡŽ, Ссли ΡƒΡ‡Π΅Π½ΠΈΠΊ Ρ…ΠΎΡ‡Π΅Ρ‚ участия Π΅Π³ΠΎ участия Π² ΠΏΡ€ΠΎΡ†Π΅ΡΡΠ΅ обучСния.

Когда соСдинСниС установлСно ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΈΡΡ‚ΡƒΠΏΠ°Ρ‚ΡŒ ΠΊ ΠΎΠ±ΡƒΡ‡Π΅Π½ΠΈΡŽ. ΠŸΡ€Π΅ΠΏΠΎΠ΄Π°Π²Π°Ρ‚Π΅Π»ΡŒ Π²Ρ‹Π΄Π°Π΅Ρ‚ Π·Π°Π΄Π°Π½ΠΈΠ΅ ΡƒΡ‡Π΅Π½ΠΈΠΊΡƒ, посрСдством ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ тСкстового Ρ„Π°ΠΉΠ»Π°. ΠŸΡ€Π΅ΠΏΠΎΠ΄Π°Π²Π°Ρ‚Π΅Π»ΡŒ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈΡ‚ Π² Ρ€Π΅ΠΆΠΈΠΌ наблюдСния. Π£Ρ‡Π΅Π½ΠΈΠΊ пытаСтся Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ Π·Π°Π΄Π°Π½ΠΈΠ΅, Π° ΠΏΡ€Π΅ΠΏΠΎΠ΄Π°Π²Π°Ρ‚Π΅Π»ΡŒ Π² ΡΠ»ΡƒΡ‡Π°Π΅ нСобходимости ΠΏΠ΅Ρ€Π΅Ρ…Π²Π°Ρ‚Ρ‹Π²Π°Π΅Ρ‚ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΈ Π΄Π΅ΠΌΠΎΠ½ΡΡ‚Ρ€ΠΈΡ€ΡƒΠ΅Ρ‚ ΡƒΡ‡Π΅Π½ΠΈΠΊΡƒ, ΠΊΠ°ΠΊ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ Π½ΡƒΠΆΠ½ΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ это Π·Π°Π΄Π°Π½ΠΈΠ΅. ΠšΠΎΠ½Π΅Ρ‡Π½ΠΎ, Π²ΠΏΠΎΠ»Π½Π΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Ρ‡Ρ‚ΠΎ ΡƒΡ‡Π΅Π½ΠΈΠΊ ΠΈ ΡΠ°ΠΌ справится с Π·Π°Π΄Π°Π½ΠΈΠ΅ΠΌ.

3.7.2 Руководство ΡƒΡ‡Π΅Π½ΠΈΠΊΠ° Π£ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΡƒΡ‡Π΅Π½ΠΈΠΊΠ° Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ свой Π»ΠΈΡ‡Π½Ρ‹ΠΉ ΠΏΠ°Ρ€ΠΎΠ»ΡŒ Π½Π° ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠ΅ ΠΏΡ€Π°Π²Π° ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ ΠΊ Π΅Π³ΠΎ систСмС ΠΈ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΡ Π΅ΠΉ. Π­Ρ‚ΠΎΡ‚ ΠΏΠ°Ρ€ΠΎΠ»ΡŒ ΠΎΠ½ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π·Π°Π΄Π°Ρ‚ΡŒ Π² ΡΠ²ΠΎΠ΅ΠΌ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅. Π­Ρ‚ΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ‚ ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΡ‚ΡŒ Π·Π°Ρ‰ΠΈΡ‚Ρƒ ΠΎΡ‚ Π½Π΅ΡΠ°Π½ΠΊΡ†ΠΈΠΎΠ½ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ доступа ΠΊ ΡΠΈΡΡ‚Π΅ΠΌΠ΅. Π§Ρ‚ΠΎΠ±Ρ‹ ΠΊ ΡΠΈΡΡ‚Π΅ΠΌΠ΅ ΠΌΠΎΠ³ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒΡΡ ΠΏΡ€Π΅ΠΏΠΎΠ΄Π°Π²Π°Ρ‚Π΅Π»ΡŒ, ΡƒΡ‡Π΅Π½ΠΈΠΊ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ, ΠΈ ΠΏΠ΅Ρ€Π΅ΠΉΡ‚ΠΈ Π² ΡΠΎΡΡ‚ояния оТидания ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ ΠΏΠΎ ΡΠ΅Ρ‚ΠΈ. ПослС этого ΠΏΡ€Π΅ΠΏΠΎΠ΄Π°Π²Π°Ρ‚Π΅Π»ΡŒ ΠΈΠΌΠ΅Π΅Ρ‚ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ ΠΊ ΡΠΈΡΡ‚Π΅ΠΌΠ΅, контролирования ΠΈ Π½Π°ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΡ дСйствий своСго ΠΏΠΎΠ΄ΠΎΠΏΠ΅Ρ‡Π½ΠΎΠ³ΠΎ. ΠžΡΡ‚Π°Π»ΡŒΠ½Ρ‹Π΅ дСйствия ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ ΡƒΠΆΠ΅ Π±Ρ‹Π»ΠΈ описаны Π²Ρ‹ΡˆΠ΅ Π² Ρ€ΡƒΠΊΠΎΠ²ΠΎΠ΄ΡΡ‚Π²Π΅ прСподаватСля, ΠΎΠ½ΠΈ Π·Π°ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‚ΡΡ Π² ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΌ Π² Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Π·Π°Π΄Π°Π½ΠΈΠΉ прСподаватСля.

4. Π­ΠΊΡΠΏΠ΅Ρ€ΠΈΠΌΠ΅Π½Ρ‚Π°Π»ΡŒΠ½Ρ‹ΠΉ Ρ€Π°Π·Π΄Π΅Π».

4.1 Π‘ΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ Π΄Π°Π½Π½Ρ‹Ρ… Π‘Ρ…Π΅ΠΌΠ° экспСримСнта Π°:

1. Π˜Π·ΠΌΠ΅Ρ€ΡΠ΅Ρ‚ΡΡ врСмя ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ Ρ„Π°ΠΉΠ»ΠΎΠ² ΠžΠ‘ Windows ΠΈ Π΄Π°Π½Π½ΠΎΠ³ΠΎ прилоТСния.

2. Π‘ΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ получаСтся Π΄Π΅Π»Π΅Π½ΠΈΠ΅ΠΌ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ Π½Π° Ρ€Π°Π·ΠΌΠ΅Ρ€ Ρ„Π°ΠΉΠ»Π° Π—Π°ΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅: врСмя ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ прилоТСния ΠΈΠ·ΠΌΠ΅Ρ€ΡΠ»ΠΎΡΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎ, Π° Π²Ρ€Π΅ΠΌΡ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ ΠžΠ‘ Windows ΠΈΠ·ΠΌΠ΅Ρ€ΡΠ»ΠΎΡΡŒ сСкундомСром, Ρ‡Ρ‚ΠΎ Π½Π΅ ΠΎΡ‡Π΅Π½ΡŒ Ρ‚ΠΎΡ‡Π½ΠΎ.

Главная характСристика Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° эта ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ Π΄Π°Π½Π½Ρ‹Ρ…, поэтому интСрСсно провСсти тСсты ΠΈ ΡΡ€Π°Π²Π½ΠΈΡ‚ΡŒ со ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒΡŽ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ Π΄Π°Π½Π½Ρ‹Ρ… ΠžΠ‘ Windows XP. ВСсты ΠΏΡ€ΠΎΠ²ΠΎΠ΄ΠΈΠ»ΠΈΡΡŒ Π½Π° Ρ„Π°ΠΉΠ»Π°Ρ…, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ с ΠΊΠ°ΠΊΠΎΠΉ ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒΡŽ Windows ΠΏΠ΅Ρ€Π΅Π΄Π°Π΅Ρ‚ Π΄Π°Π½Π½Ρ‹Π΅ ΠΈΠ· ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΈΠ²Π½ΠΎΠΉ памяти. КаТдоС ΠΈΠ·ΠΌΠ΅Ρ€Π΅Π½ΠΈΠ΅ ΠΏΡ€ΠΎΠ²ΠΎΠ΄ΠΈΠ»ΠΎΡΡŒ ΠΏΠΎ ΠΏΡΡ‚ΡŒ Ρ€Π°Π·, Π·Π°Ρ‚Π΅ΠΌ Π±Ρ€Π°Π»ΠΎΡΡŒ срСднСС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅.

ΠŸΡ€ΠΈ измСрСниях Π½Π΅ ΡƒΡ‡ΠΈΡ‚Ρ‹Π²Π°Π»ΠΎΡΡŒ, Ρ‡Ρ‚ΠΎ врСмя Ρ‚Π°ΠΊΠΆΠ΅ расходуСтся Π½Π° ΡΡ‡ΠΈΡ‚Ρ‹Π²Π°Π½ΠΈΠ΅ ΠΈ Π·Π°ΠΏΠΈΡΡŒ Ρ„Π°ΠΉΠ»Π°. МоТно Π·Π°ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈ большом Ρ€Π°Π·ΠΌΠ΅Ρ€Π΅ Ρ„Π°ΠΉΠ»Π° (245.5 Мб) ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ ΠΏΠ°Π΄Π°Π΅Ρ‚, ΠΊΠ°ΠΊ Ρƒ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, Ρ‚Π°ΠΊ ΠΈ Ρƒ Windows, это, вСроятно связано с ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡ‚ями Ρ€Π°Π±ΠΎΡ‚Ρ‹ ТСсткого диска, Π° Π½Π΅ с Π·Π°ΠΌΠ΅Π΄Π»Π΅Π½ΠΈΠ΅ΠΌ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ Π΄Π°Π½Π½Ρ‹Ρ… Ρ‡Π΅Ρ€Π΅Π· ΡΠ΅Ρ‚ΡŒ.

ВСст дСмонстрируСт, Ρ‡Ρ‚ΠΎ ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ Π΄Π°Π½Π½Ρ‹Ρ… прилоТСния Π½Π΅Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ уступаСт встроСнному срСдству ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ Π΄Π°Π½Π½Ρ‹Ρ… Windows. Π­Ρ‚ΠΎ, вСроятно, обуславливаСтся Π±ΠΎΠ»Π΅Π΅ Ρ‚ΠΎΠ½ΠΊΠΎΠΉ ΠΎΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΠ΅ΠΉ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ Π΄Π°Π½Π½Ρ‹Ρ…, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Π½Π° Π±ΠΎΠ»Π΅Π΅ Π½ΠΈΠ·ΠΊΠΎΠΌ ΡƒΡ€ΠΎΠ²Π½Π΅ ΠΈ Π±ΠΎΠ»Π΅Π΅ эффСктивной Ρ€Π°Π±ΠΎΡ‚ΠΎΠΉ с ΠΆΠ΅ΡΡ‚ΠΊΠΈΠΌ диском.

Π‘Ρ…Π΅ΠΌΠ° экспСримСнта Π±:

1. ЗамСряСтся врСмя, Π·Π°Ρ‚Ρ€Π°Ρ‡Π΅Π½Π½ΠΎΠ΅ Π½Π° ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡Ρƒ Ρ„Π°ΠΉΠ»Π° ΠΏΠΎ ΡΠ΅Ρ‚ΠΈ (Π±Π΅Π· Ρ€Π°Π±ΠΎΡ‚Ρ‹ с ΠΆΠ΅ΡΡ‚ΠΊΠΈΠΌ диском) ΠΈ Π²Ρ€Π΅ΠΌΡ, Π·Π°Ρ‚Ρ€Π°Ρ‡Π΅Π½Π½ΠΎΠ΅ Π½Π° ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡Ρƒ Ρ„Π°ΠΉΠ»Π° ΠΈ Π½Π° Ρ€Π°Π±ΠΎΡ‚Ρƒ с ΠΆΠ΅ΡΡ‚ΠΊΠΈΠΌ диском.

2. Π‘ΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ получаСтся Π΄Π΅Π»Π΅Π½ΠΈΠ΅ΠΌ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ Π½Π° Ρ€Π°Π·ΠΌΠ΅Ρ€ Ρ„Π°ΠΉΠ»Π° Для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ½ΡΡ‚ΡŒ ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠ΅ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Π΄ΠΈΡΠΊΠΎΠΌ ΠΈ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ Π΄Π°Π½Π½Ρ‹Ρ… Π½ΡƒΠΆΠ½ΠΎ провСсти Π΅Ρ‰Π΅ ряд ΠΈΠ·ΠΌΠ΅Ρ€Π΅Π½ΠΈΠΉ. А ΠΈΠΌΠ΅Π½Π½ΠΎ измСряСтся нСпосрСдствСнно врСмя ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ ΡΡƒΠΌΠΌΠ°Ρ€Π½ΠΎΠ΅ врСмя. На ΠΎΡΠ½ΠΎΠ²Π΅ этих ΠΈΠ·ΠΌΠ΅Ρ€Π΅Π½ΠΈΠΉ Ρ€Π°ΡΡΡ‡ΠΈΡ‚Ρ‹Π²Π°ΡŽΡ‚ΡΡ скорости ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ Π΄Π°Π½Π½Ρ‹Ρ…. ЕстСствСнно, ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡Π° Π΄Π°Π½Π½Ρ‹Ρ… срСдства ΠžΠ‘ Windows ΡƒΠΆΠ΅ Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΡ‚Ρ€Π°ΠΆΠ΅Π½Π° Π½Π° Π΄ΠΈΠ°Π³Ρ€Π°ΠΌΠΌΠ΅.

Π­Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ Ρ€Π°Π±ΠΎΡ‚Π° с ΠΆΠ΅ΡΡ‚ΠΊΠΈΠΌ диском сильно замСдляСт процСсс ΠΈ, скорСС всСго, Ρ€Π°Π·Π½ΠΈΡ†Π° Π² ΡΠΊΠΎΡ€ΠΎΡΡ‚ΠΈ Ρ€Π°Π±ΠΎΡ‚Ρ‹ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½Π½ΠΎΠ³ΠΎ прилоТСния ΠΈ ΡΡ€Π΅Π΄ΡΡ‚Π²Π° Windows (Рис. 4.1) Π²ΠΎ ΠΌΠ½ΠΎΠ³ΠΎΠΌ обусловлСна ΠΈΠΌΠ΅Π½Π½ΠΎ Ρ€Π°Π±ΠΎΡ‚ΠΎΠΉ с ΠΆΠ΅ΡΡ‚ΠΊΠΈΠΌ диском.

4.2 Π‘ΠΆΠ°Ρ‚ΠΈΠ΅ изобраТСния Π‘Ρ…Π΅ΠΌΠ° экспСримСнта:

1. ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎ (Π²ΠΎ Π²Ρ€Π΅ΠΌΡ трассировки) узнаСтся Ρ€Π°Π·ΠΌΠ΅Ρ€ сТатого Ρ„Π°ΠΉΠ»Π°.

2. По Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΡŽ экрана рассчитываСтся ΠΏΠ΅Ρ€Π²ΠΎΠ½Π°Ρ‡Π°Π»ΡŒΠ½Ρ‹ΠΉ Ρ€Π°Π·ΠΌΠ΅Ρ€ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠΈ (ΡˆΠΈΡ€ΠΈΠ½Π° * высота).

3. ΠšΠΎΡΡ„Ρ„ΠΈΡ†ΠΈΠ΅Π½Ρ‚ сТатия получаСтся Π΄Π΅Π»Π΅Π½ΠΈΠ΅ΠΌ ΠΏΠ΅Ρ€Π²ΠΎΠ½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ Ρ€Π°Π·ΠΌΠ΅Ρ€Π° ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠΈ Π½Π° Ρ€Π°Π·ΠΌΠ΅Ρ€ сТатой ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠΈ ΠŸΠ΅Ρ€Π΅Π΄ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡Π΅ΠΉ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ сТимаСтся. Π’Π°ΠΆΠ½ΠΎ Π·Π½Π°Ρ‚ΡŒ ΡΡ‚Π΅ΠΏΠ΅Π½ΡŒ сТатия изобраТСния, вСдь Π½Π° ΡΠΆΠ°Ρ‚ΠΈΠ΅ ΡƒΡ…ΠΎΠ΄ΠΈΡ‚ врСмя, ΠΈ ΠΏΡ€ΠΈ Π½Π΅Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ стСпСни сТатия, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ быстрСй Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ Π½Π΅ ΡΠΆΠΈΠΌΠ°Ρ. Или Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΈΡΠΊΠ°Ρ‚ΡŒ Π΄Ρ€ΡƒΠ³ΠΎΠΉ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ сТатия, ΠΎΠ±Π»Π°Π΄Π°ΡŽΡ‰ΠΈΠΉ Π»ΡƒΡ‡ΡˆΠΈΠΌ ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠ΅ΠΌ ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ ΠΊ ΡΡ‚Π΅ΠΏΠ΅Π½ΠΈ сТатия.

Π‘Ρ‚Π΅ΠΏΠ΅Π½ΡŒ сТатия Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° LZW сильно зависит ΠΎΡ‚ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΡ, поэтому тСсты ΠΏΡ€ΠΎΠ²ΠΎΠ΄ΠΈΠ»ΠΈΡΡŒ с Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹ΠΌΠΈ изобраТСниями, ΠΈ Π·Π°Ρ‚Π΅ΠΌ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ усрСднялся. ΠšΡ€ΠΎΠΌΠ΅ Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ Π½Π° Π΄ΠΈΠ°Π³Ρ€Π°ΠΌΠΌΠ΅ ΡƒΠΊΠ°Π·Π°Π½Ρ‹ Ρ€Π°Π·ΠΌΠ΅Ρ€Ρ‹ изобраТСния.

ΠŸΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ вСсь тСкст
Π—Π°ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ Ρ„ΠΎΡ€ΠΌΡƒ Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ Ρ€Π°Π±ΠΎΡ‚ΠΎΠΉ