36-42 ΠΡ Π²ΠΎΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅ΠΌ ΡΠ»Π°Π³ΠΈ, Π·Π°Π΄Π°ΡΡΠΈΠ΅ ΡΡΠ°ΡΡΡ ΡΠ°ΠΉΠ»Π°, ΠΈ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΠΌΡΡ. ΠΡΠ»ΠΈ Π½Π°ΡΠ° ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ errno ΠΈΠΌΠ΅Π΅Ρ Π½Π΅Π½ΡΠ»Π΅Π²ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Π² ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ΅ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΡΡΠ½ΠΊΡΠΈΠΈ getsockopt, ΡΡΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Ρ ΡΠ°Π½ΠΈΡΡΡ Π² ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ errno, ΠΈ ΡΡΠ½ΠΊΡΠΈΡ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ -1.
ΠΠ°ΠΊ ΠΌΡ ΡΠΊΠ°Π·Π°Π»ΠΈ ΡΠ°Π½Π΅Π΅, ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ ΠΏΠ΅ΡΠ΅Π½ΠΎΡΠΈΠΌΠΎΡΡΠΈ Π΄Π»Ρ ΡΡΠ½ΠΊΡΠΈΠΈ connect ΡΠ²ΡΠ·Π°Π½Ρ Ρ ΡΠ°Π·Π»ΠΈΡΠ½ΡΠΌΠΈ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡΠΌΠΈ ΡΠΎΠΊΠ΅ΡΠΎΠ² ΠΈ ΠΎΡΠΊΠ»ΡΡΠ΅Π½ΠΈΡ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠΈ. ΠΠΎ-ΠΏΠ΅ΡΠ²ΡΡ , Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, ΡΡΠΎ ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ Π·Π°Π²Π΅ΡΡΠΈΡΡΡ ΠΈ ΠΏΡΠΈΠ΄ΡΡ Π΄Π°Π½Π½ΡΠ΅ Π΄Π»Ρ ΡΠΎΠ±Π΅ΡΠ΅Π΄Π½ΠΈΠΊΠ° Π΄ΠΎ ΡΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ Π±ΡΠ΄Π΅Ρ Π²ΡΠ·Π²Π°Π½Π° ΡΡΠ½ΠΊΡΠΈΡ select. Π ΡΡΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ ΡΠΎΠΊΠ΅Ρ Π±ΡΠ΄Π΅Ρ Π³ΠΎΡΠΎΠ² Π΄Π»Ρ ΡΡΠ΅Π½ΠΈΡ ΠΈ Π΄Π»Ρ Π·Π°ΠΏΠΈΡΠΈ ΠΏΡΠΈ ΡΡΠΏΠ΅ΡΠ½ΠΎΠΌ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ, ΠΊΠ°ΠΊ ΠΈ ΠΏΡΠΈ Π½Π΅ΡΠ΄Π°ΡΠ½ΠΎΠΌ ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½Π½ΠΎΠΌ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠΈ. Π Π½Π°ΡΠ΅ΠΌ ΠΊΠΎΠ΄Π΅, ΠΏΠΎΠΊΠ°Π·Π°Π½Π½ΠΎΠΌ Π² Π»ΠΈΡΡΠΈΠ½Π³Π΅ 16.7, ΡΡΠΎΡ ΡΡΠ΅Π½Π°ΡΠΈΠΉ ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°Π΅ΡΡΡ ΠΏΡΠΈ ΠΏΠΎΠΌΠΎΡΠΈ Π²ΡΠ·ΠΎΠ²Π° ΡΡΠ½ΠΊΡΠΈΠΈ getsockopt ΠΈ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ Π½Π° Π½Π°Π»ΠΈΡΠΈΠ΅ ΠΎΡΠΈΠ±ΠΊΠΈ, ΠΎΠΆΠΈΠ΄Π°ΡΡΠ΅ΠΉ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ, Π΄Π»Ρ ΡΠΎΠΊΠ΅ΡΠ°.
ΠΠΎ-Π²ΡΠΎΡΡΡ , ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° Π² ΡΠΎΠΌ, ΠΊΠ°ΠΊ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ, ΡΡΠΏΠ΅ΡΠ½ΠΎ Π·Π°Π²Π΅ΡΡΠΈΠ»ΠΎΡΡ ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ ΠΈΠ»ΠΈ Π½Π΅Ρ, Π΅ΡΠ»ΠΈ ΠΌΡ Π½Π΅ ΠΌΠΎΠΆΠ΅ΠΌ ΡΡΠΈΡΠ°ΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ Π·Π°ΠΏΠΈΡΠΈ Π΅Π΄ΠΈΠ½ΡΡΠ²Π΅Π½Π½ΡΠΌ ΡΠΊΠ°Π·Π°Π½ΠΈΠ΅ΠΌ Π½Π° ΡΡΠΏΠ΅ΡΠ½ΠΎΠ΅ ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ. Π Usenet ΠΏΡΠ΅Π΄Π»Π°Π³Π°Π»ΠΎΡΡ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ ΡΠ΅ΡΠ΅Π½ΠΈΠΉ ΡΡΠΎΠΉ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ, ΠΊΠΎΡΠΎΡΡΠ΅ Π·Π°ΠΌΠ΅Π½ΡΡΡ Π½Π°Ρ Π²ΡΠ·ΠΎΠ² ΡΡΠ½ΠΊΡΠΈΠΈ getsockopt Π² Π»ΠΈΡΡΠΈΠ½Π³Π΅ 16.7:
1. ΠΡΠ·Π²Π°ΡΡ ΡΡΠ½ΠΊΡΠΈΡ getpeername Π²ΠΌΠ΅ΡΡΠΎ ΡΡΠ½ΠΊΡΠΈΠΈ getsockopt. ΠΡΠ»ΠΈ ΡΡΠΎΡ Π²ΡΠ·ΠΎΠ² ΠΎΠΊΠ°ΠΆΠ΅ΡΡΡ Π½Π΅ΡΠ΄Π°ΡΠ½ΡΠΌ ΠΈ Π²ΠΎΠ·Π²ΡΠ°ΡΠΈΡΡΡ ΠΎΡΠΈΠ±ΠΊΠ° ENOTCONN, Π·Π½Π°ΡΠΈΡ, ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠ΅ Π½Π΅ Π±ΡΠ»ΠΎ ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½ΠΎ, ΠΈ ΡΡΠΎΠ±Ρ ΠΏΠΎΠ»ΡΡΠΈΡΡ ΠΎΡΠΈΠ±ΠΊΡ, ΠΎΠΆΠΈΠ΄Π°ΡΡΡΡ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ, ΡΠ»Π΅Π΄ΡΠ΅Ρ Π²ΡΠ·Π²Π°ΡΡ Π΄Π»Ρ ΡΠΎΠΊΠ΅ΡΠ° ΡΡΠ½ΠΊΡΠΈΡ getsockopt Ρ SO_ERROR.
2. ΠΡΠ·Π²Π°ΡΡ ΡΡΠ½ΠΊΡΠΈΡ read Ρ Π½ΡΠ»Π΅Π²ΡΠΌ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ΠΌ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠ° length. ΠΡΠ»ΠΈ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ read ΠΎΠΊΠ°ΠΆΠ΅ΡΡΡ Π½Π΅ΡΠ΄Π°ΡΠ½ΡΠΌ, ΡΡΠ½ΠΊΡΠΈΡ connect Π²ΡΠΏΠΎΠ»Π½ΠΈΠ»Π°ΡΡ Π½Π΅ΡΠ΄Π°ΡΠ½ΠΎ, ΠΈ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ errno ΠΈΠ· ΡΡΠ½ΠΊΡΠΈΠΈ read ΠΏΡΠΈ ΡΡΠΎΠΌ ΡΠΊΠ°Π·ΡΠ²Π°Π΅Ρ Π½Π° ΠΏΡΠΈΡΠΈΠ½Ρ Π½Π΅ΡΠ΄Π°ΡΠ½ΠΎΠΉ ΠΏΠΎΠΏΡΡΠΊΠΈ ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½ΠΈΡ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ. ΠΡΠ»ΠΈ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠ΅ ΡΡΠΏΠ΅ΡΠ½ΠΎ ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½ΠΎ, ΡΡΠ½ΠΊΡΠΈΡ read Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ Π½ΡΠ»Ρ.
3. Π‘Π½ΠΎΠ²Π° Π²ΡΠ·Π²Π°ΡΡ ΡΡΠ½ΠΊΡΠΈΡ connect. ΠΡΠΎΡ Π²ΡΠ·ΠΎΠ² ΠΎΠΊΠ°ΠΆΠ΅ΡΡΡ Π½Π΅ΡΠ΄Π°ΡΠ½ΡΠΌ, ΠΈ Π΅ΡΠ»ΠΈ ΠΎΡΠΈΠ±ΠΊΠ° β EISCONN, ΡΠΎΠΊΠ΅Ρ ΡΠΆΠ΅ ΠΏΡΠΈΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½, Π° Π·Π½Π°ΡΠΈΡ, ΠΏΠ΅ΡΠ²ΠΎΠ΅ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠ΅ Π·Π°Π²Π΅ΡΡΠΈΠ»ΠΎΡΡ ΡΡΠΏΠ΅ΡΠ½ΠΎ.
Π ΡΠΎΠΆΠ°Π»Π΅Π½ΠΈΡ, Π½Π΅Π±Π»ΠΎΠΊΠΈΡΡΠ΅ΠΌΠ°Ρ ΡΡΠ½ΠΊΡΠΈΡ connect β ΡΡΠΎ ΠΎΠ΄Π½Π° ΠΈΠ· ΡΠ°ΠΌΡΡ ΡΠ»ΠΎΠΆΠ½ΡΡ ΠΎΠ±Π»Π°ΡΡΠ΅ΠΉ ΡΠ΅ΡΠ΅Π²ΠΎΠ³ΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ Ρ ΡΠΎΡΠΊΠΈ Π·ΡΠ΅Π½ΠΈΡ ΠΏΠ΅ΡΠ΅Π½ΠΎΡΠΈΠΌΠΎΡΡΠΈ. ΠΡΠ΄ΡΡΠ΅ Π³ΠΎΡΠΎΠ²Ρ ΠΊ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ°ΠΌ ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌΠΎΡΡΠΈ, ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎ Ρ Π±ΠΎΠ»Π΅Π΅ ΡΠ°Π½Π½ΠΈΠΌΠΈ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡΠΌΠΈ. ΠΠΎΠ»Π΅Π΅ ΠΏΡΠΎΡΡΠΎΠΉ ΡΠ΅Ρ Π½ΠΎΠ»ΠΎΠ³ΠΈΠ΅ΠΉ ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΏΠΎΡΠΎΠΊΠ° (ΡΠΌ. Π³Π»Π°Π²Ρ 26) Π΄Π»Ρ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ.
ΠΡΠ΅ΡΠ²Π°Π½Π½Π°Ρ ΡΡΠ½ΠΊΡΠΈΡ connect
Π§ΡΠΎ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ, Π΅ΡΠ»ΠΈ Π½Π°Ρ Π²ΡΠ·ΠΎΠ² ΡΡΠ½ΠΊΡΠΈΠΈ connect Π½Π° ΠΎΠ±ΡΡΠ½ΠΎΠΌ Π±Π»ΠΎΠΊΠΈΡΡΠ΅ΠΌΠΎΠΌ ΡΠΎΠΊΠ΅ΡΠ΅ ΠΏΡΠ΅ΡΡΠ²Π°Π΅ΡΡΡ, ΡΠΊΠ°ΠΆΠ΅ΠΌ, ΠΏΠ΅ΡΠ΅Ρ Π²Π°ΡΠ΅Π½Π½ΡΠΌ ΡΠΈΠ³Π½Π°Π»ΠΎΠΌ, ΠΏΡΠ΅ΠΆΠ΄Π΅ ΡΠ΅ΠΌ Π·Π°Π²Π΅ΡΡΠΈΡΡΡ ΡΡΠ΅Ρ ΡΡΠ°ΠΏΠ½ΠΎΠ΅ ΡΡΠΊΠΎΠΏΠΎΠΆΠ°ΡΠΈΠ΅ TCP? ΠΡΠ»ΠΈ ΠΏΡΠ΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΡΡ, ΡΡΠΎ ΡΡΠ½ΠΊΡΠΈΡ connect Π½Π΅ ΠΏΠ΅ΡΠ΅Π·Π°ΠΏΡΡΠΊΠ°Π΅ΡΡΡ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ, ΡΠΎ ΠΎΠ½Π° Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΠΎΡΠΈΠ±ΠΊΡ EINTR. ΠΠΎ ΠΌΡ Π½Π΅ ΠΌΠΎΠΆΠ΅ΠΌ ΡΠ½ΠΎΠ²Π° Π²ΡΠ·Π²Π°ΡΡ ΡΡΠ½ΠΊΡΠΈΡ connect, ΡΡΠΎΠ±Ρ Π΄ΠΎΠ±ΠΈΡΡΡΡ Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΡ ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½ΠΈΡ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ. ΠΡΠΎ ΠΏΡΠΈΠ²Π΅Π΄Π΅Ρ ΠΊ ΠΎΡΠΈΠ±ΠΊΠ΅ EADDRINUSE.
ΠΡΠ΅, ΡΡΠΎ ΡΡΠ΅Π±ΡΠ΅ΡΡΡ ΡΠ΄Π΅Π»Π°ΡΡ Π² ΡΡΠΎΠΌ ΡΡΠ΅Π½Π°ΡΠΈΠΈ, β Π²ΡΠ·Π²Π°ΡΡ ΡΡΠ½ΠΊΡΠΈΡ select, ΡΠ°ΠΊ, ΠΊΠ°ΠΊ ΠΌΡ Π΄Π΅Π»Π°Π»ΠΈ Π² ΡΡΠΎΠΌ ΡΠ°Π·Π΄Π΅Π»Π΅ Π΄Π»Ρ Π½Π΅Π±Π»ΠΎΠΊΠΈΡΡΠ΅ΠΌΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ connect. Π’ΠΎΠ³Π΄Π° ΡΡΠ½ΠΊΡΠΈΡ select Π·Π°Π²Π΅ΡΡΠΈΡΡΡ, Π΅ΡΠ»ΠΈ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠ΅ ΡΡΠΏΠ΅ΡΠ½ΠΎ ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅ΡΡΡ (Π΄Π΅Π»Π°Ρ ΡΠΎΠΊΠ΅Ρ Π΄ΠΎΡΡΡΠΏΠ½ΡΠΌ Π΄Π»Ρ Π·Π°ΠΏΠΈΡΠΈ) ΠΈΠ»ΠΈ Π΅ΡΠ»ΠΈ ΠΏΠΎΠΏΡΡΠΊΠ° ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ Π½Π΅ΡΠ΄Π°ΡΠ½Π° (ΡΠΎΠΊΠ΅Ρ ΡΡΠ°Π½ΠΎΠ²ΠΈΡΡΡ Π΄ΠΎΡΡΡΠΏΠ΅Π½ Π΄Π»Ρ ΡΡΠ΅Π½ΠΈΡ ΠΈ Π΄Π»Ρ Π·Π°ΠΏΠΈΡΠΈ).
16.5. ΠΠ΅Π±Π»ΠΎΠΊΠΈΡΡΠ΅ΠΌΠ°Ρ ΡΡΠ½ΠΊΡΠΈΡ connect: Π²Π΅Π±-ΠΊΠ»ΠΈΠ΅Π½Ρ
ΠΠ΅ΡΠ²ΠΎΠ΅ ΠΏΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΎΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ Π½Π΅Π±Π»ΠΎΠΊΠΈΡΡΠ΅ΠΌΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ connect ΠΎΡΠ½ΠΎΡΠΈΡΡΡ ΠΊ Π²Π΅Π±-ΠΊΠ»ΠΈΠ΅Π½ΡΡ Netscape (ΡΠΌ. ΡΠ°Π·Π΄Π΅Π» 13.4 [112]). ΠΠ»ΠΈΠ΅Π½Ρ ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅Ρ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠ΅ HTTP Ρ Π²Π΅Π±-ΡΠ΅ΡΠ²Π΅ΡΠΎΠΌ ΠΈ ΠΏΠΎΠΏΠ°Π΄Π°Π΅Ρ Π½Π° Π΄ΠΎΠΌΠ°ΡΠ½ΡΡ ΡΡΡΠ°Π½ΠΈΡΡ. ΠΠ° ΡΡΠΎΠΉ ΡΡΡΠ°Π½ΠΈΡΠ΅ ΡΠ°ΡΡΠΎ ΠΏΡΠΈΡΡΡΡΡΠ²ΡΡΡ ΡΡΡΠ»ΠΊΠΈ Π½Π° Π΄ΡΡΠ³ΠΈΠ΅ Π²Π΅Π±-ΡΡΡΠ°Π½ΠΈΡΡ. ΠΠΌΠ΅ΡΡΠΎ ΡΠΎΠ³ΠΎ ΡΡΠΎΠ±Ρ ΠΏΠΎΠ»ΡΡΠ°ΡΡ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎ ΠΏΠΎ ΠΎΠ΄Π½ΠΎΠΉ ΡΡΡΠ°Π½ΠΈΡΠ΅ Π·Π° ΠΎΠ΄ΠΈΠ½ ΡΠ°Π·, ΠΊΠ»ΠΈΠ΅Π½Ρ ΠΌΠΎΠΆΠ΅Ρ ΠΏΠΎΠ»ΡΡΠΈΡΡ ΡΡΠ°Π·Ρ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΡΡΠ°Π½ΠΈΡ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ Π½Π΅Π±Π»ΠΎΠΊΠΈΡΡΠ΅ΠΌΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ connect. ΠΠ° ΡΠΈΡ. 16.5 ΠΏΠΎΠΊΠ°Π·Π°Π½ ΠΏΡΠΈΠΌΠ΅Ρ ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½ΠΈΡ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²Π° ΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΡΠ½ΡΡ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠΉ. Π‘ΡΠ΅Π½Π°ΡΠΈΠΉ, ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½Π½ΡΠΉ ΡΠ»Π΅Π²Π°, ΠΏΠΎΠΊΠ°Π·ΡΠ²Π°Π΅Ρ Π²ΡΠ΅ ΡΡΠΈ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ, ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅ΠΌΡΠ΅ ΠΎΠ΄Π½ΠΎ Π·Π° Π΄ΡΡΠ³ΠΈΠΌ. ΠΡ ΡΡΠΈΡΠ°Π΅ΠΌ, ΡΡΠΎ ΠΏΠ΅ΡΠ²ΠΎΠ΅ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠ΅ Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ 10 Π΅Π΄ΠΈΠ½ΠΈΡ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ, Π²ΡΠΎΡΠΎΠ΅ β 15, Π° ΡΡΠ΅ΡΡΠ΅ β 4, ΡΡΠΎ Π² ΡΡΠΌΠΌΠ΅ Π΄Π°Π΅Ρ 29 Π΅Π΄ΠΈΠ½ΠΈΡ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ.
Π ΠΈΡ. 16.5. Π£ΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²Π° ΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΡΠ½ΡΡ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠΉ
Π ΡΠ΅Π½ΡΡΠ΅ ΡΠΈΡΡΠ½ΠΊΠ° ΠΏΠΎΠΊΠ°Π·Π°Π½ ΡΡΠ΅Π½Π°ΡΠΈΠΉ, ΠΏΡΠΈ ΠΊΠΎΡΠΎΡΠΎΠΌ ΠΌΡ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌ Π΄Π²Π° ΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΡΠ½ΡΡ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ. Π ΠΌΠΎΠΌΠ΅Π½Ρ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ 0 Π·Π°ΠΏΡΡΠΊΠ°ΡΡΡΡ ΠΏΠ΅ΡΠ²ΡΠ΅ Π΄Π²Π° ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ, Π° ΠΊΠΎΠ³Π΄Π° ΠΏΠ΅ΡΠ²ΠΎΠ΅ ΠΈΠ· Π½ΠΈΡ ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅ΡΡΡ, ΠΌΡ Π·Π°ΠΏΡΡΠΊΠ°Π΅ΠΌ ΡΡΠ΅ΡΡΠ΅. ΠΠ±ΡΠ΅Π΅ Π²ΡΠ΅ΠΌΡ ΡΠΎΠΊΡΠ°ΡΠΈΠ»ΠΎΡΡ ΠΏΠΎΡΡΠΈ Π²Π΄Π²ΠΎΠ΅ ΠΈ ΡΠ°Π²Π½ΠΎ 15, Π° Π½Π΅ 29 Π΅Π΄ΠΈΠ½ΠΈΡΠ°ΠΌ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ, Π½ΠΎ ΡΡΡΠΈΡΠ΅, ΡΡΠΎ ΡΡΠΎ ΠΈΠ΄Π΅Π°Π»ΡΠ½ΡΠΉ ΡΠ»ΡΡΠ°ΠΉ. ΠΡΠ»ΠΈ ΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΡΠ½ΡΠ΅ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ ΡΠΎΠ²ΠΌΠ΅ΡΡΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡ ΠΎΠ±ΡΠΈΠΉ ΠΊΠ°Π½Π°Π» ΡΠ²ΡΠ·ΠΈ (Π΄ΠΎΠΏΡΡΡΠΈΠΌ, ΠΊΠ»ΠΈΠ΅Π½Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ ΠΌΠΎΠ΄Π΅ΠΌ Π΄Π»Ρ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ Ρ ΠΠ½ΡΠ΅ΡΠ½Π΅ΡΠΎΠΌ), ΡΠΎ ΠΊΠ°ΠΆΠ΄ΠΎΠ΅ ΠΈΠ· ΡΡΠΈΡ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠΉ ΠΊΠΎΠ½ΠΊΡΡΠΈΡΡΠ΅Ρ Ρ Π΄ΡΡΠ³ΠΈΠΌΠΈ Π·Π° ΠΎΠ±Π»Π°Π΄Π°Π½ΠΈΠ΅ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½Π½ΡΠΌΠΈ ΡΠ΅ΡΡΡΡΠ°ΠΌΠΈ ΡΡΠΎΠ³ΠΎ ΠΊΠ°Π½Π°Π»Π° ΡΠ²ΡΠ·ΠΈ, ΠΈ Π²ΡΠ΅ΠΌΡ ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½ΠΈΡ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ ΠΌΠΎΠΆΠ΅Ρ Π²ΠΎΠ·ΡΠ°ΡΡΠΈ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π²ΡΠ΅ΠΌΡ 10 ΠΌΠΎΠΆΠ΅Ρ Π΄ΠΎΠΉΡΠΈ Π΄ΠΎ 15, 15 β Π΄ΠΎ 20, Π° Π²ΡΠ΅ΠΌΡ 4 ΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠ΅Π²ΡΠ°ΡΠΈΡΡΡΡ Π² 6. Π’Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅ ΠΎΠ±ΡΠ΅Π΅ Π²ΡΠ΅ΠΌΡ Π±ΡΠ΄Π΅Ρ ΡΠ°Π²Π½ΠΎ 21 Π΅Π΄ΠΈΠ½ΠΈΡΠ΅, ΡΠΎ Π΅ΡΡΡ Π²ΡΠ΅ ΡΠ°Π²Π½ΠΎ ΠΌΠ΅Π½ΡΡΠ΅, ΡΠ΅ΠΌ Π² ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΠΌ ΡΡΠ΅Π½Π°ΡΠΈΠΈ.
Π ΡΡΠ΅ΡΡΠ΅ΠΌ ΡΡΠ΅Π½Π°ΡΠΈΠΈ ΠΌΡ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌ ΡΡΠΈ ΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΡΠ½ΡΡ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ ΠΈ ΡΠ½ΠΎΠ²Π° ΡΡΠΈΡΠ°Π΅ΠΌ, ΡΡΠΎ ΡΡΠΈ ΡΡΠΈ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ Π½Π΅ ΠΌΠ΅ΡΠ°ΡΡ Π΄ΡΡΠ³ Π΄ΡΡΠ³Ρ (ΠΈΠ΄Π΅Π°Π»ΡΠ½ΡΠΉ ΡΠ»ΡΡΠ°ΠΉ). ΠΠΎ ΠΎΠ±ΡΠ΅Π΅ Π²ΡΠ΅ΠΌΡ ΠΏΡΠΈ ΡΡΠΎΠΌ ΡΠ°ΠΊΠΎΠ΅ ΠΆΠ΅ (15 Π΅Π΄ΠΈΠ½ΠΈΡ), ΠΊΠ°ΠΊ ΠΈ Π²ΠΎ Π²ΡΠΎΡΠΎΠΌ ΡΡΠ΅Π½Π°ΡΠΈΠΈ.
ΠΡΠΈ ΡΠ°Π±ΠΎΡΠ΅ Ρ Π²Π΅Π±-ΠΊΠ»ΠΈΠ΅Π½ΡΠ°ΠΌΠΈ ΠΏΠ΅ΡΠ²ΠΎΠ΅ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠ΅ ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅ΡΡΡ ΡΠ°ΠΌΠΎ ΠΏΠΎ ΡΠ΅Π±Π΅, Π·Π° Π½ΠΈΠΌ ΡΠ»Π΅Π΄ΡΡΡ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ ΠΏΠΎ ΡΡΡΠ»ΠΊΠ°ΠΌ, ΠΎΠ±Π½Π°ΡΡΠΆΠ΅Π½Π½ΡΠΌ Π² Π΄Π°Π½Π½ΡΡ ΠΎΡ ΠΏΠ΅ΡΠ²ΠΎΠ³ΠΎ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ. ΠΡ ΠΏΠΎΠΊΠ°Π·ΡΠ²Π°Π΅ΠΌ ΡΡΠΎ Π½Π° ΡΠΈΡ. 16.6.
Π ΠΈΡ. 16.6. Π£ΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ ΠΏΠ΅ΡΠ²ΠΎΠ³ΠΎ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ, Π° Π·Π°ΡΠ΅ΠΌ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²Π° ΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΡΠ½ΡΡ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠΉ
ΠΠ»Ρ Π΄Π°Π»ΡΠ½Π΅ΠΉΡΠ΅ΠΉ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΈ ΠΊΠ»ΠΈΠ΅Π½Ρ ΠΌΠΎΠΆΠ΅Ρ Π½Π°ΡΠ°ΡΡ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΡ Π΄Π°Π½Π½ΡΡ , Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΠΌΡΡ ΠΏΠΎ ΠΏΠ΅ΡΠ²ΠΎΠΌΡ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ, Π΄ΠΎ ΡΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ ΠΏΠ΅ΡΠ²ΠΎΠ³ΠΎ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ Π·Π°Π²Π΅ΡΡΠΈΡΡΡ, ΠΈ ΠΈΠ½ΠΈΡΠΈΠΈΡΠΎΠ²Π°ΡΡ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ, ΠΊΠ°ΠΊ ΡΠΎΠ»ΡΠΊΠΎ Π΅ΠΌΡ ΡΡΠ°Π½Π΅Ρ ΠΈΠ·Π²Π΅ΡΡΠ½ΠΎ, ΡΡΠΎ ΠΎΠ½ΠΈ Π½ΡΠΆΠ½Ρ.
ΠΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΠΌΡ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ Π½Π΅Π±Π»ΠΎΠΊΠΈΡΡΠ΅ΠΌΡΡ ΡΡΠ½ΠΊΡΠΈΠΉ connect ΠΎΠ΄Π½ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎ, ΠΌΡ Π½Π΅ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π½Π°ΡΡ ΡΡΠ½ΠΊΡΠΈΡ connect_nonb, ΠΏΠΎΠΊΠ°Π·Π°Π½Π½ΡΡ Π² Π»ΠΈΡΡΠΈΠ½Π³Π΅ 16.7, ΡΠ°ΠΊ ΠΊΠ°ΠΊ ΠΎΠ½Π° Π½Π΅ Π·Π°Π²Π΅ΡΡΠ°Π΅ΡΡΡ, ΠΏΠΎΠΊΠ° ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠ΅ Π½Π΅ ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½ΠΎ. ΠΠΌΠ΅ΡΡΠΎ ΡΡΠΎΠ³ΠΎ ΠΌΡ ΠΎΡΡΠ»Π΅ΠΆΠΈΠ²Π°Π΅ΠΌ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠΉ ΡΠ°ΠΌΠΎΡΡΠΎΡΡΠ΅Π»ΡΠ½ΠΎ.
ΠΠ°ΡΠ° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° ΡΡΠΈΡΡΠ²Π°Π΅Ρ ΠΎΠΊΠΎΠ»ΠΎ 20 ΡΡΡΠΎΠΊ Ρ Π²Π΅Π±-ΡΠ΅ΡΠ²Π΅ΡΠ°. ΠΡ Π·Π°Π΄Π°Π΅ΠΌ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ² ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠΈ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΠΎΠ΅ ΡΠΈΡΠ»ΠΎ ΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΡΠ½ΡΡ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠΉ, ΠΈΠΌΡ ΡΠ·Π»Π° ΡΠ΅ΡΠ²Π΅ΡΠ°, Π° Π·Π°ΡΠ΅ΠΌ ΠΊΠ°ΠΆΠ΄ΠΎΠ΅ ΠΈΠ· ΠΈΠΌΠ΅Π½ ΡΠ°ΠΉΠ»ΠΎΠ², ΠΏΠΎΠ»ΡΡΠ°Π΅ΠΌΡΡ Ρ ΡΠ΅ΡΠ²Π΅ΡΠ°. Π’ΠΈΠΏΠΈΡΠ½ΠΎΠ΅ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Π½Π°ΡΠ΅ΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Π²ΡΠ³Π»ΡΠ΄ΠΈΡ ΡΠ°ΠΊ:
solaris % web % www.foobar.com / image1.gif image2.gif \
image3.gif image4.gif image5.gif \
image6.gif image7.gif
ΠΡΠ³ΡΠΌΠ΅Π½ΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠΈ Π·Π°Π΄Π°ΡΡ ΡΡΠΈ ΠΎΠ΄Π½ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ, ΠΈΠΌΡ ΡΠ·Π»Π° ΡΠ΅ΡΠ²Π΅ΡΠ°, ΠΈΠΌΡ ΡΠ°ΠΉΠ»Π° Π΄ΠΎΠΌΠ°ΡΠ½Π΅ΠΉ ΡΡΡΠ°Π½ΠΈΡΡ (/ ΠΎΠ±ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ ΠΊΠΎΡΠ½Π΅Π²ΠΎΠΉ ΠΊΠ°ΡΠ°Π»ΠΎΠ³ ΡΠ΅ΡΠ²Π΅ΡΠ°) ΠΈ ΡΠ΅ΠΌΡ ΡΠ°ΠΉΠ»ΠΎΠ², ΠΊΠΎΡΠΎΡΡΠ΅ Π·Π°ΡΠ΅ΠΌ Π½ΡΠΆΠ½ΠΎ ΠΏΡΠΎΡΠΈΡΠ°ΡΡ (Π² Π½Π°ΡΠ΅ΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ ΡΡΠΎ ΡΠ°ΠΉΠ»Ρ Ρ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡΠΌΠΈ Π² ΡΠΎΡΠΌΠ°ΡΠ΅ GIF). ΠΠ±ΡΡΠ½ΠΎ Π½Π° ΡΡΠΈ ΡΠ΅ΠΌΡ ΡΠ°ΠΉΠ»ΠΎΠ² ΠΈΠΌΠ΅ΡΡΡΡ ΡΡΡΠ»ΠΊΠΈ Ρ Π΄ΠΎΠΌΠ°ΡΠ½Π΅ΠΉ ΡΡΡΠ°Π½ΠΈΡΡ, ΠΈ ΡΡΠΎΠ±Ρ ΠΏΠΎΠ»ΡΡΠΈΡΡ ΠΈΡ ΠΈΠΌΠ΅Π½Π°, Π²Π΅Π±-ΠΊΠ»ΠΈΠ΅Π½Ρ ΡΠΈΡΠ°Π΅Ρ Π΄ΠΎΠΌΠ°ΡΠ½ΡΡ ΡΡΡΠ°Π½ΠΈΡΡ ΠΈ ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°Π΅Ρ ΠΊΠΎΠ΄ HTML. Π§ΡΠΎΠ±Ρ Π½Π΅ ΡΡΠ»ΠΎΠΆΠ½ΡΡΡ ΡΡΠΎΡ ΠΏΡΠΈΠΌΠ΅Ρ ΡΠ°Π·Π±ΠΎΡΠΎΠΌ ΠΊΠΎΠ΄Π° HTML, ΠΌΡ ΠΏΡΠΎΡΡΠΎ Π·Π°Π΄Π°Π΅ΠΌ ΠΈΠΌΠ΅Π½Π° ΡΠ°ΠΉΠ»ΠΎΠ² Π² ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠ΅.
ΠΡΠΎ Π±ΠΎΠ»ΡΡΠΎΠΉ ΠΏΡΠΈΠΌΠ΅Ρ, ΠΏΠΎΡΡΠΎΠΌΡ ΠΌΡ Π±ΡΠ΄Π΅ΠΌ ΠΏΠΎΠΊΠ°Π·ΡΠ²Π°ΡΡ Π΅Π³ΠΎ ΡΠ°ΡΡΡΠΌΠΈ. Π Π»ΠΈΡΡΠΈΠ½Π³Π΅ 16.8 ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ Π½Π°Ρ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΡΠ½ΡΠΉ ΡΠ°ΠΉΠ» web.h, ΠΊΠΎΡΠΎΡΡΠΉ Π²ΠΊΠ»ΡΡΠ΅Π½ Π²ΠΎ Π²ΡΠ΅ ΡΠ°ΠΉΠ»Ρ.
ΠΠΈΡΡΠΈΠ½Π³ 16.8. ΠΠ°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ web.h
//nonblock/web.h
1 #include "unp.h"
2 #define MAXFILES 20
3 #define SERV "80" /* Π½ΠΎΠΌΠ΅Ρ ΠΏΠΎΡΡΠ° ΠΈΠ»ΠΈ ΠΈΠΌΡ ΡΠ»ΡΠΆΠ±Ρ */
4 struct file {
5 char *f_name; /* ΠΈΠΌΡ ΡΠ°ΠΉΠ»Π° */
6 char *f_host; /* ΠΈΠΌΡ ΡΠ·Π»Π° ΠΈΠ»ΠΈ Π°Π΄ΡΠ΅Ρ IPv4/IPv6 */
7 int f_fd; /* Π΄Π΅ΡΠΊΡΠΈΠΏΡΠΎΡ */
8 int f_flags; /* F_xxx ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Ρ Π½ΠΈΠΆΠ΅ */
9 } file[MAXFILES];
10 #define F_CONNECTING 1 /* connect() Π² ΠΏΡΠΎΡΠ΅ΡΡΠ΅ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ */
11 #define F_READING 2 /* ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠ΅ ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½ΠΎ; ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ ΡΡΠΈΡΡΠ²Π°Π½ΠΈΠ΅ */
12 #define F_DONE 4 /* Π²ΡΠ΅ ΡΠ΄Π΅Π»Π°Π½ΠΎ */
13 #define GET_CMD "GET %s HTTP/1.0\r\n\r\n"
14 /* Π³Π»ΠΎΠ±Π°Π»ΡΠ½ΡΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ */
15 int nconn, nfiles, nlefttoconn, nlefttoread, maxfd;
16 fd_set rset, wset;
17 /* ΠΏΡΠΎΡΠΎΡΠΈΠΏΡ ΡΡΠ½ΠΊΡΠΈΠΉ */
18 void home_page(const char*, const char*);
19 void start_connect (struct file*);
20 void write_get_cmd(struct file*);
ΠΠ°Π΄Π°Π½ΠΈΠ΅ ΡΡΡΡΠΊΡΡΡΡ file2-13 ΠΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° ΡΡΠΈΡΡΠ²Π°Π΅Ρ Π½Π΅ΠΊΠΎΡΠΎΡΠΎΠ΅ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ (Π½Π΅ Π±ΠΎΠ»Π΅Π΅ MAXFILES) ΡΠ°ΠΉΠ»ΠΎΠ² Ρ Π²Π΅Π±-ΡΠ΅ΡΠ²Π΅ΡΠ°. Π‘ΡΡΡΠΊΡΡΡΠ° file ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎ ΠΊΠ°ΠΆΠ΄ΠΎΠΌ ΡΠ°ΠΉΠ»Π΅: Π΅Π³ΠΎ ΠΈΠΌΡ (ΠΊΠΎΠΏΠΈΡΡΠ΅ΡΡΡ ΠΈΠ· Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠ° ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠΈ), ΠΈΠΌΡ ΡΠ·Π»Π° ΠΈΠ»ΠΈ IP-Π°Π΄ΡΠ΅Ρ ΡΠ΅ΡΠ²Π΅ΡΠ°, Ρ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ ΡΠΈΡΠ°Π΅ΡΡΡ ΡΠ°ΠΉΠ», Π΄Π΅ΡΠΊΡΠΈΠΏΡΠΎΡ ΡΠΎΠΊΠ΅ΡΠ°, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΠΉ Π΄Π»Ρ ΡΡΠΎΠ³ΠΎ ΡΠ°ΠΉΠ»Π°, ΠΈ Π½Π°Π±ΠΎΡ ΡΠ»Π°Π³ΠΎΠ², ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠΊΠ°Π·ΡΠ²Π°ΡΡ, ΡΡΠΎ ΠΌΡ Π΄Π΅Π»Π°Π΅ΠΌ Ρ ΡΡΠΈΠΌ ΡΠ°ΠΉΠ»ΠΎΠΌ (ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅ΠΌ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠ΅ Π΄Π»Ρ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ ΡΠ°ΠΉΠ»Π° ΠΈΠ»ΠΈ ΡΡΠΈΡΡΠ²Π°Π΅ΠΌ ΡΠ°ΠΉΠ»).
ΠΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Π³Π»ΠΎΠ±Π°Π»ΡΠ½ΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ ΠΈ ΠΏΡΠΎΡΠΎΡΠΈΠΏΠΎΠ² ΡΡΠ½ΠΊΡΠΈΠΉ14-20 ΠΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΠΌ Π³Π»ΠΎΠ±Π°Π»ΡΠ½ΡΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ ΠΈ ΠΏΡΠΎΡΠΎΡΠΈΠΏΡ Π΄Π»Ρ Π½Π°ΡΠΈΡ ΡΡΠ½ΠΊΡΠΈΠΉ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΡ Π²ΡΠΊΠΎΡΠ΅ ΠΎΠΏΠΈΡΠ΅ΠΌ.
ΠΠΈΡΡΠΈΠ½Π³ 16.9. ΠΠ΅ΡΠ²Π°Ρ ΡΠ°ΡΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΠΎΠ΄Π½ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠ³ΠΎ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΡΡΠ½ΠΊΡΠΈΠΉ connect: Π³Π»ΠΎΠ±Π°Π»ΡΠ½ΡΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ ΠΈ Π½Π°ΡΠ°Π»ΠΎ ΡΡΠ½ΠΊΡΠΈΠΈ main