Π§ΠΈΡ‚Π°ΠΉΡ‚Π΅ ΠΊΠ½ΠΈΠ³ΠΈ ΠΎΠ½Π»Π°ΠΉΠ½ Π½Π° Bookidrom.ru! БСсплатныС ΠΊΠ½ΠΈΠ³ΠΈ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΊΠ»ΠΈΠΊΠ΅

Π§ΠΈΡ‚Π°Ρ‚ΡŒ ΠΎΠ½Π»Π°ΠΉΠ½ Β«UNIX: Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° сСтСвых ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉΒ». Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Π° 45

Автор Уильям БтивСнс

7. Π§Ρ‚ΠΎ ΠΏΡ€ΠΎΠΈΠ·ΠΎΠΉΠ΄Π΅Ρ‚ Π½Π° рис. 5.5, Ссли IP-адрСс ΡƒΠ·Π»Π° сСрвСра, Π·Π°Π΄Π°Π½Π½Ρ‹ΠΉ ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΎΠΌ ΠΏΡ€ΠΈ Π²Ρ‹Π·ΠΎΠ²Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ connect, являСтся IP-адрСсом, связанным с ΠΊΡ€Π°ΠΉΠ½ΠΈΠΌ ΠΏΡ€Π°Π²Ρ‹ΠΌ ΠΊΠ°Π½Π°Π»ΡŒΠ½Ρ‹ΠΌ ΡƒΡ€ΠΎΠ²Π½Π΅ΠΌ Π½Π° сторонС сСрвСра, Π° Π½Π΅ IP-адрСсом, связанным с ΠΊΡ€Π°ΠΉΠ½ΠΈΠΌ Π»Π΅Π²Ρ‹ΠΌ ΠΊΠ°Π½Π°Π»ΡŒΠ½Ρ‹ΠΌ ΡƒΡ€ΠΎΠ²Π½Π΅ΠΌ?

8. Π’ нашСм ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ эхо-сСрвСра, ΠΎΡΡƒΡ‰Π΅ΡΡ‚Π²Π»ΡΡŽΡ‰Π΅Π³ΠΎ слоТСниС Π΄Π²ΡƒΡ… Ρ†Π΅Π»Ρ‹Ρ… чисСл (см. листинг 5.14), ΠΊΠΎΠ³Π΄Π° ΠΊΠ»ΠΈΠ΅Π½Ρ‚ ΠΈ сСрвСр ΠΏΡ€ΠΈΠ½Π°Π΄Π»Π΅ΠΆΠ°Ρ‚ систСмам с Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹ΠΌ порядком Π±Π°ΠΉΡ‚ΠΎΠ², для Π½Π΅Π±ΠΎΠ»ΡŒΡˆΠΈΡ… ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… чисСл получаСтся ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹ΠΉ ΠΎΡ‚Π²Π΅Ρ‚, Π½ΠΎ для Π½Π΅Π±ΠΎΠ»ΡŒΡˆΠΈΡ… ΠΎΡ‚Ρ€ΠΈΡ†Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… чисСл ΠΎΡ‚Π²Π΅Ρ‚ Π½Π΅Π²Π΅Ρ€Π΅Π½. ΠŸΠΎΡ‡Π΅ΠΌΡƒ? (Подсказка: нарисуйтС схСму ΠΎΠ±ΠΌΠ΅Π½Π° значСниями Ρ‡Π΅Ρ€Π΅Π· сокСт, Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½ΡƒΡŽ рис. 3.4.)

9. Π’ нашСм ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ Π² листингС 5.13 ΠΈ 5.14 ΠΌΠΎΠΆΠ΅ΠΌ Π»ΠΈ ΠΌΡ‹ Ρ€Π΅ΡˆΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ, ΡΠ²ΡΠ·Π°Π½Π½ΡƒΡŽ с Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹ΠΌ порядком Π±Π°ΠΉΡ‚ΠΎΠ² Π½Π° сторонС ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π° ΠΈ Π½Π° сторонС сСрвСра, Ссли ΠΊΠ»ΠΈΠ΅Π½Ρ‚ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΠ΅Ρ‚ Π΄Π²Π° Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π° Π² сСтСвой порядок Π±Π°ΠΉΡ‚ΠΎΠ², ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ htonl, Π° сСрвСр Π·Π°Ρ‚Π΅ΠΌ Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ ntohl для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π° ΠΏΠ΅Ρ€Π΅Π΄ слоТСниСм ΠΈ выполняСт Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½ΠΎΠ΅ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π°?

10. Π§Ρ‚ΠΎ ΠΏΡ€ΠΎΠΈΠ·ΠΎΠΉΠ΄Π΅Ρ‚ Π² листингС 5.13 ΠΈ 5.14, Ссли Π² качСствС ΡƒΠ·Π»Π° ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€ SPARC, Π³Π΄Π΅ Π΄Π°Π½Π½Ρ‹Π΅ Ρ‚ΠΈΠΏΠ° long Π·Π°Π½ΠΈΠΌΠ°ΡŽΡ‚ 32 Π±ΠΈΡ‚Π°, Π° Π² качСствС ΡƒΠ·Π»Π° сСрвСра β€” Digital Alpha, Π³Π΄Π΅ Π΄Π°Π½Π½Ρ‹Π΅ Ρ‚ΠΈΠΏΠ° long Π·Π°Π½ΠΈΠΌΠ°ΡŽΡ‚ 64 Π±ΠΈΡ‚Π°? Π˜Π·ΠΌΠ΅Π½ΠΈΡ‚ΡΡ Π»ΠΈ Ρ‡Ρ‚ΠΎ-Π»ΠΈΠ±ΠΎ, Ссли ΠΊΠ»ΠΈΠ΅Π½Ρ‚ ΠΈ сСрвСр ΠΏΠΎΠΌΠ΅Π½ΡΡŽΡ‚ΡΡ мСстами?

11. ΠΠ° рис. 5.5 ΡƒΠΊΠ°Π·Π°Π½ΠΎ, Ρ‡Ρ‚ΠΎ IP-адрСс ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π° выбираСтся IP Π½Π° основС ΠΌΠ°Ρ€ΡˆΡ€ΡƒΡ‚ΠΈΠ·Π°Ρ†ΠΈΠΈ. Π§Ρ‚ΠΎ это Π·Π½Π°Ρ‡ΠΈΡ‚?

Π“Π»Π°Π²Π° 6

ΠœΡƒΠ»ΡŒΡ‚ΠΈΠΏΠ»Π΅ΠΊΡΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π²Π²ΠΎΠ΄Π°-Π²Ρ‹Π²ΠΎΠ΄Π°: Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ select ΠΈ poll

6.1. Π’Π²Π΅Π΄Π΅Π½ΠΈΠ΅

Π’ Ρ€Π°Π·Π΄Π΅Π»Π΅ 5.12 ΠΌΡ‹ Π²ΠΈΠ΄Π΅Π»ΠΈ, Ρ‡Ρ‚ΠΎ наш TCP-ΠΊΠ»ΠΈΠ΅Π½Ρ‚ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅Ρ‚ Π΄Π²Π° Π²Ρ…ΠΎΠ΄Π½Ρ‹Ρ… ΠΏΠΎΡ‚ΠΎΠΊΠ° ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ: стандартный ΠΏΠΎΡ‚ΠΎΠΊ Π²Π²ΠΎΠ΄Π° ΠΈ сокСт TCP. ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΠ°, с ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ ΠΌΡ‹ ΡΡ‚ΠΎΠ»ΠΊΠ½ΡƒΠ»ΠΈΡΡŒ, состояла Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΏΠΎΠΊΠ° ΠΊΠ»ΠΈΠ΅Π½Ρ‚ Π±Ρ‹Π» Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²Π°Π½ Π² Π²Ρ‹Π·ΠΎΠ²Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ fgets (Ρ‡Ρ‚Π΅Π½ΠΈΠ΅ ΠΈΠ· стандартного ΠΏΠΎΡ‚ΠΎΠΊΠ° Π²Π²ΠΎΠ΄Π°), процСсс сСрвСра ΠΌΠΎΠ³ Π±Ρ‹Ρ‚ΡŒ ΡƒΠ½ΠΈΡ‡Ρ‚ΠΎΠΆΠ΅Π½. TCP сСрвСра ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎ отправляСт сСгмСнт FIN ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Ρƒ TCP ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°, Π½ΠΎ ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ процСсс ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π° Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²Π°Π½ ΠΏΡ€ΠΈ Ρ‡Ρ‚Π΅Π½ΠΈΠΈ ΠΈΠ· стандартного ΠΏΠΎΡ‚ΠΎΠΊΠ° Π²Π²ΠΎΠ΄Π°, ΠΎΠ½ Π½Π΅ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ ΠΏΡ€ΠΈΠ·Π½Π°ΠΊ ΠΊΠΎΠ½Ρ†Π° Ρ„Π°ΠΉΠ»Π°, ΠΏΠΎΠΊΠ° Π½Π΅ считаСт Π΄Π°Π½Π½Ρ‹Π΅ ΠΈΠ· сокСта (Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΏΠΎΠ·ΠΆΠ΅). Нам Π½ΡƒΠΆΠ½Π° Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΡΠΎΠΎΠ±Ρ‰ΠΈΡ‚ΡŒ ядру, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ Ρ…ΠΎΡ‚ΠΈΠΌ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ увСдомлСния ΠΎ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ выполняСтся ΠΎΠ΄Π½ΠΎ ΠΈΠ»ΠΈ нСсколько условий для Π²Π²ΠΎΠ΄Π°-Π²Ρ‹Π²ΠΎΠ΄Π° (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΏΡ€ΠΈΡΡƒΡ‚ΡΡ‚Π²ΡƒΡŽΡ‚ Π΄Π°Π½Π½Ρ‹Π΅ для считывания ΠΈΠ»ΠΈ дСскриптор Π³ΠΎΡ‚ΠΎΠ² ΠΊ записи Π½ΠΎΠ²Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ…). Π­Ρ‚Π° Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ называСтся ΠΌΡƒΠ»ΡŒΡ‚ΠΈΠΏΠ»Π΅ΠΊΡΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ (multiplexing) Π²Π²ΠΎΠ΄Π°-Π²Ρ‹Π²ΠΎΠ΄Π° ΠΈ обСспСчиваСтся функциями select ΠΈ poll. ΠœΡ‹ рассмотрим Ρ‚Π°ΠΊΠΆΠ΅ Π±ΠΎΠ»Π΅Π΅ Π½ΠΎΠ²Ρ‹ΠΉ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ select, входящСй Π² стандарт POSIX, Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΡ‹ΠΉ pselect.

ΠŸΠ Π˜ΠœΠ•Π§ΠΠΠ˜Π•

Π’ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… систСмах ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‚ΡΡ Π±ΠΎΠ»Π΅Π΅ ΠΌΠΎΡ‰Π½Ρ‹Π΅ срСдства оТидания событий. Одним ΠΈΠ· ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠΎΠ² являСтся устройство опроса (poll device), ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΏΠΎ-Ρ€Π°Π·Π½ΠΎΠΌΡƒ рСализуСтся Ρ€Π°Π·Π½Ρ‹ΠΌΠΈ производитСлями. Π­Ρ‚ΠΎΡ‚ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ описываСтся Π² Π³Π»Π°Π²Π΅ 14.

ΠœΡƒΠ»ΡŒΡ‚ΠΈΠΏΠ»Π΅ΠΊΡΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π²Π²ΠΎΠ΄Π°-Π²Ρ‹Π²ΠΎΠ΄Π° ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ сСтСвыми прилоТСниями Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… случаях:

β–  ΠšΠΎΠ³Π΄Π° ΠΊΠ»ΠΈΠ΅Π½Ρ‚ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅Ρ‚ мноТСство дСскрипторов (ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ ΠΈΠ½Ρ‚Π΅Ρ€Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹ΠΉ Π²Π²ΠΎΠ΄ ΠΈ сСтСвой сокСт), Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΌΡƒΠ»ΡŒΡ‚ΠΈΠΏΠ»Π΅ΠΊΡΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π²Π²ΠΎΠ΄Π°- Π²Ρ‹Π²ΠΎΠ΄Π°. Π­Ρ‚ΠΎ сцСнарий, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΡ‹ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‡Ρ‚ΠΎ рассмотрСли.

β–  Π’ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, хотя это ΠΈ Ρ€Π΅Π΄ΠΊΠΈΠΉ случай, Ρ‡Ρ‚ΠΎ ΠΊΠ»ΠΈΠ΅Π½Ρ‚ ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅Ρ‚ мноТСство сокСтов. Π’Π°ΠΊΠΎΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΌΡ‹ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅ΠΌ Π² Ρ€Π°Π·Π΄Π΅Π»Π΅ 16.5 ΠΏΡ€ΠΈ использовании Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ select Π² контСкстС Π²Π΅Π±-ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°.

β–  Π•сли сСрвСр TCP ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅Ρ‚ ΠΈ ΠΏΡ€ΠΎΡΠ»ΡƒΡˆΠΈΠ²Π°Π΅ΠΌΡ‹ΠΉ сокСт, ΠΈ присоСдинСнныС сокСты, ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΌΡƒΠ»ΡŒΡ‚ΠΈΠΏΠ»Π΅ΠΊΡΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π²Π²ΠΎΠ΄Π°-Π²Ρ‹Π²ΠΎΠ΄Π°, ΠΊΠ°ΠΊ это ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π² Ρ€Π°Π·Π΄Π΅Π»Π΅ 6.8.

β–  Π•сли сСрвСр Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ ΠΈ с TCP, ΠΈ с UDP, ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ Ρ‚Π°ΠΊΠΆΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΌΡƒΠ»ΡŒΡ‚ΠΈΠΏΠ»Π΅ΠΊΡΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π²Π²ΠΎΠ΄Π°-Π²Ρ‹Π²ΠΎΠ΄Π°. Π’Π°ΠΊΠΎΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΌΡ‹ ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΠΌ Π² Ρ€Π°Π·Π΄Π΅Π»Π΅ 8.15.

β–  Π•сли сСрвСр ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅Ρ‚ нСсколько слуТб ΠΈ, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, нСсколько ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»ΠΎΠ² (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π΄Π΅ΠΌΠΎΠ½ inetd, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ описан Π² Ρ€Π°Π·Π΄Π΅Π»Π΅ 12.5), ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΌΡƒΠ»ΡŒΡ‚ΠΈΠΏΠ»Π΅ΠΊΡΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π²Π²ΠΎΠ΄Π°-Π²Ρ‹Π²ΠΎΠ΄Π°.

ΠžΠ±Π»Π°ΡΡ‚ΡŒ примСнСния ΠΌΡƒΠ»ΡŒΡ‚ΠΈΠΏΠ»Π΅ΠΊΡΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡ Π²Π²ΠΎΠ΄Π°-Π²Ρ‹Π²ΠΎΠ΄Π° Π½Π΅ ограничиваСтся Ρ‚ΠΎΠ»ΡŒΠΊΠΎ сСтСвым ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ. Π›ΡŽΠ±ΠΎΠΌΡƒ Π½Π΅Ρ‚Ρ€ΠΈΠ²ΠΈΠ°Π»ΡŒΠ½ΠΎΠΌΡƒ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡŽ часто приходится ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ эту Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΡŽ.

6.2. МодСли Π²Π²ΠΎΠ΄Π°-Π²Ρ‹Π²ΠΎΠ΄Π°

ΠŸΡ€Π΅ΠΆΠ΄Π΅ Ρ‡Π΅ΠΌ Π½Π°Ρ‡Π°Ρ‚ΡŒ описаниС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ select ΠΈ poll, ΠΌΡ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒΡΡ Π½Π°Π·Π°Π΄ ΠΈ ΡƒΡΡΠ½ΠΈΡ‚ΡŒ основныС различия ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΏΡΡ‚ΡŒΡŽ модСлями Π²Π²ΠΎΠ΄Π°-Π²Ρ‹Π²ΠΎΠ΄Π°, доступными Π½Π°ΠΌ Π² Unix:

β–  Π±Π»ΠΎΠΊΠΈΡ€ΡƒΠ΅ΠΌΡ‹ΠΉ Π²Π²ΠΎΠ΄-Π²Ρ‹Π²ΠΎΠ΄;

β–  Π½Π΅Π±Π»ΠΎΠΊΠΈΡ€ΡƒΠ΅ΠΌΡ‹ΠΉ Π²Π²ΠΎΠ΄-Π²Ρ‹Π²ΠΎΠ΄;

β–  ΠΌΡƒΠ»ΡŒΡ‚иплСксированиС Π²Π²ΠΎΠ΄Π°-Π²Ρ‹Π²ΠΎΠ΄Π° (Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ select ΠΈ poll);

β–  Π²Π²ΠΎΠ΄-Π²Ρ‹Π²ΠΎΠ΄, управляСмый сигналом (сигнал SIGIO);

β–  Π°ΡΠΈΠ½Ρ…Ρ€ΠΎΠ½Π½Ρ‹ΠΉ Π²Π²ΠΎΠ΄-Π²Ρ‹Π²ΠΎΠ΄ (Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ POSIX aio_).

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

Как Π²Ρ‹ ΡƒΠ²ΠΈΠ΄ΠΈΡ‚Π΅ Π² ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°Ρ… этого Ρ€Π°Π·Π΄Π΅Π»Π°, ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ Ρ€Π°Π·Π»ΠΈΡ‡Π°ΡŽΡ‚ΡΡ Π΄Π²Π΅ Ρ„Π°Π·Ρ‹ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ Π²Π²ΠΎΠ΄Π°:

1. ΠžΠΆΠΈΠ΄Π°Π½ΠΈΠ΅ готовности Π΄Π°Π½Π½Ρ‹Ρ….

2. ΠšΠΎΠΏΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π΄Π°Π½Π½Ρ‹Ρ… ΠΎΡ‚ ядра процСссу.

ΠŸΠ΅Ρ€Π²Ρ‹ΠΉ шаг ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ Π²Π²ΠΎΠ΄Π° Π½Π° сокСтС ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ ΠΎΠΆΠΈΠ΄Π°Π½ΠΈΠ΅ ΠΏΡ€ΠΈΡ…ΠΎΠ΄Π° Π΄Π°Π½Π½Ρ‹Ρ… ΠΏΠΎ сСти. Когда ΠΏΠ°ΠΊΠ΅Ρ‚ ΠΏΡ€ΠΈΡ…ΠΎΠ΄ΠΈΡ‚, ΠΎΠ½ копируСтся Π² Π±ΡƒΡ„Π΅Ρ€ Π²Π½ΡƒΡ‚Ρ€ΠΈ ядра. Π’Ρ‚ΠΎΡ€ΠΎΠΉ шаг β€” ΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ этих Π΄Π°Π½Π½Ρ‹Ρ… ΠΈΠ· Π±ΡƒΡ„Π΅Ρ€Π° ядра Π² Π±ΡƒΡ„Π΅Ρ€ прилоТСния.

МодСль Π±Π»ΠΎΠΊΠΈΡ€ΡƒΠ΅ΠΌΠΎΠ³ΠΎ Π²Π²ΠΎΠ΄Π°-Π²Ρ‹Π²ΠΎΠ΄Π°

НаиболСС распространСнной модСлью Π²Π²ΠΎΠ΄Π°-Π²Ρ‹Π²ΠΎΠ΄Π° являСтся модСль Π±Π»ΠΎΠΊΠΈΡ€ΡƒΠ΅ΠΌΠΎΠ³ΠΎ Π²Π²ΠΎΠ΄Π°-Π²Ρ‹Π²ΠΎΠ΄Π°, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ ΠΌΡ‹ использовали для всСх ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΡ… ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠ². По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ всС сокСты ΡΠ²Π»ΡΡŽΡ‚ΡΡ Π±Π»ΠΎΠΊΠΈΡ€ΡƒΠ΅ΠΌΡ‹ΠΌΠΈ. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Π² Π½Π°ΡˆΠΈΡ… ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°Ρ… сокСт Π΄Π΅ΠΉΡ‚Π°Π³Ρ€Π°ΠΌΠΌ, ΠΌΡ‹ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ сцСнарий, ΠΏΠΎΠΊΠ°Π·Π°Π½Π½Ρ‹ΠΉ Π½Π° рис. 6.1.

Рис. 6.1. МодСль Π±Π»ΠΎΠΊΠΈΡ€ΡƒΠ΅ΠΌΠΎΠ³ΠΎ Π²Π²ΠΎΠ΄Π°-Π²Ρ‹Π²ΠΎΠ΄Π°

Π’ этом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ вмСсто TCP ΠΌΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ UDP, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Π² случаС UDP ΠΏΡ€ΠΈΠ·Π½Π°ΠΊ готовности Π΄Π°Π½Π½Ρ‹Ρ… ΠΎΡ‡Π΅Π½ΡŒ прост: ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π° вся Π΄Π΅ΠΉΡ‚Π°Π³Ρ€Π°ΠΌΠΌΠ° ΠΈΠ»ΠΈ Π½Π΅Ρ‚. Π’ случаС TCP ΠΎΠ½ становится слоТнСС, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ приходится ΡƒΡ‡ΠΈΡ‚Ρ‹Π²Π°Ρ‚ΡŒ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΉ объСм Π΄Π°Π½Π½Ρ‹Ρ… Π² сокСтС (low water-mark).

Π’ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°Ρ… этого Ρ€Π°Π·Π΄Π΅Π»Π° ΠΌΡ‹ Π³ΠΎΠ²ΠΎΡ€ΠΈΠΌ ΠΎ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ recvfrom ΠΊΠ°ΠΊ ΠΎ систСмном Π²Ρ‹Π·ΠΎΠ²Π΅, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Π΄Π΅Π»Π°Π΅ΠΌ Ρ€Π°Π·Π»ΠΈΡ‡ΠΈΠ΅ ΠΌΠ΅ΠΆΠ΄Ρƒ нашим ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌ ΠΈ ядром. Π’Π½Π΅ зависимости ΠΎΡ‚ Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π° функция recvfrom (ΠΊΠ°ΠΊ систСмный Π²Ρ‹Π·ΠΎΠ² Π² ядрС, происходящСм ΠΎΡ‚ Π‘Π΅Ρ€ΠΊΠ»ΠΈ, ΠΈΠ»ΠΈ ΠΊΠ°ΠΊ функция, Π°ΠΊΡ‚ΠΈΠ²ΠΈΠ·ΠΈΡ€ΡƒΡŽΡ‰Π°Ρ систСмный Π²Ρ‹Π·ΠΎΠ² getmsg Π² ядрС System V), ΠΎΠ½Π° ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ выполняСт ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ ΠΌΠ΅ΠΆΠ΄Ρƒ Ρ€Π°Π±ΠΎΡ‚ΠΎΠΉ Π² Ρ€Π΅ΠΆΠΈΠΌΠ΅ прилоТСния ΠΈ Ρ€Π°Π±ΠΎΡ‚ΠΎΠΉ Π² Ρ€Π΅ΠΆΠΈΠΌΠ΅ ядра, Π·Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ Ρ‡Π΅Ρ€Π΅Π· ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΉ ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΎΠΊ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ слСдуСт Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π΅Π½ΠΈΠ΅ Π² Ρ€Π΅ΠΆΠΈΠΌ прилоТСния.

На рис. 6.1 процСсс Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ recvfrom, ΠΈ систСмный Π²Ρ‹Π·ΠΎΠ² Π½Π΅ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅, ΠΏΠΎΠΊΠ° Π΄Π΅ΠΉΡ‚Π°Π³Ρ€Π°ΠΌΠΌΠ° Π½Π΅ ΠΏΡ€ΠΈΠ΄Π΅Ρ‚ ΠΈ Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ скопирована Π² Π±ΡƒΡ„Π΅Ρ€ прилоТСния Π»ΠΈΠ±ΠΎ ΠΏΠΎΠΊΠ° Π½Π΅ ΠΏΡ€ΠΎΠΈΠ·ΠΎΠΉΠ΄Π΅Ρ‚ ошибка. НаиболСС типичная ошибка β€” это ΠΏΡ€Π΅Ρ€Ρ‹Π²Π°Π½ΠΈΠ΅ систСмного Π²Ρ‹Π·ΠΎΠ²Π° сигналом, ΠΎ Ρ‡Π΅ΠΌ Ρ€Π°ΡΡΠΊΠ°Π·Ρ‹Π²Π°Π»ΠΎΡΡŒ Π² Ρ€Π°Π·Π΄Π΅Π»Π΅ 5.9. ΠŸΡ€ΠΎΡ†Π΅ΡΡ Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²Π°Π½ Π² Ρ‚Π΅Ρ‡Π΅Π½ΠΈΠ΅ всСго Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ с ΠΌΠΎΠΌΠ΅Π½Ρ‚Π°, ΠΊΠΎΠ³Π΄Π° ΠΎΠ½ Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ recvfrom, Π΄ΠΎ ΠΌΠΎΠΌΠ΅Π½Ρ‚Π°, ΠΊΠΎΠ³Π΄Π° эта функция Π·Π°Π²Π΅Ρ€ΡˆΠ°Π΅Ρ‚ΡΡ. Когда функция recvfrom выполняСтся Π½ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½ΠΎ, нашС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅Ρ‚ Π΄Π΅ΠΉΡ‚Π°Π³Ρ€Π°ΠΌΠΌΡƒ.

МодСль Π½Π΅Π±Π»ΠΎΠΊΠΈΡ€ΡƒΠ΅ΠΌΠΎΠ³ΠΎ Π²Π²ΠΎΠ΄Π°-Π²Ρ‹Π²ΠΎΠ΄Π°

Когда ΠΌΡ‹ опрСдСляСм сокСт ΠΊΠ°ΠΊ Π½Π΅Π±Π»ΠΎΠΊΠΈΡ€ΡƒΠ΅ΠΌΡ‹ΠΉ, ΠΌΡ‹ Ρ‚Π΅ΠΌ самым сообщаСм ядру ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅: Β«ΠΊΠΎΠ³Π΄Π° Π·Π°ΠΏΡ€Π°ΡˆΠΈΠ²Π°Π΅ΠΌΠ°Ρ Π½Π°ΠΌΠΈ опСрация Π²Π²ΠΎΠ΄Π°-Π²Ρ‹Π²ΠΎΠ΄Π° Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½Π° Π±Π΅Π· ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄Π° процСсса Π² состояниС оТидания, слСдуСт Π½Π΅ ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄ΠΈΡ‚ΡŒ процСсс Π² состояниС оТидания, Π° Π²ΠΎΠ·Π²Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ ΠΎΡˆΠΈΠ±ΠΊΡƒΒ». НСблокируСмый Π²Π²ΠΎΠ΄-Π²Ρ‹Π²ΠΎΠ΄ ΠΌΡ‹ описываСм ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ Π² Π³Π»Π°Π²Π΅ 16, Π° Π½Π° рис. 6.2 лишь дСмонстрируСм Π΅Π³ΠΎ свойства.

Рис. 6.2. МодСль Π½Π΅Π±Π»ΠΎΠΊΠΈΡ€ΡƒΠ΅ΠΌΠΎΠ³ΠΎ Π²Π²ΠΎΠ΄Π°-Π²Ρ‹Π²ΠΎΠ΄Π°

Π’ ΠΏΠ΅Ρ€Π²Ρ‹Ρ… Ρ‚Ρ€Π΅Ρ… случаях Π²Ρ‹Π·ΠΎΠ²Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ recvfrom Π΄Π°Π½Π½Ρ‹Ρ… для возвращСния Π½Π΅Ρ‚, поэтому ядро Π½Π΅ΠΌΠ΅Π΄Π»Π΅Π½Π½ΠΎ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ΠΎΡˆΠΈΠ±ΠΊΡƒ EWOULDBLOCK. Когда ΠΌΡ‹ Π² Ρ‡Π΅Ρ‚Π²Π΅Ρ€Ρ‚Ρ‹ΠΉ Ρ€Π°Π· Π²Ρ‹Π·Ρ‹Π²Π°Π΅ΠΌ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ recvfrom, Π΄Π΅ΠΉΡ‚Π°Π³Ρ€Π°ΠΌΠΌΠ° Π³ΠΎΡ‚ΠΎΠ²Π°, поэтому ΠΎΠ½Π° копируСтся Π² Π±ΡƒΡ„Π΅Ρ€ прилоТСния ΠΈ функция recvfrom ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎ Π·Π°Π²Π΅Ρ€ΡˆΠ°Π΅Ρ‚ΡΡ. Π—Π°Ρ‚Π΅ΠΌ ΠΌΡ‹ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅ΠΌ Π΄Π°Π½Π½Ρ‹Π΅.

Π’Π°ΠΊΠΎΠΉ процСсс, ΠΊΠΎΠ³Π΄Π° ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ находится Π² Ρ†ΠΈΠΊΠ»Π΅ ΠΈ Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ recvfrom Π½Π° Π½Π΅Π±Π»ΠΎΠΊΠΈΡ€ΡƒΠ΅ΠΌΠΎΠΌ дСскрипторС, называСтся опросом (polling). ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ ΠΎΠΏΡ€Π°ΡˆΠΈΠ²Π°Π΅Ρ‚ ядро, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ какая-Ρ‚ΠΎ опСрация ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½Π°. Часто это пустая Ρ‚Ρ€Π°Ρ‚Π° Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ процСссора, Π½ΠΎ такая модСль всС ΠΆΠ΅ ΠΈΠ½ΠΎΠ³Π΄Π° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ, ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ Π² спСциализированных систСмах.

МодСль ΠΌΡƒΠ»ΡŒΡ‚ΠΈΠΏΠ»Π΅ΠΊΡΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡ Π²Π²ΠΎΠ΄Π°-Π²Ρ‹Π²ΠΎΠ΄Π°

Π’ случаС ΠΌΡƒΠ»ΡŒΡ‚ΠΈΠΏΠ»Π΅ΠΊΡΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡ Π²Π²ΠΎΠ΄Π°-Π²Ρ‹Π²ΠΎΠ΄Π° ΠΌΡ‹ Π²Ρ‹Π·Ρ‹Π²Π°Π΅ΠΌ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ select ΠΈΠ»ΠΈ poll, ΠΈ Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ происходит Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΈΠ· этих Π΄Π²ΡƒΡ… систСмных Π²Ρ‹Π·ΠΎΠ²ΠΎΠ², Π° Π½Π΅ Π² Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΌ систСмном Π²Ρ‹Π·ΠΎΠ²Π΅ Π²Π²ΠΎΠ΄Π°-Π²Ρ‹Π²ΠΎΠ΄Π°. На рис. 6.3 обобщаСтся модСль ΠΌΡƒΠ»ΡŒΡ‚ΠΈΠΏΠ»Π΅ΠΊΡΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡ Π²Π²ΠΎΠ΄Π°-Π²Ρ‹Π²ΠΎΠ΄Π°.

Рис. 6.3. МодСль ΠΌΡƒΠ»ΡŒΡ‚ΠΈΠΏΠ»Π΅ΠΊΡΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡ Π²Π²ΠΎΠ΄Π°-Π²Ρ‹Π²ΠΎΠ΄Π°

ΠŸΡ€ΠΎΡ†Π΅ΡΡ блокируСтся Π² Π²Ρ‹Π·ΠΎΠ²Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ select, оТидая, ΠΊΠΎΠ³Π΄Π° Π΄Π΅ΠΉΡ‚Π°Π³Ρ€Π°ΠΌΠΌΠ½Ρ‹ΠΉ сокСт Π±ΡƒΠ΄Π΅Ρ‚ Π³ΠΎΡ‚ΠΎΠ² для чтСния. Когда функция select Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ сообщСниС, Ρ‡Ρ‚ΠΎ сокСт Π³ΠΎΡ‚ΠΎΠ² для чтСния, процСсс Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ recvfrom, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π΄Π΅ΠΉΡ‚Π°Π³Ρ€Π°ΠΌΠΌΡƒ Π² Π±ΡƒΡ„Π΅Ρ€ прилоТСния.