π ΠΠΈΡΠ΅ΠΌ ΠΌΠ΅ΡΡΠ΅Π½Π΄ΠΆΠ΅Ρ Π½Π° Go Π·Π° ΡΠ°Ρ: 7 ΠΏΡΠΎΡΡΡΡ ΡΠ°Π³ΠΎΠ² ΠΎΡ ΡΡ ΠΎ-ΡΠ΅ΡΠ²Π΅ΡΠ° ΠΊ Π°ΡΠΈΠ½Ρ ΡΠΎΠ½Π½ΠΎΠΌΡ ΠΎΠ±ΠΌΠ΅Π½Ρ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡΠΌΠΈ
ΠΠ²ΡΠΎΡΡ Π±ΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²Π° ΡΡΠ°ΡΠ΅ΠΉ ΠΏΠΎ ΡΠΎΠΊΠ΅ΡΠ½ΡΠΌ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡΠΌ Π² ΠΏΡΠΈΠΌΠ΅ΡΠ°Ρ ΠΎΠ³ΡΠ°Π½ΠΈΡΠΈΠ²Π°ΡΡΡΡ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠ΅ΠΉ ΡΡ ΠΎ-ΡΠ΅ΡΠ²Π΅ΡΠ°. ΠΠ°Π²Π°ΠΉΡΠ΅ ΡΠ°Π·ΠΎΠ²ΡΠ΅ΠΌ ΡΡΡ ΡΠ΅ΠΌΡ ΠΈ Π·Π° 7 ΠΏΡΠΎΡΡΡΡ ΡΠ°Π³ΠΎΠ² ΡΠ΄Π΅Π»Π°Π΅ΠΌ Π²ΠΌΠ΅ΡΡΠ΅ ΠΊΠΎΠ½ΡΠΎΠ»ΡΠ½ΡΠΉ ΠΌΠ΅ΡΡΠ΅Π½Π΄ΠΆΠ΅Ρ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΉ.
Π¨Π°Π³ 1. ΠΡΠ΅ΠΌ ΠΊΠΎΠ΄ ΡΡ ΠΎ-ΡΠ΅ΡΠ²Π΅ΡΠ°
ΠΡΠ»ΠΈ ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠΎΠ²Π°ΡΡ ΠΈΡΡ ΠΎΠ΄Π½ΠΈΠΊΠΈ ΠΈ Π·Π°ΠΏΡΡΡΠΈΡΡ Π² ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΡ ΠΊΠΎΠ½ΡΠΎΠ»ΡΡ ΠΊΠ»ΠΈΠ΅Π½Ρ ΠΈ ΡΠ΅ΡΠ²Π΅Ρ, ΡΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ±ΠΌΠ΅Π½ΠΈΠ²Π°ΡΡΡΡ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡΠΌΠΈ. Π£ ΡΡΠΎΠ³ΠΎ ΡΠ΅ΡΠ²Π΅ΡΠ° Π΅ΡΡΡ ΠΎΠ΄ΠΈΠ½ Π·Π½Π°ΡΠΈΡΠ΅Π»ΡΠ½ΡΠΉ Π½Π΅Π΄ΠΎΡΡΠ°ΡΠΎΠΊ: ΠΎΠ½ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ ΡΠΎΠ»ΡΠΊΠΎ Ρ ΠΎΠ΄Π½ΠΈΠΌ ΠΊΠ»ΠΈΠ΅Π½ΡΠΎΠΌ. ΠΠΎΠΏΡΠΎΠ±ΡΠ΅ΠΌ Π·Π°ΠΏΡΡΡΠΈΡΡ Π² Π΅ΡΠ΅ ΠΎΠ΄Π½ΠΎΠΉ ΠΊΠΎΠ½ΡΠΎΠ»ΠΈ Π½ΠΎΠ²ΡΠΉ ΠΊΠ»ΠΈΠ΅Π½Ρ ΠΈ ΡΠ²ΠΈΠ΄ΠΈΠΌ, ΠΊΠ°ΠΊ ΠΎΠ½Π° Π·Π°Π²ΠΈΡΠ½Π΅Ρ. Π’ΠΎ ΠΆΠ΅ ΡΠ°ΠΌΠΎΠ΅ Π±ΡΠ΄Π΅Ρ ΠΈ Ρ ΡΠ΅ΡΠ²Π΅ΡΡΡΠΌ, ΠΈ Ρ ΠΏΡΡΡΠΌ ΠΊΠ»ΠΈΠ΅Π½ΡΠΎΠΌ.
Π¨Π°Π³ 2. Π Π΅Π°Π»ΠΈΠ·ΡΠ΅ΠΌ ΠΏΡΠΈΠ΅ΠΌ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠΉ
Π§ΡΠΎΠ±Ρ ΠΏΡΠΈΠ½ΡΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΎΠ΄Π½ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠΉ, Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ:
- ΡΡΠ½ΠΊΡΠΈΡ ΠΏΡΠΈΠ΅ΠΌΠ° ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ
conn.Accept()
Π·Π°ΠΊΠ»ΡΡΠΈΡΡ Π΅ΡΠ΅ Π² ΠΎΠ΄ΠΈΠ½ ΡΠΈΠΊΠ»for
. - Π²Π΅ΡΡ ΠΊΠΎΠ΄, ΠΊΠΎΡΠΎΡΡΠΉ Π±ΡΠ» Π² ΡΠΈΠΊΠ»Π΅, Π²ΡΠ½Π΅ΡΡΠΈ Π² ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΡ ΡΡΠ½ΠΊΡΠΈΡ
process()
. - Π·Π°ΠΏΡΡΡΠΈΡΡ ΡΡΠ½ΠΊΡΠΈΡ
process()
ΠΊΠ°ΠΊ ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΡ Π³ΠΎΡΡΡΠΈΠ½Ρ Π² ΡΠΈΠΊΠ»Π΅for
ΡΡΠ°Π·Ρ ΠΏΠΎΡΠ»Π΅ ΠΏΡΠΈΠ΅ΠΌΠ° ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡconn.Accept()
Π ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ΅ Π½Π΅Π±ΠΎΠ»ΡΡΠΈΡ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ Π½Π°Ρ ΠΊΠΎΠ΄ ΠΏΡΠΈΠΌΠ΅Ρ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ Π²ΠΈΠ΄:
ΠΠΎΠ΄ Π² main:
ΠΡΠ»ΠΈ ΠΌΡ Π·Π°ΠΏΡΡΡΠΈΠΌ Π² ΠΎΠ΄Π½ΠΎΠΉ ΠΊΠΎΠ½ΡΠΎΠ»ΠΈ ΡΠ΅ΡΠ²Π΅Ρ, Π° Π² Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ Π΄ΡΡΠ³ΠΈΡ ΠΊΠΎΠ½ΡΠΎΠ»ΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΠΊΠ»ΠΈΠ΅Π½ΡΠ°, ΡΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π²ΠΈΠ΄Π΅ΡΡ, ΡΡΠΎ ΡΠ΅ΡΠ²Π΅Ρ ΠΌΠΎΠΆΠ΅Ρ ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°ΡΡ ΡΠΆΠ΅ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠΉ Ρ ΠΊΠ»ΠΈΠ΅Π½ΡΠ°ΠΌΠΈ ΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΡΠ½ΠΎ. ΠΠ° ΡΠ°ΠΌΠΎΠΌ Π΄Π΅Π»Π΅ ΠΎΠ½ ΠΈΡ ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°Π΅Ρ Π°ΡΠΈΠ½Ρ ΡΠΎΠ½Π½ΠΎ: ΡΠΏΠ΅ΡΠ²Π° ΠΎΠ΄ΠΈΠ½ Π·Π°ΠΏΡΠΎΡ, ΠΏΠΎΡΠΎΠΌ Π΄ΡΡΠ³ΠΎΠΉ, ΠΎΡΡΡΠ΅ΡΡΠ²Π»ΡΡ ΠΏΠ΅ΡΠ΅ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ ΠΌΠ΅ΠΆΠ΄Ρ Π³ΠΎΡΡΡΠΈΠ½Π°ΠΌΠΈ.
Π¨Π°Π³ 3. ΠΠ±ΡΠ°Π±Π°ΡΡΠ²Π°Π΅ΠΌ ΠΎΡΠΈΠ±ΠΊΠΈ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠΉ
ΠΠ°Π²Π°ΠΉΡΠ΅ ΠΏΠΎΠΏΡΠΎΠ±ΡΠ΅ΠΌ ΠΎΡΡΠΎΠ΅Π΄ΠΈΠ½ΠΈΡΡ ΠΎΠ΄ΠΈΠ½ ΠΈΠ· ΠΊΠ»ΠΈΠ΅Π½ΡΠΎΠ², ΡΠ±ΠΈΠ² Π΅Π³ΠΎ ΠΏΡΠΎΡΠ΅ΡΡ: Π½Π°Ρ ΡΠ΅ΡΠ²Π΅Ρ Π·Π°ΡΠΈΠΊΠ»ΠΈΡΡΡ. ΠΡΠ»ΠΈ ΡΡΠΎ-Π½ΠΈΠ±ΡΠ΄Ρ Π½Π°Π±ΡΠ°ΡΡ Π² ΠΊΠ»ΠΈΠ΅Π½ΡΠ΅, ΡΠΎ Π΄Π°Π½Π½ΡΠ΅ ΠΊΡΠ΄Π°-ΡΠΎ ΡΡ ΠΎΠ΄ΡΡ, ΠΈ ΠΊΠ»ΠΈΠ΅Π½Ρ Π½ΠΈ ΠΎ ΡΡΠΌ Π½Π΅ ΠΏΠΎΠ΄ΠΎΠ·ΡΠ΅Π²Π°Π΅Ρ.
ΠΡ Π·Π°Π±ΡΠ»ΠΈ ΠΎΠ±ΡΠ°Π±ΠΎΡΠ°ΡΡ ΠΎΡΠΈΠ±ΠΊΠΈ Π²Π²ΠΎΠ΄Π°-Π²ΡΠ²ΠΎΠ΄Π°. Π€ΡΠ½ΠΊΡΠΈΡ Π²ΡΠ²ΠΎΠ΄Π° Π² ΡΠΎΠΊΠ΅Ρ Write ΠΈΠΌΠ΅Π΅Ρ Π΄Π²Π° Π²ΡΡ ΠΎΠ΄Π½ΡΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ°: ΠΊΠΎΠ»-Π²ΠΎ ΡΡΠΈΡΠ°Π½Π½ΡΡ Π±Π°ΠΉΡ ΠΈ ΠΎΡΠΈΠ±ΠΊΡ:
ΠΡΠ»ΠΈ ΠΎΡΠΈΠ±ΠΊΠ° Π½Π΅ ΠΏΡΡΡΠ°Ρ (Ρ.Π΅. Π½Π΅ ΡΠ°Π²Π½Π° nil
), Π·Π½Π°ΡΠΈΡ ΠΌΡ Π½Π΅ ΡΠΌΠΎΠ³Π»ΠΈ ΠΏΡΠΈΠ½ΡΡΡ Π΄Π°Π½Π½ΡΠ΅. ΠΠ°ΠΊΠ°Ρ ΠΎΡΠΈΠ±ΠΊΠ° ΠΏΡΠΎΠΈΠ·ΠΎΡΠ»Π°, ΠΌΠΎΠΆΠ½ΠΎ ΡΠ·Π½Π°ΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΡΠ½ΠΊΡΠΈΠΈ err.Error()
ΠΠ°ΠΌΠ΅Π½ΠΈΠΌ conn.Write(b []byte)
Π½Π° ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ ΠΊΠΎΠ΄:
ΠΠ½Π°Π»ΠΎΠ³ΠΈΡΠ½ΡΠΉ ΠΊΠΎΠ΄ ΠΏΡΠΎΠΏΠΈΡΠ΅ΠΌ Π² ΠΊΠ»ΠΈΠ΅Π½ΡΠ΅. ΠΡΠ΅ Π² ΠΊΠ»ΠΈΠ΅Π½ΡΠ΅ ΠΎΡΡΡΡΡΡΠ²ΡΠ΅Ρ ΠΎΡΠ»ΠΎΠΆΠ΅Π½Π½ΠΎΠ΅ Π·Π°ΠΊΡΡΡΠΈΠ΅ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ, ΠΊΠΎΡΠΎΡΠΎΠ΅ ΡΡΠ°Π±Π°ΡΡΠ²Π°Π΅Ρ ΠΏΡΠΈ Π²ΡΡ
ΠΎΠ΄Π΅ ΠΈΠ· ΡΡΠ½ΠΊΡΠΈΠΈ defer conn.Close()
.
Π’Π΅ΠΏΠ΅ΡΡ ΠΏΡΠΈ Π·Π°ΠΊΡΡΡΠΈΠ΅ ΠΊΠ»ΠΈΠ΅Π½ΡΠ° ΠΈΠ»ΠΈ ΡΠ΅ΡΠ²Π΅ΡΠ°, Ρ Π½Π°Ρ Π±ΡΠ΄Π΅Ρ Π²ΡΠ΄Π°Π²Π°ΡΡΡΡ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅:
Π¨Π°Π³ 4. ΠΡΠΎΡΡΠΎΠΉ ΠΏΡΠΎΡΠΎΡΠΈΠΏ ΠΌΠ΅ΡΡΠ΅Π½Π΄ΠΆΠ΅ΡΠ°
Π ΡΡΠΎΠΌΡ ΠΌΠΎΠΌΠ΅Π½ΡΡ ΠΌΡ Π΄ΠΎΠΏΠΈΠ»ΠΈΠ»ΠΈ ΡΡ ΠΎ-ΡΠ΅ΡΠ²Π΅Ρ, Π° ΡΠ΅ΠΏΠ΅ΡΡ ΠΎΡΡΠ°Π»ΠΎΡΡ ΡΠ΄Π΅Π»Π°ΡΡ ΠΏΡΠΎΡΡΠΎΠΉ ΠΈΠ· Π½Π΅Π³ΠΎ ΠΌΠ΅ΡΡΠ΅Π½Π΄ΠΆΠ΅Ρ. ΠΡΡΡΡ Π»ΠΎΠ³ΠΈΠΊΠ° ΠΌΠ΅ΡΡΠ΅Π½Π΄ΠΆΠ΅ΡΠ° Π±ΡΠ΄Π΅Ρ ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΉ:
- ΠΠ»ΠΈΠ΅Π½Ρ ΠΊΠΎΠ½Π½Π΅ΠΊΡΠΈΡΡΡ ΠΊ ΡΠ΅ΡΠ²Π΅ΡΡ ΠΈ ΠΏΠΎΠ»ΡΡΠ°Π΅Ρ Π½ΠΎΠΌΠ΅Ρ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ. ΠΠ°ΠΆΠ΄Π°ΠΉ ΠΊΠ»ΠΈΠ΅Π½Ρ ΠΈΠΌΠ΅Π΅Ρ ΡΠ²ΠΎΠΉ ΡΠ½ΠΈΠΊΠ°Π»ΡΠ½ΡΠΉ Π½ΠΎΠΌΠ΅Ρ.
- ΠΠ»ΠΈΠ΅Π½Ρ ΠΎΡΠΏΡΠ°Π²Π»ΡΠ΅Ρ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ ΡΠ΅ΡΠ²Π΅ΡΡ Ρ ΡΠΊΠ°Π·Π°Π½ΠΈΠ΅ΠΌ Π½ΠΎΠΌΠ΅ΡΠ° ΠΊΠ»ΠΈΠ΅Π½ΡΠ°, ΠΊΠΎΠΌΡ Π°Π΄ΡΠ΅ΡΠΎΠ²Π°Π½ΠΎ ΡΡΠΎ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅.
- Π‘Π΅ΡΠ²Π΅Ρ ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅Ρ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ ΠΎΡ ΠΊΠ»ΠΈΠ΅Π½ΡΠ°, Π΄Π΅ΠΊΠΎΠ΄ΠΈΡΡΠ΅Ρ Π΅Π³ΠΎ ΠΈ ΠΎΡΠΏΡΠ°Π²Π»ΡΠ΅Ρ ΡΠΎΠΌΡ ΠΊΠ»ΠΈΠ΅Π½ΡΡ, ΠΊΠΎΡΠΎΡΠΎΠΌΡ Π°Π΄ΡΠ΅ΡΠΎΠ²Π°Π½ΠΎ ΡΡΠΎ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅.
ΠΠ²Π΅Π΄Π΅ΠΌ ΡΡΠ΅ΡΡΠΈΠΊ Π²Ρ ΠΎΠ΄ΡΡΠΈΡ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠΉ, Π° ΠΊΠ°ΠΆΠ΄ΠΎΠ΅ Π½ΠΎΠ²ΠΎΠ΅ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠ΅ ΡΠΎΡ ΡΠ°Π½ΠΈΠΌ Π² xeΡΡΠ°Π±Π»ΠΈΡΠ΅, ΠΎΡΠ³Π°Π½ΠΈΠ·ΠΎΠ²Π°Π² ΡΠ°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ ΠΏΡΠ»:
ΠΠ°ΠΆΠ΄ΠΎΠ΅ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠ΅ ΠΏΠΎΡΠ»Π΅ conn.Accept()
ΠΌΡ ΡΠΎΡ
ΡΠ°Π½ΠΈΠΌ Π² conns,
Π° Π² ΡΡΠ½ΠΊΡΠΈΡ process()
Π±ΡΠ΄Π΅ΠΌ ΠΏΠ΅ΡΠ΅Π΄Π°Π²Π°ΡΡ Π²Π΅ΡΡ ΠΏΡΠ» (Ρ
Π΅ΡΡΠ°Π±Π»ΠΈΡΡ) ΠΈ Π½ΠΎΠΌΠ΅Ρ ΡΠ΅ΠΊΡΡΠ΅Π³ΠΎ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ. Π ΡΡΠ½ΠΊΡΠΈΠΈ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ process()
ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΠΌΠ΅ΡΡ Π΄ΠΎΡΡΡΠΏ ΠΊΠΎ Π²ΡΠ΅ΠΌ Π°ΠΊΡΠΈΠ²Π½ΡΠΌ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡΠΌ. ΠΠ΅ Π·Π°Π±ΡΠ²Π°Π΅ΠΌ ΡΠ²Π΅Π»ΠΈΡΠΈΠ²Π°ΡΡ Π½Π° Π΅Π΄ΠΈΠ½ΠΈΡΡ ΡΡΠ΅ΡΡΠΈΠΊ ΡΠ΅ΠΊΡΡΠΈΡ
ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠΉ.
Π ΡΡΠ½ΠΊΡΠΈΠΈ process()
ΠΌΡ ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅ΠΌ Π½Π΅ ΡΠ΅ΠΊΡΡΠ΅Π΅ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠ΅, Π° ΠΏΡΠ» ΠΈ Π½ΠΎΠΌΠ΅Ρ ΡΠ΅ΠΊΡΡΠ΅Π³ΠΎ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ. Π‘Π»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎ, ΡΡΠΎΠ± ΠΏΠΎΠ»ΡΡΠΈΡΡ Π΄ΠΎΡΡΡΠΏ ΠΊ ΡΠ΅ΠΊΡΡΠ΅ΠΌΡ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ, ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ Π΅Π³ΠΎ Π²Π·ΡΡΡ ΠΈΠ· ΠΏΡΠ»Π°:
ΠΠΎΠ²ΡΠΉ ΠΊΠΎΠ΄ ΡΠ΅ΡΠ²Π΅ΡΠ°:
ΠΡΠΈ ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΠΈ ΠΌΡ Π²ΠΈΠ΄ΠΈΠΌ, ΡΡΠΎ Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΌ ΠΎΡΠ²Π΅ΡΠ½ΠΎΠΌ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΈ ΡΠ΅ΡΠ²Π΅Ρ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΠΊΠ»ΠΈΠ΅Π½ΡΡ Π½ΠΎΠΌΠ΅Ρ ΡΠ΅ΠΊΡΡΠ΅Π³ΠΎ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ:
Π¨Π°Π³ 5. Π Π΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ ΠΏΡΠΎΡΠΎΠΊΠΎΠ»Π° ΠΎΠ±ΠΌΠ΅Π½Π°
ΠΡΠΈΠΌΠ΅Ρ:
ΠΠ»Ρ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΡΡΠΎΠ³ΠΎ ΠΏΡΠΎΡΠΎΠΊΠΎΠ»Π°, Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎ ΡΠ΄Π΅Π»Π°ΡΡ ΠΏΠ°ΡΡΠΈΠ½Π³ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ. ΠΠΎΠΌΠ΅Ρ ΠΊΠ»ΠΈΠ΅Π½ΡΠ°, ΠΌΡ Π²ΡΡΠ°ΡΠΈΠΌ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ fmt.Scanf()
, Π° ΡΠ°ΠΌΠΎ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΡΠ»Π°ΠΉΡΠ°:
ΠΠ°Π»ΡΡΠ΅ Π²ΡΠ΅ ΠΎΡΠ΅Π½Ρ ΠΏΡΠΎΡΡΠΎ: Π·Π½Π°Ρ Π½ΠΎΠΌΠ΅Ρ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ (clientNo
) ΠΊΠ»ΠΈΠ΅Π½ΡΠ°, ΠΌΡ Π±ΡΠ΄Π΅ΠΌ ΠΎΡΠΏΡΠ°Π²Π»ΡΡΡ ΠΎΡΠ²Π΅Ρ Π² Π½ΡΠΆΠ½ΠΎΠ΅ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠ΅. Π‘ΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ Π±ΡΠ»ΠΎ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΎ, ΠΈ ΡΠ΅ΠΏΠ΅ΡΡ ΠΌΡ Π²ΡΠ²ΠΎΠ΄ΠΈΠΌ, ΠΎΡ ΠΊΠ°ΠΊΠΎΠ³ΠΎ ΠΊΠ»ΠΈΠ΅Π½ΡΠ° ΠΎΠ½ΠΎ ΠΈΡΡ
ΠΎΠ΄ΠΈΡ:
Π¨Π°Π³ 6. Π Π°ΡΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΠΈΠ²Π°Π½ΠΈΠ΅ ΠΊΠΎΠ΄Π°
ΠΡΡ ΠΎΠ΄ Π΄ΠΎΠ²ΠΎΠ»ΡΠ½ΠΎ ΠΏΡΠΎΡΡΠΎΠΉ: Π½ΡΠΆΠ½ΠΎ ΡΡΠ΅Π½ΠΈΠ΅ ΠΈΠ· ΡΠΎΠΊΠ΅ΡΠ° ΠΈ ΡΡΠ΅Π½ΠΈΠ΅ Ρ ΠΊΠΎΠ½ΡΠΎΠ»ΠΈ ΡΠ΄Π΅Π»Π°ΡΡ Π°ΡΠΈΠ½Ρ ΡΠΎΠ½Π½ΡΠΌΠΈ, Ρ.Π΅. ΡΠ΄Π΅Π»Π°ΡΡ ΡΠ°ΠΊ, ΡΡΠΎΠ±Ρ Π²Π²ΠΎΠ΄ ΠΈΠ· ΡΠΎΠΊΠ΅ΡΠ° ΠΈ Π²Π²ΠΎΠ΄ ΠΈΠ· ΠΊΠΎΠ½ΡΠΎΠ»ΠΈ Π½Π΅ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²Π°Π»ΠΈ Π΄ΡΡΠ³ Π΄ΡΡΠ³Π°. ΠΠ°ΠΊ Π³ΠΎΠ²ΠΎΡΠΈΠ»ΠΎΡΡ Π²ΡΡΠ΅, Π³ΠΎΡΡΡΠΈΠ½Ρ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡ ΠΊΠΎΠ΄Ρ Π²ΡΠΏΠΎΠ»Π½ΡΡΡΡΡ Π°ΡΠΈΠ½Ρ ΡΠΎΠ½Π½ΠΎ. Π‘Π»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎ, Π΄ΠΎΠ»ΠΆΠ½Ρ Π±ΡΡΡ Π·Π°ΠΏΡΡΠ΅Π½Ρ Π΄Π²Π΅ ΡΠ°Π·Π½ΡΠ΅ Π³ΠΎΡΡΡΠΈΠ½Ρ: ΠΎΠ΄Π½Π° Π΄ΠΎΠ»ΠΆΠ½Π° ΠΎΡΡΡΠ΅ΡΡΠ²Π»ΡΡΡ ΡΡΠ΅Π½ΠΈΠ΅ Ρ ΠΊΠΎΠ½ΡΠΎΠ»ΠΈ, Π° Π²ΡΠΎΡΠ°Ρ β ΡΡΠ΅Π½ΠΈΠ΅ ΠΈΠ· ΡΠΎΠΊΠ΅ΡΠ°.
ΠΠ΅ΡΠ²Π°Ρ Π³ΠΎΡΡΡΠΈΠ½Π° ΡΠΈΡΠ°Π΅Ρ Π΄Π°Π½Π½ΡΠ΅ ΠΈΠ· ΡΠΎΠΊΠ΅ΡΠ°, ΠΈ Π΅ΡΠ»ΠΈ Π² ΡΠΎΠΊΠ΅ΡΠ΅ Π΅ΡΡΡ Π΄Π°Π½Π½ΡΠ΅, Π²ΡΠ²ΠΎΠ΄ΠΈΡ ΠΈΡ Π½Π° ΠΏΠ΅ΡΠ°ΡΡ. Π§ΡΠ΅Π½ΠΈΠ΅ ΠΈ Π²ΡΠ²ΠΎΠ΄ Π΄ΠΎΠ»ΠΆΠ½Ρ Π±ΡΡΡ Π·Π°ΠΊΠ»ΡΡΠ΅Π½Ρ Π² ΡΠΈΠΊΠ»:
Π‘ΠΎ Π²ΡΠΎΡΠΎΠΉ Π³ΠΎΡΡΡΠΈΠ½ΠΎΠΉ Π²ΡΠ΅ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ ΡΠ»ΠΎΠΆΠ½Π΅Π΅, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΠΎΠ½Π° Π΄ΠΎΠ»ΠΆΠ½Π° ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡ Π΄Π°Π½Π½ΡΠ΅ Π² ΠΎΡΠ½ΠΎΠ²Π½ΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ. ΠΠΎΡΠ΅ΠΌΡ Π½Π΅Π»ΡΠ·Ρ ΡΡΠ°Π·Ρ ΠΏΠΈΡΠ°ΡΡ ΠΈΡ
Π² ΡΠΎΠΊΠ΅Ρ, ΠΊΠ°ΠΊ ΡΡΠΎ Π΄Π΅Π»Π°Π΅Ρ ΠΏΠ΅ΡΠ²Π°Ρ Π³ΠΎΡΡΡΠΈΠ½Π°? Π£Π²Ρ, ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ conn.Write()
β Π±Π»ΠΎΠΊΠΈΡΡΡΡΠ°Ρ, ΠΈ Π΅ΡΠ»ΠΈ ΠΌΡ ΡΠ°ΠΊ ΡΠ΄Π΅Π»Π°Π΅ΠΌ, ΡΠΎ ΠΌΠΎΠΆΠ΅ΠΌ Π·Π°Π±Π»ΠΎΠΊΠΈΡΠΎΠ²Π°ΡΡ Π΄ΡΡΠ³ΠΈΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ Π²Π²ΠΎΠ΄Π°-Π²ΡΠ²ΠΎΠ΄Π°. ΠΡΠ΅ Π±Π»ΠΎΠΊΠΈΡΡΡΡΠΈΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ Π½ΡΠΆΠ½ΠΎ ΡΠ°Π·Π½Π΅ΡΡΠΈ ΠΏΠΎ ΡΠ°Π·Π½ΡΠΌ Π°ΡΠΈΠ½Ρ
ΡΠΎΠ½Π½ΡΠΌ ΡΠ°ΡΡΡΠΌ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ.
ΠΡΠ½ΠΎΠ²Π½Π°Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° Π΄ΠΎΠ»ΠΆΠ½Π° Π·Π°ΠΏΡΡΡΠΈΡΡ Π΄Π²Π΅ Π°ΡΠΈΠ½Ρ
ΡΠΎΠ½Π½ΡΡ
Π³ΠΎΡΡΡΠΈΠ½Ρ: ΡΡΠ΅Π½ΠΈΠ΅ Ρ ΠΊΠΎΠ½ΡΠΎΠ»ΠΈ ΠΈ ΠΈΠ· ΡΠΎΠΊΠ΅ΡΠ° (Π² ΡΠΈΠΊΠ»Π΅ ΡΠΈΡΠ°ΡΡ ΠΊΠ°Π½Π°Π» ΠΈ Π΅ΡΠ»ΠΈ Π² Π½Π΅ΠΌ Π΅ΡΡΡ Π΄Π°Π½Π½ΡΠ΅, ΡΠΎ Π·Π°ΠΏΠΈΡΠ°ΡΡ ΠΈΡ
Π² ΡΠΎΠΊΠ΅Ρ). Π§ΡΠΎΠ±Ρ Π½Π°ΡΠ΅ ΠΊΠΎΠ½ΡΠΎΠ»ΡΠ½ΠΎΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π½Π΅ Β«ΡΡΠ΅Π»ΠΎΒ» Π²ΡΠ΅ ΡΠ΅ΡΡΡΡΡ CPU, Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎ Π²Π²Π΅ΡΡΠΈ Π½Π΅ΠΊΠΎΡΠΎΡΡΡ Π·Π°Π΄Π΅ΡΠΆΠΊΡ: time.Sleep(time.Seconds * 2)
ΠΠΎΠ»ΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡΡΠΈΡΡΡΡ ΠΏΡΠΈΠΌΠ΅ΡΠ½ΠΎ ΡΠ»Π΅Π΄ΡΡΡΠ΅Π΅:
Π¨Π°Π³ 7. ΠΠΎΠ²ΡΡΠ°Π΅ΠΌ Π½Π°Π΄Π΅ΠΆΠ½ΠΎΡΡΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΊΠΎΠ΄Π°
ΠΠ°ΡΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΡΠ°Π±ΠΎΡΠ°ΡΡ ΠΏΡΠΈ Π»ΡΠ±ΡΡ Π²Ρ ΠΎΠ΄Π½ΡΡ Π΄Π°Π½Π½ΡΡ , Π΄Π°ΠΆΠ΅ Π΅ΡΠ»ΠΈ ΠΎΠ½ΠΈ Π½Π΅ΠΊΠΎΡΡΠ΅ΠΊΡΠ½ΡΠ΅. ΠΡΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΏΡΠΎΡΡΡΡ ΠΏΡΠ°Π²ΠΈΠ», ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΡΠΈΠ΄Π΅ΡΡΡ ΡΠΎΠ±Π»ΡΠ΄Π°ΡΡ ΠΏΡΠΈ ΠΏΠΎΡΡΡΠΎΠ΅Π½ΠΈΠΈ Π»ΡΠ±ΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ:
- Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΡΠΎΠ²Π΅ΡΡΡΡ Π²ΡΠ΅ Π²Ρ ΠΎΠ΄ΡΡΠΈΠ΅ Π΄Π°Π½Π½ΡΠ΅ ΠΈ Π΅ΡΠ»ΠΈ ΠΈΡ Π΄Π»ΠΈΠ½Π½Π° Π±ΠΎΠ»ΡΡΠ΅ ΠΏΡΠΈΠ½ΠΈΠΌΠ°ΡΡΠ΅Π³ΠΎ Π±ΡΡΠ΅ΡΠ°, ΡΠΎ Π»ΠΈΠ±ΠΎ ΠΎΠ±ΡΠ΅Π·Π°ΡΡ ΠΈΡ , Π»ΠΈΠ±ΠΎ Π³Π΅Π½Π΅ΡΠΈΡΠΎΠ²Π°ΡΡ ΠΎΡΠΈΠ±ΠΊΡ;
- Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°ΡΡ Π²ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ Π²Π²ΠΎΠ΄Π°-Π²ΡΠ²ΠΎΠ΄Π° Π½Π° Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΈΡ ΠΎΡΠΈΠ±ΠΊΠΈ.
ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π² ΠΊΠΎΠ΄Π΅ Π±ΡΠ»ΠΎ ΠΌΠ½ΠΎΠ³ΠΎ ΡΠΎΠΊΡΠ°ΡΠ΅Π½ΠΈΠΉ ΠΈ ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΠΎ Π±ΡΠ»Π° ΠΎΠΏΡΡΠ΅Π½Π° ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ° ΡΡΠ½ΠΊΡΠΈΠΉ conn.Accept()
ΠΈ net.Dial()
:
Π’Π°ΠΊΠΆΠ΅ Π±ΡΠ» ΠΎΠΏΡΡΠ΅Π½ ΠΊΠΎΠ΄ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΎΠ±ΡΠ΅ΠΌΠ° Π΄Π°Π½Π½ΡΡ Ρ ΠΊΠΎΠ½ΡΠΎΠ»ΠΈ:
ΠΠΎΡΡΠΈ Π³ΠΎΡΠΎΠ²ΠΎΠ΅ ΠΈ ΡΠ°Π±ΠΎΡΠΎΡΠΏΠΎΡΠΎΠ±Π½ΠΎΠ΅ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡΠΈ Π² ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΈ: Π²Π°ΠΌ ΠΎΡΡΠ°Π΅ΡΡΡ ΡΠ°ΠΌΠΎΡΡΠΎΡΡΠ΅Π»ΡΠ½ΠΎ Π΄ΠΎΠΏΠΈΡΠ°ΡΡ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΡ Π²ΡΠ΅Ρ
ΠΎΡΠΈΠ±ΠΎΠΊ Π²Π²ΠΎΠ΄Π°-Π²ΡΠ²ΠΎΠ΄Π°. ΠΡΠ»ΠΈ Π²ΠΎΠ·Π½ΠΈΠΊΠ½Π΅Ρ ΠΆΠ΅Π»Π°Π½ΠΈΠ΅ ΡΠ΄Π΅Π»Π°ΡΡ pull request Π² ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΉ, ΡΠΎ Ρ ΡΠΌΠΎΠ³Ρ ΡΠΊΠ°Π·Π°ΡΡ Π² ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΡΡ
Π½Π° ΠΎΡΠΈΠ±ΠΊΠΈ ΠΈΠ»ΠΈ ΠΏΡΠΎΡΡΠΎ ΠΏΠΎΡ
Π²Π°Π»ΠΈΡΡ. Π‘Π΄Π΅Π»Π°ΠΉΡΠ΅ ΡΠ²ΠΎΠΉ ΠΊΠΎΠ΄ Π΄ΠΎΡΡΠΎΡΠ½ΠΈΠ΅ΠΌ ΠΎΠ±ΡΠ΅ΡΡΠ²Π΅Π½Π½ΠΎΡΡΠΈ. Π£Π΄Π°ΡΠΈ!