Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΠΎΠ±ΠΌΠ΅Π½Π° ΡΠ΅ΠΊΡΡΠΎΠ²ΡΠΌΠΈ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡΠΌΠΈ ΡΠ΅ΡΠ΅Π· Π»ΠΎΠΊΠ°Π»ΡΠ½ΡΡ ΡΠ΅ΡΡ
Π Π°Π·ΡΠ°Π±ΠΎΡΠΊΠ° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΠΎΠ³ΠΎ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠ΅Π½ΠΈΡ Π΄Π»Ρ Windows. Visual Studio 2008 ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ ΠΎΡΠ½ΠΎΠ²Π½ΡΠ΅ Windows API, Microsoft Foundation Classes, NET Framework ΠΈΠ»ΠΈ Π»ΡΠ±ΠΎΠΉ SDK. Π‘ ΠΏΠΎΠΌΠΎΡΡΡ ΠΎΠ΄Π½ΠΎΠ³ΠΎ Π½Π°Π±ΠΎΡΠ° ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΎΠ² ΠΌΠΎΠΆΠ½ΠΎ ΡΠ°Π·ΡΠ°Π±Π°ΡΡΠ²Π°ΡΡ ΡΠΈΡΡΠ΅ΠΌΠ½ΡΠ΅ ΡΠ»ΡΠΆΠ±Ρ, Π΄ΡΠ°ΠΉΠ²Π΅ΡΡ ΡΡΡΡΠΎΠΉΡΡΠ², ΡΡΠΈΠ»ΠΈΡΡ, ΠΈΠ³ΡΡ, Π½Π°ΡΡΠΎΠ»ΡΠ½ΠΎΠ΅ ΠΠ, ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π΄Π»Ρ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΠ·Π°ΡΠΈΠΈ Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠΉ Π±ΠΈΠ·Π½Π΅ΡΠ° ΠΈ ΠΌΠ½ΠΎΠ³ΠΎΠ΅ Π΄ΡΡΠ³ΠΎΠ΅. ΠΠ΅Π·Π°Π²ΠΈΡΠΈΠΌΠΎ ΠΎΡ ΡΠΈΠΏΠ°… Π§ΠΈΡΠ°ΡΡ Π΅ΡΡ >
Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΠΎΠ±ΠΌΠ΅Π½Π° ΡΠ΅ΠΊΡΡΠΎΠ²ΡΠΌΠΈ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡΠΌΠΈ ΡΠ΅ΡΠ΅Π· Π»ΠΎΠΊΠ°Π»ΡΠ½ΡΡ ΡΠ΅ΡΡ (ΡΠ΅ΡΠ΅ΡΠ°Ρ, ΠΊΡΡΡΠΎΠ²Π°Ρ, Π΄ΠΈΠΏΠ»ΠΎΠΌ, ΠΊΠΎΠ½ΡΡΠΎΠ»ΡΠ½Π°Ρ)
1. ΠΠ½Π°Π»ΠΈΠ· ΠΈΡΡ ΠΎΠ΄Π½ΡΡ Π΄Π°Π½Π½ΡΡ
2. ΠΡΠΎΠ΅ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠΌΠΏΠ»Π΅ΠΊΡΠ°
3. Π Π°Π·ΡΠ°Π±ΠΎΡΠΊΠ° ΠΈ ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠΌΠΏΠ»Π΅ΠΊΡΠ° ΠΠ°ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ Π‘ΠΏΠΈΡΠΎΠΊ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½Π½ΠΎΠΉ Π»ΠΈΡΠ΅ΡΠ°ΡΡΡΡ ΠΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ
Π¦Π΅Π»Ρ ΠΊΡΡΡΠΎΠ²ΠΎΠ³ΠΎ ΠΏΡΠΎΠ΅ΠΊΡΠ°: ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΠΎΠ±ΠΌΠ΅Π½Π° ΡΠ΅ΠΊΡΡΠΎΠ²ΡΠΌΠΈ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡΠΌΠΈ ΡΠ΅ΡΠ΅Π· Π»ΠΎΠΊΠ°Π»ΡΠ½ΡΡ ΡΠ΅ΡΡ.
ΠΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° Π΄ΠΎΠ»ΠΆΠ½Π° ΠΎΡΡΡΠ΅ΡΡΠ²Π»ΡΡΡ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡ ΡΠ΅ΠΊΡΡΠΎΠ²ΡΡ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΉ ΠΏΠΎ ΡΠ΅ΡΠΈ. ΠΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠ° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Π΄ΠΎΠ»ΠΆΠ½Π° Π²ΠΊΠ»ΡΡΠ°ΡΡ Π² ΡΠ΅Π±Ρ ΠΊΠ»ΠΈΠ΅Π½ΡΡΠΊΡΡ ΠΈ ΡΠ΅ΡΠ²Π΅ΡΠ½ΡΡ ΡΠ°ΡΡΡ. Π§ΡΠΎΠ±Ρ Π½Π°ΡΠ°ΡΡ ΠΎΠ±ΠΌΠ΅Π½ ΡΠ΅ΠΊΡΡΠΎΠ²ΡΠΌΠΈ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡΠΌΠΈ, Π½Π° ΠΎΠ΄Π½ΠΎΠΌ ΠΈΠ· ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΠΎΠ² Π»ΠΎΠΊΠ°Π»ΡΠ½ΠΎΠΉ ΡΠ΅ΡΠΈ Π΄ΠΎΠ»ΠΆΠ½Π° Π±ΡΡΡ Π·Π°ΠΏΡΡΠ΅Π½Π° ΠΊΠΎΠΏΠΈΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Π² ΡΠ΅ΡΠ²Π΅ΡΠ½ΠΎΠΌ ΡΠ΅ΠΆΠΈΠΌΠ΅. ΠΠ»Ρ ΡΠΎΠ³ΠΎ, ΡΡΠΎ Π±Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° Π·Π½Π°Π»Π°, ΠΊΠΎΠΌΡ ΠΈ ΠΊΡΠ΄Π° ΠΏΠ΅ΡΠ΅Π΄Π°Π²Π°ΡΡ Π½ΡΠΆΠ½ΡΠ΅ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ IP Π°Π΄ΡΠ΅Ρ ΠΈ ΠΏΠΎΡΡ.
ΠΠ΅ΡΠ΅Π΄ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΠ΅ΠΉ ΡΠ΅ΠΊΡΡΠΎΠ²ΡΡ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΉ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ Π½Π°ΡΡΡΠΎΠΈΡΡ ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΡΠ΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ: Π²Π½Π°ΡΠ°Π»Π΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΠΏΡΠ΅Π΄Π»Π°Π³Π°ΡΡ ΡΠΎΠ·Π΄Π°ΡΡ ΡΠ²ΠΎΠΉ ΡΠ΅ΡΠ²Π΅Ρ Π»ΠΈΠ±ΠΎ Π±ΡΡΡ ΠΊΠ»ΠΈΠ΅Π½ΡΠΎΠΌ (ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠΈΡΡΡΡ ΠΊ ΡΠΆΠ΅ ΡΠΎΠ·Π΄Π°Π½Π½ΠΎΠΌΡ ΡΠ΅ΡΠ²Π΅ΡΡ Π² ΡΠ΅ΡΠΈ), Π΄Π°Π»Π΅Π΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ Π²Π²Π΅ΡΡΠΈ ΠΈΠ½Π΄ΠΈΠ²ΠΈΠ΄ΡΠ°Π»ΡΠ½ΠΎΠ΅ ΠΈΠΌΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ, IP-Π°Π΄ΡΠ΅Ρ ΠΈ Π½ΠΎΠΌΠ΅Ρ ΠΏΠΎΡΡΠ° ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ. ΠΠΎΡΠ»Π΅ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ Π½Π°ΡΡΡΠΎΠ΅ΠΊ Π²ΡΠ΅Ρ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ² ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Π² ΠΏΠΎΠ»Π΅ «ΠΎΠΊΠ½Π° ΡΠ΅ΠΊΡΡΠΎΠ²ΡΡ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΉ» Π²Π²ΠΎΠ΄ΠΈΠΌ Π½ΡΠΆΠ½ΡΡ Π½Π°ΠΌ ΡΠ΅ΠΊΡΡΠΎΠ²ΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΈ ΠΎΡΠΏΡΠ°Π²Π»ΡΠ΅ΠΌ Π²ΡΠ΅ΠΌ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΌ ΡΠ°ΡΠ° (ΠΎΡΠΏΡΠ°Π²ΠΊΠ° ΠΎΡΡΡΠ΅ΡΡΠ²Π»ΡΠ΅ΡΡΡ ΠΏΠΎ ΡΠΈΠΏΡ ΠΊΠ»ΠΈΠ΅Π½Ρ0=>ΡΠ΅ΡΠ²Π΅Ρ=>ΠΊΠ»ΠΈΠ΅Π½Ρ1 =>ΠΊΠ»ΠΈΠ΅Π½Ρ2=>ΠΊΠ»ΠΈΠ΅Π½Ρ n). ΠΠΊΠ½ΠΎ «ΡΠ°ΡΠ° ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΉ» Π±ΡΠ΄Π΅Ρ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ°ΡΡ Π²ΡΡ ΠΏΠ΅ΡΠ΅ΠΏΠΈΡΠΊΡ ΡΠ΅ΠΊΡΡΠΎΠ²ΡΠΌΠΈ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡΠΌΠΈ Π²ΡΠ΅Ρ ΠΊΠ»ΠΈΠ΅Π½ΡΠΎΠ², Π½Π°Ρ ΠΎΠ΄ΡΡΠΈΡ ΡΡ Π½Π° Π΄Π°Π½Π½ΠΎΠΌ ΡΠ΅ΡΠ²Π΅ΡΠ΅. ΠΠ΅ΡΡ Π°ΡΡ ΠΈΠ² ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΉ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ·Π½Π°ΡΡ ΠΏΡΡΡΠΌ Π½Π°ΠΆΠ°ΡΠΈΡ Π½Π° ΠΊΠ½ΠΎΠΏΠΊΡ «ΠΎΡΠΊΡΡΡΡ Π»ΠΎΠ³ΠΈ», Π³Π΄Π΅ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡΡΡ ΠΈΡΡΠΎΡΠΈΡ Π²ΡΠ΅ΠΉ ΠΏΠ΅ΡΠ΅ΠΏΠΈΡΠΊΠΈ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ. Π Π΄Π°Π½Π½ΠΎΠΌ Π°ΡΡ ΠΈΠ²Π΅ Π΄ΠΎΠ»ΠΆΠ½Π° ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΡΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎ ΠΈΠΌΠ΅Π½ΠΈ ΠΏΠΎΠ»ΡΡΠ°ΡΠ΅Π»Ρ (ΠΎΡΠΏΡΠ°Π²ΠΈΡΠ΅Π»Ρ) ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΉ, Π½Π΅ΠΏΠΎΡΡΠ΅Π΄ΡΡΠ²Π΅Π½Π½ΠΎ ΡΠ°ΠΌΠΎ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ ΠΈ Π²ΡΠ΅ΠΌΡ ΠΈ Π΄Π°ΡΠ° ΠΎΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ (ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ) ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ.
1. ΠΠ½Π°Π»ΠΈΠ· ΠΈΡΡ ΠΎΠ΄Π½ΡΡ Π΄Π°Π½Π½ΡΡ
ΠΡΠΈ Π²ΡΠΏΠΎΠ»Π΅Π½ΠΈΠΈ Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΠΊΡΡΡΠΎΠ²ΠΎΠ³ΠΎ ΠΏΡΠΎΠ΅ΠΊΡΠ° Π±ΡΠ΄Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΡΠ΅Π΄Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ Microsoft Visual Studio 2008 VΠ‘++.
ΠΡΠ±ΠΎΡ Π΄Π°Π½Π½ΠΎΠΉ ΡΡΠ΅Π΄Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΎΠ±ΡΡΡΠ½ΡΠ΅ΡΡΡ ΡΡΠ΄ΠΎΠΌ ΠΏΡΠ΅ΠΈΠΌΡΡΠ΅ΡΡΠ²:
1) ΠΠΎΠ»Π΅Π΅ Π±ΡΡΡΡΠΎΠ΅ Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΠΊΠΎΠ΄Π°. ΠΡΠ½ΠΎΠ²Π° Π»ΡΠ±ΠΎΠ³ΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΠΎΠ³ΠΎ ΡΠ΅ΡΠ΅Π½ΠΈΡ — ΡΡΠΎ ΠΊΠΎΠ΄, Π½Π°ΠΏΠΈΡΠ°Π½Π½ΡΠΉ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ°ΠΌΠΈ. Visual Studio 2008 ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ ΠΏΠΈΡΠ°ΡΡ ΠΊΠΎΠ΄ Π±ΡΡΡΡΠ΅Π΅, ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Ρ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ ΡΡΠ΅Π΄ΡΡΠ² ΠΈ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠ΅ΠΉ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΠΎΠ²ΡΡΠ°ΡΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡ ΡΡΡΠ΄Π°: ΡΠ΅Ρ Π½ΠΎΠ»ΠΎΠ³ΠΈΡ IntelliSense®, Π°Π²ΡΠΎΠ·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠΎΠ², Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ΅ Π²ΡΠ΄Π΅Π»Π΅Π½ΠΈΠ΅ ΡΠ²Π΅ΡΠΎΠΌ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈΡ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΠΉ, ΠΏΠΎΠΈΡΠΊ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ², ΠΏΡΠΎΠ²Π΅ΡΠΊΡ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ° ΠΈ ΡΠΈΠΏΠΎΠ², ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΡ (ΡΠ΅ΡΠ°ΠΊΡΠΎΡΠΈΠ½Π³) ΠΊΠΎΠ΄Π°, ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΡΡΠ°Π³ΠΌΠ΅Π½ΡΠ°ΠΌΠΈ ΠΊΠΎΠ΄Π° ΠΈ ΠΌΠ½ΠΎΠ³ΠΎΠ΅ Π΄ΡΡΠ³ΠΎΠ΅.
2) ΠΡΡΡΠΎΠ΅Π½Π½ΡΠ΅ ΡΡΠ΅Π΄ΡΡΠ²Π°. Visual Studio 2008 ΠΏΠΎΠ²ΡΡΠ°Π΅Ρ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡ ΡΡΡΠ΄Π° ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΎΠ², ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΡ Π½Π°Π±ΠΎΡ Π²ΡΡΡΠΎΠ΅Π½Π½ΡΡ ΡΡΠ΅Π΄ΡΡΠ², Π°Π²ΡΠΎΠΌΠ°ΡΠΈΠ·ΠΈΡΡΡΡΠΈΡ Π½Π΅ ΡΠΎΠ»ΡΠΊΠΎ ΠΊΠΎΠ΄ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅, Π½ΠΎ ΠΈ Π΄ΡΡΠ³ΠΈΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ. Π‘ΠΈΡΡΠ΅ΠΌΠ° ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΠΏΡΠΎΠ΅ΠΊΡΠ°ΠΌΠΈ Visual Studio ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π±Π΅Π· ΡΡΠΈΠ»ΠΈΠΉ ΡΠ΅ΡΠ°ΡΡ Π²ΡΠ΅ Π·Π°Π΄Π°ΡΠΈ ΠΏΠΎ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΠΏΡΠΎΠ΅ΠΊΡΠ°ΠΌΠΈ — ΠΎΡ Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΡ ΠΏΠ΅ΡΠ²ΠΎΠΉ ΡΡΡΠΎΠΊΠΈ ΠΊΠΎΠ΄Π° Π΄ΠΎ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΠΏΠ°ΠΊΠ΅ΡΠ° Π΄Π»Ρ ΡΠ°Π·Π²Π΅ΡΡΡΠ²Π°Π½ΠΈΡ Π³ΠΎΡΠΎΠ²ΠΎΠ³ΠΎ ΠΠ. Π ΠΏΡΠΎΡΠ΅ΡΡΠ΅ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ Π΄ΠΎΡΡΡΠΏΠ½Ρ Π²ΠΈΠ·ΡΠ°Π»ΡΠ½ΡΠ΅ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΡ, ΠΎΠ±ΠΎΠ·ΡΠ΅Π²Π°ΡΠ΅Π»ΠΈ ΡΠ΅ΡΠ²Π΅ΡΠΎΠ² ΠΈ Π΄Π°Π½Π½ΡΡ , ΠΎΡΠ»Π°Π΄ΡΠΈΠΊΠΈ, ΡΡΠ΅Π΄ΡΡΠ²Π° Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠΉ ΡΠ±ΠΎΡΠΊΠΈ, ΡΠΎΠ½ΠΎΠ²Π°Ρ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΡ, ΠΈΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΡ Ρ ΡΠΈΡΡΠ΅ΠΌΠΎΠΉ ΠΊΠΎΠ½ΡΡΠΎΠ»Ρ Π²Π΅ΡΡΠΈΠΉ ΠΈΡΡ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°, Π²ΡΡΡΠΎΠ΅Π½Π½Π°Ρ ΡΠΏΡΠ°Π²ΠΎΡΠ½Π°Ρ ΡΠΈΡΡΠ΅ΠΌΠ°, Π° ΡΠ°ΠΊΠΆΠ΅ ΡΡΠ΄ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΠΉ Visual Studio ΠΎΡ ΡΡΠΎΡΠΎΠ½Π½ΠΈΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»Π΅ΠΉ. ΠΠ»Π°Π³ΠΎΠ΄Π°ΡΡ Π²ΡΠ΅ΠΌΡ ΡΡΠΎΠΌΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΈ ΠΌΠΎΠ³ΡΡ ΡΠΎΡΡΠ΅Π΄ΠΎΡΠΎΡΠΈΡΡΡΡ Π½Π° Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ Π±ΠΈΠ·Π½Π΅Ρ-Π·Π°Π΄Π°Ρ ΠΈ Π±ΡΡΡΡΠ΅Π΅ ΠΈΡ ΡΠ΅ΡΠ°ΡΡ.
3) Π Π°Π·ΡΠ°Π±ΠΎΡΠΊΠ° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΠΎΠ³ΠΎ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠ΅Π½ΠΈΡ Π΄Π»Ρ Windows. Visual Studio 2008 ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ ΠΎΡΠ½ΠΎΠ²Π½ΡΠ΅ Windows API, Microsoft Foundation Classes, NET Framework ΠΈΠ»ΠΈ Π»ΡΠ±ΠΎΠΉ SDK. Π‘ ΠΏΠΎΠΌΠΎΡΡΡ ΠΎΠ΄Π½ΠΎΠ³ΠΎ Π½Π°Π±ΠΎΡΠ° ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΎΠ² ΠΌΠΎΠΆΠ½ΠΎ ΡΠ°Π·ΡΠ°Π±Π°ΡΡΠ²Π°ΡΡ ΡΠΈΡΡΠ΅ΠΌΠ½ΡΠ΅ ΡΠ»ΡΠΆΠ±Ρ, Π΄ΡΠ°ΠΉΠ²Π΅ΡΡ ΡΡΡΡΠΎΠΉΡΡΠ², ΡΡΠΈΠ»ΠΈΡΡ, ΠΈΠ³ΡΡ, Π½Π°ΡΡΠΎΠ»ΡΠ½ΠΎΠ΅ ΠΠ, ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π΄Π»Ρ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΠ·Π°ΡΠΈΠΈ Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠΉ Π±ΠΈΠ·Π½Π΅ΡΠ° ΠΈ ΠΌΠ½ΠΎΠ³ΠΎΠ΅ Π΄ΡΡΠ³ΠΎΠ΅. ΠΠ΅Π·Π°Π²ΠΈΡΠΈΠΌΠΎ ΠΎΡ ΡΠΈΠΏΠ° ΠΠ, Visual Studio ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ Π±ΠΎΠ»Π΅Π΅ ΡΠ΄ΠΎΠ±Π½ΡΠ΅ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΈΠ΅ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΡ, ΡΠ²ΡΠ·ΡΠ²Π°ΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΈ Π±ΠΈΠ·Π½Π΅Ρ-ΠΏΡΠΎΡΠ΅ΡΡΡ ΠΈ ΡΡΠΊΠΎΡΡΡΡ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ ΡΠ΅ΡΠ΅Π½ΠΈΠΉ.
4) Microsoft Visual Studio 2008 ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ ΠΈΠ½Π΄ΠΈΠ²ΠΈΠ΄ΡΠ°Π»ΡΠ½ΡΠΌ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ°ΠΌ ΠΈ Π½Π΅Π±ΠΎΠ»ΡΡΠΈΠΌ Π³ΡΡΠΏΠΏΠ°ΠΌ, ΡΠΎΠ·Π΄Π°ΡΡΠΈΠΌ ΡΠ΅ΡΠ΅Π½ΠΈΡ Π΄Π»Ρ ΠΠ½ΡΠ΅ΡΠ½Π΅ΡΠ°, Windows, Microsoft Office ΠΈ Windows Mobile, ΡΡΠΊΠΎΡΠΈΡΡ ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΡΠ΅ΡΠ΅Π½ΠΈΠΉ, Π·Π½Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎ ΠΎΠ±Π»Π΅Π³ΡΠΈΡΡ ΠΆΠΈΠ·Π½Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΠΌ, ΠΏΠΎΠ²ΡΡΠΈΡΡ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎΡΡΡ ΠΊΠΎΠ»Π»Π΅ΠΊΡΠΈΠ²Π½ΠΎΠΉ ΡΠ°Π±ΠΎΡΡ. ΠΠ΅Π·Π°Π²ΠΈΡΠΈΠΌΠΎ ΠΎΡ ΠΏΠ»Π°ΡΡΠΎΡΠΌΡ, Π½Π° ΠΊΠΎΡΠΎΡΡΡ ΠΎΡΠΈΠ΅Π½ΡΠΈΡΠΎΠ²Π°Π½ΠΎ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅, Visual Studio 2008 ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°Π΅Ρ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎΡΡΡ, ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡ ΠΈ ΡΡΠ°Π±ΠΈΠ»ΡΠ½ΠΎΡΡΡ, Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡΠ΅ Π΄Π»Ρ ΡΠΎΠ³ΠΎ, ΡΡΠΎΠ±Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΈ ΠΌΠΎΠ³Π»ΠΈ ΡΠΎΡΡΠ΅Π΄ΠΎΡΠΎΡΠΈΡΡΡΡ Π½Π° Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎ Π²Π°ΠΆΠ½ΡΡ Π±ΠΈΠ·Π½Π΅Ρ-Π·Π°Π΄Π°ΡΠ°Ρ . Π’Π°ΠΊΠΆΠ΅ Π² Visual Studio 2008 ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅ΡΡΡ ΠΎΠ±ΡΠΈΡΠ½Π°Ρ ΡΠΊΠΎΡΠΈΡΡΠ΅ΠΌΠ°, Π±Π»Π°Π³ΠΎΠ΄Π°ΡΡ ΠΊΠΎΡΠΎΡΠΎΠΉ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΈ Π²ΡΠ΅Π³Π΄Π° ΠΌΠΎΠ³ΡΡ Π½Π°ΠΉΡΠΈ ΠΏΠ°ΡΡΠ½Π΅ΡΠΎΠ², ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΈ Π΄ΡΡΠ³ΠΈΡ ΡΠ»Π΅Π½ΠΎΠ² ΡΠΎΠΎΠ±ΡΠ΅ΡΡΠ²Π°, ΡΠΏΠΎΡΠΎΠ±Π½ΡΡ ΠΏΠΎΠΌΠΎΡΡ Π² Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΠΈ Π²Π΅Π»ΠΈΠΊΠΎΠ»Π΅ΠΏΠ½ΠΎΠ³ΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΠΎΠ³ΠΎ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠ΅Π½ΠΈΡ.
5) Visual Studio 2008 Standard Edition ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΡ ΠΠ Π΄Π»Ρ ΠΠ½ΡΠ΅ΡΠ½Π΅ΡΠ° ΠΈ Π΄Π»Ρ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΎΠ½Π½ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΡ Windows, Π² ΡΠΎΠΌ ΡΠΈΡΠ»Π΅ Π΄Π»Ρ Windows Vista® ΠΈ Windows Server® 2008. Visual Studio 2008 Professional Edition ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΡ ΠΠ Π΄Π»Ρ ΠΠ½ΡΠ΅ΡΠ½Π΅ΡΠ°, Windows, Microsoft Office ΠΈ Windows Mobile.
2. ΠΡΠΎΠ΅ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠΌΠΏΠ»Π΅ΠΊΡΠ°
ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° ΠΎΠ±ΠΌΠ΅Π½ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ Π»ΠΎΠΊΠ°Π»ΡΠ½ΡΠΉ ΠΡΠΈ ΡΠΎΠ·Π΄Π°Π½ΠΈΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠΌΠΏΠ»Π΅ΠΊΡΠ°, Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ ΠΊΠ»ΡΡΠ΅Π²ΡΠ΅ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΎΠΉ. ΠΠ°Π½Π½ΡΠΌΠΈ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ°ΠΌΠΈ ΡΠ²Π»ΡΡΡΡΡ: ΠΊΠ½ΠΎΠΏΠΊΠΈ — ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΡΠ΅ΡΠ²Π΅ΡΠ° (Π΅ΡΠ»ΠΈ ΡΠ΅ΡΠ²Π΅Ρ Π½Π΅ ΡΠΎΠ·Π΄Π°Π½), ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ ΠΊΠ»ΠΈΠ΅Π½ΡΠ° ΠΊ ΡΠ΅ΡΠ²Π΅ΡΡ, Π²ΡΡ ΠΎΠ΄ Π»ΠΈΠ±ΠΎ ΠΎΡΡΠ°Π½ΠΎΠ²ΠΊΠ° ΡΠ°ΡΠ°, ΠΎΡΠΏΡΠ°Π²ΠΊΠ° Π²Π²Π΅Π΄ΡΠ½Π½ΠΎΠ³ΠΎ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ, ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ Π°ΡΡ ΠΈΠ²Π° ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΉ; ΡΠ°ΠΊ ΠΆΠ΅ ΠΎΠ±Π»Π°ΡΡΠΈ Π²Π²ΠΎΠ΄Π° ΠΈΠΌΠ΅Π½ΠΈ (nick name) ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ, Π²Π²ΠΎΠ΄ IP-Π°Π΄ΡΠ΅ΡΠ° ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ, Π½ΠΎΠΌΠ΅ΡΠ° ΠΏΠΎΡΡΠ°, ΠΎΠΊΠ½ΠΎ Π²Π²ΠΎΠ΄Π° ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΉ, ΠΎΠΊΠ½ΠΎ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ ΠΏΠΎΠ»ΡΡΠ΅Π½Π½ΡΡ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΉ.
ΠΠ° ΡΡΠΎΡΠΎΠ½Π΅ ΡΠ΅ΡΠ²Π΅ΡΠ° Π²Π΅ΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΡΠΉ ΠΊΠΎΠΌΠΏΠ»Π΅ΠΊΡ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΠΎΠ±ΠΎΠΉ:
1) ΠΡΠΈ ΡΠΎΠ·Π΄Π°Π½ΠΈΠΈ ΡΠ΅ΡΠ²Π΅ΡΠ° Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ Π²Π²Π΅ΡΡΠΈ ΠΈΠΌΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ (Π²ΡΠ·ΡΠ²Π°Π΅ΠΌ ΡΡΠ½ΠΊΡΠΈΡ QueryName — Π·Π°ΠΏΡΠΎΡ ΠΈΠΌΠ΅Π½ΠΈ ΡΠ°ΡΡΡΡΠ΅Π³ΠΎ ΠΏΠ΅ΡΠ΅Π΄ ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ΠΌ ΡΠΎΠΊΠ΅ΡΠ°);
2) ΠΠ°ΠΏΡΡΠΊ ΡΠ΅ΡΠ²Π΅ΡΠ° (OnBnClickedRadioServer — ΡΡΠ½ΠΊΡΠΈΡ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΡΠ΅ΡΠ²Π΅ΡΠ°);
3) ΠΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ Π·Π°ΠΏΡΠ΅ΡΡ Π΄ΠΎΡΡΡΠΏΠ° (DisabledControl — Π·Π°ΠΏΡΠ΅ΡΡ Π½Π° Π²Π²ΠΎΠ΄ IP-Π°Π΄ΡΠ΅ΡΠ°, ΠΏΠΎΡΡΠ° ΠΈ ΠΈΠΌΠ΅Π½ΠΈ ΡΠ°ΡΡΡΡΠ΅Π³ΠΎ ΠΏΠΎΡΠ»Π΅ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΡΠ΅ΡΠ²Π΅ΡΠ°);
4) ΠΡΠΈΠ½ΠΈΠΌΠ°Π΅ΠΌ Π·Π°ΠΏΡΠΎΡΡ Π½Π° ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ (Π²ΡΠ·ΡΠ²Π°Π΅ΠΌ ΡΡΠ½ΠΊΡΠΈΡ OnAccept, ΠΏΡΠΈ ΠΊΠΎΡΠΎΡΠΎΠΉ ΡΠΎΠ·Π΄Π°ΡΠΌ ΡΠΎΠΊΠ΅Ρ ΠΈ Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅ΠΌ Π΅Π³ΠΎ Π² ΡΠΏΠΈΡΠΎΠΊ ΡΠ°Π±ΠΎΡΠΈΡ ΡΠΎΠΊΠ΅ΡΠΎΠ²);
5) ΠΠ·Π²Π»Π΅ΡΠ΅Π½ΠΈΠ΅ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ ΠΈΠ· ΡΠ΅ΡΠΈ (OnReceive — ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎ ΠΈΠΌΠ΅Π½ΠΈ ΡΠ°ΡΡΡΡΠ΅Π³ΠΎ, ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ΅ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ, Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ ΠΈ Π΄Π°ΡΡ ΠΎΡΠΏΡΠ°Π²ΠΈΡΠ΅Π»Ρ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ, ΡΡΡ ΠΆΠ΅ ΠΎΡΡΡΠ»ΠΊΠ° ΠΏΡΠΈΠ½ΡΡΠΎΠ³ΠΎ ΡΠ΅Π²Π΅ΡΠΎΠΌ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ Π² ΡΠ΅ΡΡ Π΄ΡΡΠ³ΠΈΠΌ ΠΊΠ»ΠΈΠ΅Π½ΡΠ°ΠΌ, ΠΊΠ°ΠΊ Π·Π΅ΡΠΊΠ°Π»ΠΎ, ΠΊΠ»ΠΈΠ΅Π½Ρ ΠΌΠΎΠΆΠ΅Ρ ΡΠ°Π±ΠΎΡΠ°ΡΡ Ρ Π΄ΡΡΠ³ΠΈΠΌΠΈ ΠΊΠ»ΠΈΠ΅Π½ΡΠ°ΠΌΠΈ Π² ΡΠ΅ΡΠΈ ΡΠΎΠ»ΡΠΊΠΎ ΡΠ΅ΡΠ΅Π· ΡΠ΅ΡΠ²Π΅Ρ);
6) ΠΠΎΡΠ»Π΅ ΡΠΎΡΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π±ΡΡΠ΅ΡΠ° ΡΠ΅ΠΊΡΡΠΎΠ²ΠΎΠ³ΠΎ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ (ΡΡΠ½ΠΊΡΠΈΡ SendChat), ΠΏΠΎΡΡΠ»Π°Π΅ΠΌ ΠΏΠΎΠ΄Π³ΠΎΡΠΎΠ²Π»Π΅Π½Π½ΠΎΠ΅ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ Π² ΡΠ΅ΡΡ (SendBuffer);
7) ΠΡΠΏΡΠ°Π²Π»ΡΠ΅ΠΌ ΠΊΠ»ΠΈΠ΅Π½ΡΠ°ΠΌ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ Π»ΡΠ΄Π΅ΠΉ Π² ΡΠ°ΡΠ΅ (SendCountPeople);
8) ΠΠΎΡΠ»Π΅ ΠΎΠΊΠΎΠ½ΡΠ°Π½ΠΈΡ ΡΠ°Π±ΠΎΡΡ ΡΠ΅ΡΠ²Π΅ΡΠ° ΠΎΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅ΠΌ ΡΠ°Ρ (StopChat).
ΠΠ° ΡΡΠΎΡΠΎΠ½Π΅ ΠΊΠ»ΠΈΠ΅Π½ΡΠ° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΡΠΉ ΠΊΠΎΠΌΠΏΠ»Π΅ΠΊΡ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌΠΈ Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠΌΠΈ:
1) ΠΡΠΈ Π°ΠΊΡΠΈΠ²Π°ΡΠΈΠΈ ΠΊΠ»ΠΈΠ΅Π½ΡΠ° Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ Π²Π²Π΅ΡΡΠΈ ΠΈΠΌΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ (Π²ΡΠ·ΡΠ²Π°Π΅ΠΌ ΡΡΠ½ΠΊΡΠΈΡ QueryName — Π·Π°ΠΏΡΠΎΡ ΠΈΠΌΠ΅Π½ΠΈ ΡΠ°ΡΡΡΡΠ΅Π³ΠΎ ΠΏΠ΅ΡΠ΅Π΄ ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ΠΌ ΡΠΎΠΊΠ΅ΡΠ°);
2) ΠΠ°ΠΏΡΡΠΊ ΠΊΠ»ΠΈΠ΅Π½ΡΠ° (OnBnClickedRadioClient — ΡΡΠ½ΠΊΡΠΈΡ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΡΠ΅ΡΠ²Π΅ΡΠ°);
3) ΠΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ Π·Π°ΠΏΡΠ΅ΡΡ Π΄ΠΎΡΡΡΠΏΠ° (DisabledControl — Π·Π°ΠΏΡΠ΅ΡΡ Π½Π° Π²Π²ΠΎΠ΄ IP-Π°Π΄ΡΠ΅ΡΠ°, ΠΏΠΎΡΡΠ° ΠΈ ΠΈΠΌΠ΅Π½ΠΈ ΡΠ°ΡΡΡΡΠ΅Π³ΠΎ ΠΏΠΎΡΠ»Π΅ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΡΠ΅ΡΠ²Π΅ΡΠ°);
4) ΠΠΊΡΠΈΠ²ΠΈΡΡΠ΅ΠΌ ΡΠΎΠ±ΡΡΠΈΠ΅ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ (OnConnect);
5) ΠΡΠΏΡΠ°Π²Π»ΡΠ΅ΠΌ ΠΏΠΎΠ΄Π³ΠΎΡΠΎΠ²Π»Π΅Π½Π½ΠΎΠ΅ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ (OnBnClickedButtonSen):
6) ΠΠΎΡΠ»Π΅ ΠΎΠΊΠΎΠ½ΡΠ°Π½ΠΈΡ ΡΠ°Π±ΠΎΡΡ ΠΊΠ»ΠΈΠ΅Π½ΡΠ° Π²ΡΡ ΠΎΠ΄ΠΈΠΌ ΠΈΠ· ΡΠ°ΡΠ° (StopChat).
ΠΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΡΠΉ ΠΊΠΎΠΌΠΏΠ»Π΅ΠΊΡ ΡΠΎΠΊΠ΅ΡΠ° ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌΠΈ Π΄Π΅ΠΉΡΡΠ²Π°ΠΌΠΈ:
1) ΠΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡ ΡΠΎΠΊΠ΅ΡΠ°;
2) ΠΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ Π½Π° ΡΡΠΎΡΠΎΠ½Π΅ ΠΊΠ»ΠΈΠ΅Π½ΡΠ° (OnConnect);
3) ΠΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΉ (OnReceive);
4) ΠΡΡΡΠ΅ΡΡΠ²Π»Π΅Π½ΠΈΠ΅ Π·Π°ΠΏΡΠΎΡΠ° Π½Π° ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ, Π½Π°ΠΏΡΠ°Π²Π»ΡΠ΅ΠΌΠΎΠ³ΠΎ ΠΊΠ»ΠΈΠ΅Π½ΡΠΎΠΌ ΡΠ΅ΡΠ²Π΅ΡΡ (OnAccept).
Π‘Ρ Π΅ΠΌΠ° ΠΎΡΠΏΡΠ°Π²ΠΊΠΈ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΉ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½Π° Π½Π° ΡΠΈΡΡΠ½ΠΊΠ΅ 1.
Π ΠΈΡΡΠ½ΠΎΠΊ 1. Π‘Ρ Π΅ΠΌΠ° ΠΎΡΠΏΡΠ°Π²ΠΊΠΈ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΉ Π Π°Π·ΡΠ°Π±ΠΎΡΠ°Π½Π½Π°Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΡΠ°ΠΉΠ»Ρ:
ChatCppDlg.cpp — ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΉ ΡΠ°ΠΉΠ» ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΡΡΠ½ΠΊΡΠΈΠΉ, Π²ΠΊΠ»ΡΡΠ°ΡΡΠΈΠΉ ΠΊΠ»Π°ΡΡ Π΄ΠΈΠ°Π»ΠΎΠ³ΠΎΠ²ΠΎΠ³ΠΎ ΠΎΠΊΠ½Π°.
ΠΡΠΎ Π³Π»Π°Π²Π½ΡΠΉ ΡΠ°ΠΉΠ» ΠΏΡΠΎΠ΅ΠΊΡΠ° Π΄Π»Ρ VC C++. ΠΡΠΎΠ΅ΠΊΡΡ Π³Π΅Π½Π΅ΡΠΈΡΡΠ΅ΡΡΡ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΠΌΠ°ΡΡΠ΅ΡΠ° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ. ΠΠ½ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎ Π²Π΅ΡΡΠΈΠΈ Visual C++, ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎ ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ°Ρ , ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡ ΠΈ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡΡ ΠΏΡΠΎΠ΅ΠΊΡΠ°.
ChatCpp.h — ΠΡΠ½ΠΎΠ²Π½ΠΎΠΉ Π²ΠΊΠ»ΡΡΠ°Π΅ΠΌΡΠΉ ΡΠ°ΠΉΠ» ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ. Π Π½Π΅ΠΌ ΠΎΠΏΠΈΡΠ°Π½ Π³Π»Π°Π²Π½ΡΠΉ ΠΊΠ»Π°ΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ
CChatCppApp, Π° ΡΠ°ΠΊΠΆΠ΅ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½Ρ Π΄ΡΡΠ³ΠΈΠ΅ Π²ΠΊΠ»ΡΡΠ°Π΅ΠΌΡΠ΅ ΡΠ°ΠΉΠ»Ρ;
ChatCpp.cpp — ΠΡΠ½ΠΎΠ²Π½ΠΎΠΉ ΡΠ°ΠΉΠ» ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ. Π Π½Π΅ΠΌ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Ρ ΠΌΠ΅ΡΠΎΠ΄Ρ Π³Π»Π°Π²Π½ΠΎΠ³ΠΎ ΠΊΠ»Π°ΡΡΠ° CChatCppApp ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΈ Π³Π»ΠΎΠ±Π°Π»ΡΠ½ΡΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΡ;
Sock.cpp — ΠΊΠ»Π°ΡΡ ΡΠΎΠΊΠ΅ΡΠΎΠ²;
ChatCpp.rc — Π€Π°ΠΉΠ» ΡΠ΅ΡΡΡΡΠΎΠ². Π ΡΡΠΎΠΌ ΡΠ°ΠΉΠ»Π΅ ΠΎΠΏΠΈΡΠ°Π½Ρ Π²ΡΠ΅ ΡΠ΅ΡΡΡΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ.
Π‘Π°ΠΌΠΈ ΡΠ΅ΡΡΡΡΡ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ Π·Π°ΠΏΠΈΡΠ°Π½Ρ Π² ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π΅ RES, ΡΠ°ΡΠΏΠΎΠ»ΠΎΠΆΠ΅Π½Π½ΠΎΠΌ Π² Π³Π»Π°Π²Π½ΠΎΠΌ ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π΅ ΠΏΡΠΎΠ΅ΠΊΡΠ°;
resChatCpp.ico — Π€Π°ΠΉΠ» ΠΈΠΊΠΎΠ½ΠΊΠΈ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π΄Π»Ρ ΠΏΡΠΈΠΊΠ»Π°Π΄Π½ΠΎΠ³ΠΎ ΠΎΠΊΠ½Π°;
resChatCpp.rc2 — Π ΡΡΠΎΠΌ ΡΠ°ΠΉΠ»Π΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Ρ ΡΠ΅ΡΡΡΡΡ, ΠΊΠΎΡΠΎΡΡΠ΅ Π½Π΅Π»ΡΠ·Ρ ΡΠ΅Π΄Π°ΠΊΡΠΈΡΠΎΠ²Π°ΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΠ΅Π΄Π°ΠΊΡΠΎΡΠ° ΡΠ΅ΡΡΡΡΠΎΠ² ΡΡΠ΅Π΄Ρ Visual C++.
ChatCppDlg.h — ΠΊΠ»ΡΡΠ°Π΅Ρ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎ ΡΡΡΡΠΊΡΡΡΠ΅ (ΠΈΠΌΠ΅Π½ΠΈ ΡΠ°ΡΡΡΡΠ΅Π³ΠΎ, Π±ΡΡΠ΅Ρ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΉ, Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ ΠΈ Π΄Π°ΡΡ ΠΏΠΎΠ»ΡΡΠ°ΡΠ΅Π»Ρ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ), ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅Ρ ΡΠ²ΡΠ·Ρ ΠΌΠ΅ΠΆΠ΄Ρ Π΄ΠΈΠ°Π»ΠΎΠ³ΠΎΠ²ΡΠΌ ΠΎΠΊΠ½ΠΎΠΌ ΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΎΠΉ;
ΠΡΡΠ³ΠΈΠ΅ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΠ΅ ΡΠ°ΠΉΠ»Ρ:
StdAfx.h — ΠΠΊΠ»ΡΡΠ°ΡΡΡΡ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΡΠ½ΡΠ΅ ΡΠ°ΠΉΠ»Ρ, ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠ΅Π΄ΠΊΠΎ ΠΌΠ΅Π½ΡΡΡΡΡ. ΠΠ»ΠΈ Π²ΠΎΠΎΠ±ΡΠ΅ Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ ΠΌΠ΅Π½ΡΡΡΡΡ Π΄Π»Ρ Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΠΏΡΠΎΠ΅ΠΊΡΠ° (ΡΠ΅ ΠΆΠ΅ stdio. h ΠΈΠ»ΠΈ windows. h). Π§ΡΠΎΠ±Ρ ΠΎΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠΎΠ²Π°ΡΡ ΠΎΠ΄ΠΈΠ½ ΡΠ°Π· ΠΈ Π·Π°Π±ΡΡΡ.
Π‘ΠΎΠΏΡΡΡΡΠ²ΡΡΡΠΈΠΉ ΡΠ°ΠΉΠ» — stdafx. cpp — ΠΎΠ±ΡΡΠ½ΠΎ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΡΠΎΠ»ΡΠΊΠΎ #include «stdafx.h». ΠΠ½, ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΠΎ, ΠΈ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΡΠ΅ΡΡΡ.
Resource.h — Π‘ΡΠ°Π½Π΄Π°ΡΡΠ½ΡΠΉ ΡΠ°ΠΉΠ» Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠ°. Visual C++ ΡΠΈΡΠ°Π΅Ρ ΠΈ ΠΊΠΎΡΡΠ΅ΠΊΡΠΈΡΡΠ΅Ρ ΡΡΠΎΡ ΡΠ°ΠΉΠ».
ChatCpp.manifest — Π€Π°ΠΉΠ» ΠΎΠΏΠΈΡΡΠ²Π°Π΅Ρ ΡΠΈΠΏ ΠΏΠ»Π°ΡΡΠΎΡΠΌΡ, Π²Π΅ΡΡΠΈΡ, ΡΠΈΠΏ ΠΏΡΠΎΠ΅ΠΊΡΠ° ΠΈ Ρ. Π΄.
ReadMe.txt — ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅ Π²ΡΠ΅Ρ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΡΠ½ΡΡ ΡΠ°ΠΉΠ»ΠΎΠ², ΡΠ°ΠΉΠ»ΠΎΠ² ΠΈΡΡ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°, Π° ΡΠ°ΠΊ-ΠΆΠ΅ ΡΠ°ΠΉΠ»ΠΎΠ² ΡΠ΅ΡΡΡΡΠΎΠ².
ΠΠΈΡΡΠΈΠ½Π³ ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠ³ΠΎ ΡΠ°ΠΉΠ»Π° ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ:
// ΡΠ°ΠΉΠ» ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ
#include
#include
#include «stdafx.h»
#include «ChatCppDlg.h»
#include «.chatcppdlg.h»
// CAboutDlg => ΠΊΠ»Π°ΡΡ Π΄ΠΈΠ°Π»ΠΎΠ³ΠΎΠ²ΠΎΠ³ΠΎ ΠΎΠΊΠ½Π°
class CAboutDlg: public CDialog
{
public:
CAboutDlg ();
// ΡΠ²ΡΠ·Ρ Ρ ABOUTBOX ΡΠ΅ΡΠ΅Π· ΠΈΠ½Π΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ IDD
enum { IDD = IDD_ABOUTBOX };
protected:
virtual void DoDataExchange (CDataExchange* pDX); //ΡΡΠ½ΠΊΡΠΈΡ ΠΎΠ±ΠΌΠ΅Π½Π° Π΄Π°Π½Π½ΡΠΌΠΈ
// ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ
protected:
DECLARE_MESSAGE_MAP () // ΡΠ°Π±Π»ΠΈΡΠ° ΠΎΡΠΊΠ»ΠΈΠΊΠΎΠ²
public:
afx_msg void OnBnClickedOk ();
};
CAboutDlg:CAboutDlg (): CDialog (CAboutDlg:IDD)
{
}
void CAboutDlg: DoDataExchange (CDataExchange* pDX)
{
CDialog:DoDataExchange (pDX);
}
BEGIN_MESSAGE_MAP (CAboutDlg, CDialog)
ON_BN_CLICKED (IDOK, &CAboutDlg:OnBnClickedOk)
END_MESSAGE_MAP ()
// CChatCppDlg ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ
CChatCppDlg:CChatCppDlg (CWnd* pParent /*=NULL*/)
: CDialog (CChatCppDlg:IDD, pParent)
{
m_hIcon = AfxGetApp ()->LoadIcon (IDR_MAINFRAME);
}
void CChatCppDlg: DoDataExchange (CDataExchange* pDX)
{
CDialog:DoDataExchange (pDX);
DDX_Control (pDX, IDC_RADIO_SERVER, m_ButtonStartServer); // Π‘Π²ΡΠ·ΡΠ²Π΅Ρ ΠΎΠ±ΡΠ΅ΠΊΡ ΡΠ΅ΡΠ²Π΅ΡΠ° Ρ ΠΊΠΎΠ½ΡΡΠΎΠ»ΠΎΠΌ Server
DDX_Control (pDX, IDC_RADIO_CLIENT, m_ButtonStartClient);
DDX_Control (pDX, IDC_EDIT_NAME, m_wndName);
DDX_Control (pDX, IDC_EDIT_IP, m_wndIPAddress);
DDX_Control (pDX, IDC_EDIT_PORT, m_wndPort);
DDX_Control (pDX, IDC_EDIT_SEND, m_wndSend);
DDX_Control (pDX, IDC_BUTTON_SEND, m_ButtonSend);
DDX_Control (pDX, IDC_BUTTON_STOPCHAT, m_ButtonStopChat);
DDX_Control (pDX, IDC_EDIT_CHAT, m_wndChat);
DDX_Control (pDX, IDC_STATIC_COUNTPEOPLE, m_wndCountPeople);
}
BEGIN_MESSAGE_MAP (CChatCppDlg, CDialog)
ON_WM_SYSCOMMAND () // Π±ΡΠ΄Π΅ΠΌ ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°ΡΡ ΡΠΈΡΡΠ΅ΠΌΠ½ΡΠ΅ ΡΠΎΠ±ΡΡΠΈΡ
ON_WM_PAINT () //ΠΌΠΈΠΊΡΠΎΠΊΠΎΠΌΠ°Π½Π΄Ρ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΡ ΠΊΠ»ΠΈΠ΅Π½ΡΡΠΊΠΎΠΉ ΠΎΠ±Π»Π°ΡΡΠΈ
ON_WM_QUERYDRAGICON ()
ON_BN_CLICKED (IDC_RADIO_SERVER, OnBnClickedRadioServer) // ΠΌΠ°ΠΊΡΠΎΠΊΠΎΠΌΠ°Π½Π΄Ρ Π²ΡΠ·ΠΎΠ²Π° ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ° ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΉ ΠΎΡ ΠΊΠ½ΠΎΠΏΠΎΠΊ
ON_BN_CLICKED (IDC_RADIO_CLIENT, OnBnClickedRadioClient)
ON_BN_CLICKED (IDC_BUTTON_STOPCHAT, OnBnClickedButtonStopchat)
ON_BN_CLICKED (IDC_BUTTON_SEND, OnBnClickedButtonSend)
ON_WM_CLOSE ()
ON_EN_CHANGE (IDC_EDIT_NAME, &CChatCppDlg:OnEnChangeEditName)
ON_EN_CHANGE (IDC_EDIT_IP, &CChatCppDlg:OnEnChangeEditIp)
ON_EN_CHANGE (IDC_EDIT_PORT, &CChatCppDlg:OnEnChangeEditPort)
ON_EN_CHANGE (IDC_EDIT_SEND, &CChatCppDlg:OnEnChangeEditSend)
ON_BN_CLICKED (IDC_STATIC_COUNTPEOPLE, &CChatCppDlg:OnBnClickedStaticCountpeople)
ON_BN_CLICKED (IDC_BUTTON1, &CChatCppDlg:OnBnClickedButton1)
ON_LBN_SELCHANGE (IDC_LIST1, &CChatCppDlg:OnLbnSelchangeList1)
END_MESSAGE_MAP ()
BOOL CChatCppDlg: OnInitDialog ()
{
CDialog:OnInitDialog ();
// ΠΠ΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠ°Ρ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡ
SetWindowText («ΠΠ΅Ρ ΡΠ΅ΡΠΈ!»);
m_wndName.SetLimitText (12); // ΠΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΠ΅ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²Π° Π²Π²ΠΎΠ΄ΠΈΠΌΡΡ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ².
m_wndName.SetWindowText (g_EmptyName);
m_wndSend.SetLimitText (200); // ΠΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΠ΅ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²Π° Π²Π²ΠΎΠ΄ΠΈΠΌΡΡ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ².
m_wndIPAddress.SetWindowText («127.0.0.1»); // ΠΠ΄ΡΠ΅Ρ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ Π΄Π»Ρ ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ.
m_wndPort.SetWindowText («1500»); // ΠΠΎΡΡ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ.
m_ButtonStopChat.SetWindowText (g_strExitFromChat);
m_mainSocket.m_pParent = this;
return TRUE;
}
void CChatCppDlg: OnSysCommand (UINT nID, LPARAM lParam)
{
if ((nID & 0xFFF0) == IDM_ABOUTBOX)
{
CAboutDlg dlgAbout;
dlgAbout.DoModal ();
}
else
{
CDialog:OnSysCommand (nID, lParam);
}
}
void CChatCppDlg: OnPaint ()
{
if (IsIconic ())
{
CPaintDC dc (this); //ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡ ΡΡΡΡΠΎΠΉΡΡΠ²Π° Π΄Π»Ρ ΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ
SendMessage (WM_ICONERASEBKGND, reinterpret_cast (dc.GetSafeHdc ()), 0);
// Π²ΡΡΠ°Π²Π½ΠΈΠ²Π°Π½ΠΈΠ΅ Π·Π½Π°ΡΠΊΠ° ΠΏΠΎ ΡΠ΅Π½ΡΡΡ ΠΊΠ»ΠΈΠ΅Π½ΡΡΠΊΠΎΠ³ΠΎ ΠΏΡΡΠΌΠΎΡΠ³ΠΎΠ»ΡΠ½ΠΈΠΊΠ°
int cxIcon = GetSystemMetrics (SM_CXICON);
int cyIcon = GetSystemMetrics (SM_CYICON);
CRect rect;
GetClientRect (&rect);
int x = (rect.Width () — cxIcon + 1) / 2;
int y = (rect.Height () — cyIcon + 1) / 2;
dc.DrawIcon (x, y, m_hIcon);
}
else
{
CDialog:OnPaint ();
}
}
// Π²ΡΠ·ΠΎΠ² Π΄Π°Π½Π½ΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ ΡΠΈΡΡΠ΅ΠΌΠΎΠΉ ΠΏΡΠΈ ΠΏΠ΅ΡΠ΅ΡΠ°ΡΠΊΠΈΠ²Π°Π½ΠΈΠΈ ΠΎΠΊΠ½Π°
HCURSOR CChatCppDlg: OnQueryDragIcon ()
{
return static_cast (m_hIcon);
}
// ΠΠ°ΠΏΡΡΠΊΠ°Π΅ΠΌ ΡΠ΅ΡΠ²Π΅Ρ
void CChatCppDlg: OnBnClickedRadioServer ()
{
// ΠΡΠΎΠ²Π΅ΡΠΊΠΈ Π½Π΅ΡΠ°Π½ΠΊΡΠΈΠΎΠ½ΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ Π·Π°ΠΏΡΡΠΊΠ° ΡΠ΅ΡΠ²Π΅ΡΠ°:
// ΠΡΠ»ΠΈ ΠΊΠ½ΠΎΠΏΠΊΠ° Π½Π΅ Π² ΡΠΎΡΡΠΎΡΠ½ΠΈΠΈ Π½Π°ΠΆΠ°ΡΠΎΠΉ,
// Π΅ΡΠ»ΠΈ ΡΠΎΠΊΠ΅Ρ Π² ΡΠ°Π±ΠΎΡΠ΅ (Ρ.Π΅. ΡΠΎΠ»ΡΠΊΠΎ Ρ Π½ΡΠ»Π΅Π²ΡΠΌ ΡΠΎΠΊΠ΅ΡΠΎΠΌ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΡΠΈΠ½Π°ΡΡ ΡΠ°Π±ΠΎΡΠ°ΡΡ),
// ΠΎΡΠ΅Π½Ρ Π½Π΅ΡΠ΄ΠΎΠ±Π½ΠΎ Π΅ΡΠ»ΠΈ Π² ΡΠ°ΡΠ΅ Π²ΡΠ΅ Π±ΡΠ΄ΡΡ ΠΏΠΎΠ΄ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΡΠΌΠΈ ΠΈΠΌΠ΅Π½Π°ΠΌΠΈ.
if (m_ButtonStartServer.GetCheck () ≠ BST_CHECKED) return;
if (m_mainSocket.m_hSocket ≠ INVALID_SOCKET) return;
if (QueryName () == false)
{
AfxMessageBox («ΠΠ²Π΅Π΄ΠΈΡΠ΅ ΡΠ²ΠΎΠ΅ ΠΈΠΌΡ Π΄Π»Ρ ΡΠ°ΡΠ°!»);
StopChat ();
return;
}
CString strPort;
m_wndPort.GetWindowText (strPort);
// ΠΠ»Π°ΡΡ CAsyncSocket ΡΠΏΡΠΎΡΠ°Π΅Ρ ΠΏΡΠΎΡΠ΅Π΄ΡΡΡ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΡΠΎΠΊΠ΅ΡΠ°,
// Π²ΠΊΠ»Π°Π΄ΡΠ²Π°Ρ Π² ΡΡΠ½ΠΊΡΠΈΡ Create () Π½Π΅ΠΏΠΎΡΡΠ΅Π΄ΡΡΠ²Π΅Π½Π½ΠΎΠ΅ ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅
// ΡΠΎΠΊΠ΅ΡΠ° ΠΈ ΡΠ²ΡΠ·ΡΠ²Π°Π½ΠΈΠ΅ Π΅Π³ΠΎ Ρ ΠΎΠ΄Π½ΠΈΠΌ ΠΈΠ· IP Π°Π΄ΡΠ΅ΡΠΎΠΌ Π΄ΠΎΡΡΡΠΏΠ½ΠΎΠΌ Π½Π° ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΠ΅.
// atoi ΠΊΠΎΠ½Π²Π΅ΡΡΠΈΡΡΠ΅Ρ ΡΡΡΠΎΠΊΡ ansi to int
if (m_mainSocket.Create (atoi (strPort)) == FALSE)
{
AfxMessageBox («ΠΡΠΈΠ±ΠΊΠ° ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΡΠ΅ΡΠ²Π΅ΡΠ°! nΠΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ Π΄Π°Π½Π½ΡΠΉ ΠΏΠΎΡΡ ΡΠΆΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ!»);
StopChat ();
}
else
{
// ΠΠ²ΠΎΠ΄ΠΈΠΌ ΡΠΎΠΊΠ΅Ρ Π² ΡΠ΅ΠΆΠΈΠΌ ΠΏΡΠΎΡΠ»ΡΡΠΈΠ²Π°Π½ΠΈΡ Π·Π°ΠΏΡΠΎΡΠΎΠ² Π½Π° ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ.
if (m_mainSocket.Listen () == FALSE)
{
StopChat ();
}
else
{
// ΠΡΠ»ΠΈ Π²ΡΠ΅ Π² ΠΏΠΎΡΡΠ΄ΠΊΠ΅.
DisabledControl (true);
SetWindowText («Π‘Π΅ΡΠ²Π΅Ρ ΠΆΠ΄Π΅Ρ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ!»);
// Π ΡΠ°ΡΠ΅ ΡΠΎΠ»ΡΠΊΠΎ ΡΠ΅ΡΠ²Π΅Ρ.
m_wndCountPeople.SetWindowText («Π ΡΠ°ΡΠ΅ 1 ΡΠ΅Π». online»);
}
}
}
// ΠΠ°ΠΏΡΡΠΊΠ°Π΅ΠΌ ΠΊΠ»ΠΈΠ΅Π½ΡΠ°
void CChatCppDlg: OnBnClickedRadioClient ()
{
// ΠΠΎΠ½ΡΡΠΎΠ»Ρ Π½Π΅ΡΠ°Π½ΠΊΡΠΈΠΎΠ½ΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ Π·Π°ΠΏΡΡΠΊΠ° ΠΊΠ»ΠΈΠ΅Π½ΡΠ°:
// ΠΡΠ»ΠΈ ΠΊΠ½ΠΎΠΏΠΊΠ° Π½Π΅ Π² ΡΠΎΡΡΠΎΡΠ½ΠΈΠΈ Π½Π°ΠΆΠ°ΡΠΎΠΉ,
// Π΅ΡΠ»ΠΈ ΡΠΎΠΊΠ΅Ρ Π² ΡΠ°Π±ΠΎΡΠ΅ (Ρ.Π΅. ΡΠΎΠ»ΡΠΊΠΎ Ρ Π½ΡΠ»Π΅Π²ΡΠΌ ΡΠΎΠΊΠ΅ΡΠΎΠΌ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΡΠΈΠ½Π°ΡΡ ΡΠ°Π±ΠΎΡΠ°ΡΡ),
// ΠΎΡΠ΅Π½Ρ Π½Π΅ΡΠ΄ΠΎΠ±Π½ΠΎ Π΅ΡΠ»ΠΈ Π² ΡΠ°ΡΠ΅ Π²ΡΠ΅ Π±ΡΠ΄ΡΡ ΠΏΠΎΠ΄ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΡΠΌΠΈ ΠΈΠΌΠ΅Π½Π°ΠΌΠΈ.
if (m_ButtonStartClient.GetCheck () ≠ BST_CHECKED) return;
if (m_mainSocket.m_hSocket ≠ INVALID_SOCKET) return;
if (QueryName () == false)
{
AfxMessageBox («ΠΠ²Π΅Π΄ΠΈΡΠ΅ ΡΠ²ΠΎΠ΅ ΠΈΠΌΡ Π΄Π»Ρ ΡΠ°ΡΠ°!»);
StopChat ();
return;
}
// ΠΠ»Π°ΡΡ CAsyncSocket ΡΠΏΡΠΎΡΠ°Π΅Ρ ΠΏΡΠΎΡΠ΅Π΄ΡΡΡ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΡΠΎΠΊΠ΅ΡΠ°,
// Π²ΠΊΠ»Π°Π΄ΡΠ²Π°Ρ Π² ΡΡΠ½ΠΊΡΠΈΡ Create () Π½Π΅ΠΏΠΎΡΡΠ΅Π΄ΡΡΠ²Π΅Π½Π½ΠΎΠ΅ ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅
// ΡΠΎΠΊΠ΅ΡΠ° ΠΈ ΡΠ²ΡΠ·ΡΠ²Π°Π½ΠΈΠ΅ Π΅Π³ΠΎ Ρ ΠΎΠ΄Π½ΠΈΠΌ ΠΈΠ· IP Π°Π΄ΡΠ΅ΡΠΎΠΌ Π΄ΠΎΡΡΡΠΏΠ½ΠΎΠΌ Π½Π° ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΠ΅.
if (m_mainSocket.Create () == TRUE)
{
CString strAddress;
m_wndIPAddress.GetWindowText (strAddress);
CString strPort;
m_wndPort.GetWindowText (strPort);
if (m_mainSocket.Connect (strAddress, atoi (strPort)) == FALSE)
{
// Π Π°ΡΡΠΈΠ½Ρ ΡΠΎΠ½Π½ΠΎΠΌ ΡΠ΅ΠΆΠΈΠΌΠ΅ ΠΊΠΎΠ΄ ΡΡΠΎΠΉ ΠΎΡΠΈΠ±ΠΊΠΈ
// ΡΡΠΈΡΠ°Π΅ΡΡΡ ΠΊΠ°ΠΊ ΠΎΠΆΠΈΠ΄Π°Π½ΠΈΠ΅ ΡΠΎΠ±ΡΡΠΈΡ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ,
// Ρ. Π΅. ΠΏΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ ΡΡΠΏΠ΅ΡΠ½ΡΠΉ Π²ΠΎΠ·Π²ΡΠ°Ρ.
if (GetLastError () == WSAEWOULDBLOCK)
{
DisabledControl (false);
}
else
{
// ΠΈΠ½Π°ΡΠ΅ ΠΏΡΠΈ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΈΡ ΠΊΠ°ΠΊΠΎΠΉ Π»ΠΈΠ±ΠΎ ΠΎΡΠΈΠ±ΠΊΠΈ ΠΎΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅ΠΌ ΡΠ°Ρ
StopChat ();
}
}
}
}
// ΠΠ°ΠΆΠ°Π»ΠΈ ΠΊΠ½ΠΎΠΏΠΊΡ «ΠΡΠΉΡΠΈ ΠΈΠ· ΡΠ°ΡΠ°» .
void CChatCppDlg: OnBnClickedButtonStopchat ()
{
StopChat ();
}
// ΠΠ°ΠΏΡΠ΅ΡΠ°Π΅Ρ Π΄ΠΎΡΡΡΠΏ ΠΊ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡΠΌ ΠΏΡΠΈ ΡΠ°Π±ΠΎΡΠ΅
// ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π² ΡΠ΅ΠΆΠΈΠΌΠ΅ ΡΠ΅ΡΠ²Π΅ΡΠ° ΠΈΠ»ΠΈ ΠΊΠ»ΠΈΠ΅Π½ΡΠ°.
// Π¦Π΅Π»Ρ Π·Π°ΠΏΡΠ΅ΡΠ° — ΠΈΠ·Π±Π΅ΠΆΠ°ΡΡ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΡ ΠΎΡ
// ΡΠ»ΡΡΠ°ΠΉΠ½ΠΎΠ³ΠΎ Π½Π°ΠΆΠ°ΡΠΈΡ «Π½Π΅ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΡΡ » ΠΊΠ½ΠΎΠΏΠΎΠΊ.
void CChatCppDlg: DisabledControl (bool server)
{
// ΠΠ°ΠΏΡΠ΅ΡΡ.
m_wndIPAddress.EnableWindow (FALSE);
m_wndPort.EnableWindow (FALSE);
m_ButtonSend.EnableWindow (FALSE);
if (server == true)
{
m_ButtonStopChat.SetWindowText (g_strStopChat);
m_ButtonStartClient.EnableWindow (FALSE);
}
else
{
m_ButtonStopChat.SetWindowText (g_strExitFromChat);
m_ButtonStartServer.EnableWindow (FALSE);
}
// Π Π°Π·ΡΠ΅ΡΠ΅Π½ΠΈΡ.
// Π Π°Π·ΡΠ΅ΡΠΈΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ Π²ΡΡ ΠΎΠ΄Π° ΠΈΠ· ΡΠ°ΡΠ°.
m_ButtonStopChat.EnableWindow (TRUE);
}
// Π Π°Π·ΡΠ΅ΡΠΈΡΡ Π΄ΠΎΡΡΡΠΏ ΠΊ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡΠΌ ΠΏΠΎΡΠ»Π΅ Π·Π°ΠΊΡΡΡΠΈΡ ΡΠΎΠΊΠ΅ΡΠΎΠ².
// Π¦Π΅Π»Ρ Π·Π°ΠΏΡΠ΅ΡΠ° — ΠΈΠ·Π±Π΅ΠΆΠ°ΡΡ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΡ ΠΎΡ
// ΡΠ»ΡΡΠ°ΠΉΠ½ΠΎΠ³ΠΎ Π½Π°ΠΆΠ°ΡΠΈΡ «Π½Π΅ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΡΡ » ΠΊΠ½ΠΎΠΏΠΎΠΊ.
void CChatCppDlg: EnabledControl (void)
{
// Π Π°Π·ΡΠ΅ΡΠ΅Π½ΠΈΡ.
m_wndIPAddress.EnableWindow (TRUE);
m_wndPort.EnableWindow (TRUE);
m_ButtonStartClient.EnableWindow (TRUE);
m_ButtonStartServer.EnableWindow (TRUE);
// ΠΠ°ΠΏΡΠ΅ΡΡ.
m_ButtonStopChat.EnableWindow (FALSE);
m_ButtonSend.EnableWindow (FALSE);
}
// ΠΡΠΈΠ½ΠΈΠΌΠ°Π΅ΠΌ Π·Π°ΠΏΡΠΎΡΡ Π½Π° ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ
void CChatCppDlg: OnAccept (void)
{
CSock* pSock = new CSock;
pSock->m_pParent = this;
// ΠΡΠ»ΠΈ Π²ΡΠ΅ Π² ΠΏΠΎΡΡΠ΄ΠΊΠ΅ Π΄ΠΎΠ±Π°Π²ΠΈΠΌ ΡΠ°Π±ΠΎΡΠΈΠΉ ΡΠΎΠΊΠ΅Ρ Π² ΡΠΏΠΈΡΠΎΠΊ
// ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½Π½ΡΡ ΡΠ°Π±ΠΎΡΠΈΡ ΡΠΎΠΊΠ΅ΡΠΎΠ².
if (m_mainSocket.Accept (*pSock) == TRUE)
{
m_vecSockets.push_back (pSock);
m_ButtonSend.EnableWindow (TRUE);
SendCountPeople ();
}
else
delete pSock;
SetWindowText («Π‘Π΅ΡΡ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ!»);
}
// ΠΡΡ ΠΎΠ΄ ΠΈΠ· ΡΠ°ΡΠ°,
// Π΅ΡΠ»ΠΈ ΡΡΠΎ ΡΡΠ°Π±ΠΎΡΠ°Π»ΠΎ Π½Π° ΡΡΠΎΡΠΎΠ½Π΅ ΡΠ΅ΡΠ²Π΅ΡΠ°,
// ΡΠΎ ΡΡΠΎ ΠΏΠΎΠ»Π½Π°Ρ ΠΎΡΡΠ°Π½ΠΎΠ²ΠΊΠ° ΡΠ°ΡΠ°.
void CChatCppDlg: StopChat (void)
{
// ΠΡΡΡΠ»Π°Π΅ΠΌ ΡΠΈΠ³Π½Π°Π» ΠΎΠ± ΠΎΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠΈ ΠΎΡ ΡΠ°ΡΠ°.
SendDisconnect ();
m_mainSocket.Close ();
for (int i = 0; i < (int)m_vecSockets.size (); i++)
{
m_vecSockets[i]->Close ();
delete m_vecSockets[i];
}
// ΠΡΠΈΡΡΠΈΠΌ Π²Π΅ΠΊΡΠΎΡ ΠΎΡ Π½Π΅Π½ΡΠΆΠ½ΡΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ².
m_vecSockets.clear ();
m_ButtonStartServer.SetCheck (BST_UNCHECKED);
m_ButtonStartClient.SetCheck (BST_UNCHECKED);
// Π Π°Π·ΡΠ΅ΡΠΈΠΌ Π΄ΠΎΡΡΡΠΏ ΠΊ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ Π΄Π»Ρ
// ΠΏΠΎΠ²ΡΠΎΡΠ½ΡΡ ΠΏΠΎΠΏΡΡΠΎΠΊ.
EnabledControl ();
// Π ΡΠ°ΡΠ΅ Π½Π΅Ρ Π½ΠΈΠΊΠΎΠ³ΠΎ.
m_wndCountPeople.SetWindowText («Π ΡΠ°ΡΠ΅ 0 ΡΠ΅Π».»);
SetWindowText («ΠΠ΅Ρ ΡΠ΅ΡΠΈ!»);
}
// ΠΡΠΏΡΠ°Π²ΠΊΠ° ΠΏΠΎΠ΄Π³ΠΎΡΠΎΠ²Π»Π΅Π½Π½ΠΎΠ³ΠΎ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ.
void CChatCppDlg: OnBnClickedButtonSend ()
{
CString strChat;
m_wndSend.GetWindowText (strChat);
SendChat (strChat);
}
// ΠΠ·Π²Π»Π΅ΡΠ΅Π½ΠΈΠ΅ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΉ ΠΈΠ· ΡΠ΅ΡΠΈ ΡΠ°ΡΠ°.
void CChatCppDlg: OnReceive (void)
{
SENDBUFFER sb;
if (m_ButtonStartServer.GetCheck () == BST_CHECKED)
{
// Π‘Π΅ΡΠ²Π΅Ρ Π½Π΅ΡΠ΅Ρ Π±ΠΎΠ»ΡΡΡΡ Π½Π°Π³ΡΡΠ·ΠΊΡ ΠΏΡΠΈ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΠΈ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΉ.
for (int index = 0; index < (int)m_vecSockets.size (); index++)
{
m_vecSockets[index]->Receive (&sb, sizeof (SENDBUFFER));
// ΠΡΠ»ΠΈ ΠΊΡΠΎ-ΡΠΎ ΠΎΡΠΊΠ»ΡΡΠΈΠ»ΡΡ, ΡΠ΄Π°Π»ΡΠ΅ΠΌ ΡΡΠΎΠ³ΠΎ ΠΊΠ»ΠΈΠ΅Π½ΡΠ°
// ΠΈΠ· ΡΠΏΠΈΡΠΊΠ° Π΄ΠΎΡΡΡΠΏΠ½ΡΡ ΠΊΠ»ΠΈΠ΅Π½ΡΠΎΠ².
if (sb.typemessage == m_TypeMessage:tmDisconnect)
{
m_vecSockets[index]->Close ();
delete m_vecSockets[index];
m_vecSockets.erase (m_vecSockets.begin () + index);
SendCountPeople ();
// ΠΡΡΡΠ»ΠΊΠ° ΠΏΡΠΈΠ½ΡΡΠΎΠ³ΠΎ ΡΠ΅Π²Π΅ΡΠΎΠΌ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ Π² ΡΠ΅ΡΡ Π΄ΡΡΠ³ΠΈΠΌ ΠΊΠ»ΠΈΠ΅Π½ΡΠ°ΠΌ,
// ΠΊΠ°ΠΊ Π·Π΅ΡΠΊΠ°Π»ΠΎ, ΠΊΠ»ΠΈΠ΅Π½Ρ ΠΌΠΎΠΆΠ΅Ρ ΡΠ°Π±ΠΎΡΠ°ΡΡ Ρ Π΄ΡΡΠ³ΠΈΠΌΠΈ ΠΊΠ»ΠΈΠ΅Π½ΡΠ°ΠΌΠΈ Π²
// ΡΠ΅ΡΠΈ ΡΠΎΠ»ΡΠΊΠΎ ΡΠ΅ΡΠ΅Π· ΡΠ΅ΡΠ²Π΅Ρ.
SendBuffer (sb, false);
break;
}
// Π Π°ΡΡΡΠ»Π°Π΅ΠΌ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ ΠΊΠ»ΠΈΠ΅Π½ΡΠ° ΠΏΠΎ ΡΠ΅ΡΠΈ ΡΠ°ΡΠ°.
if (sb.typemessage == m_TypeMessage:tmChat)
{
SendBuffer (sb, false);
break;
}
}
}
else if (m_ButtonStartClient.GetCheck () == BST_CHECKED)
{
m_mainSocket.Receive (&sb, sizeof (SENDBUFFER));
}
// ΠΠ±ΡΠ°Π±ΠΎΡΠΊΠ° ΠΏΡΠΈΠ½ΡΡΠΎΠ³ΠΎ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅
// Π΅Π³ΠΎ ΡΠΈΠΏΠ°.
switch (sb.typemessage)
{
case m_TypeMessage:tmCountPeople:
{
m_wndCountPeople.SetWindowText («Π ΡΠ°ΡΠ΅ «+
IntToStr (sb.countpeople) + «ΡΠ΅Π». online»);
}
break;
case m_TypeMessage:tmChat:
{
CString strChat;
m_wndChat.GetWindowText (strChat);
strChat += «» + CString (sb.name) + «: „+ CString (sb.buffer) + „(“ + IntToStr (sb.d)+ „:“ + IntToStr (sb.e)+“ :» + IntToStr (sb.f)+ «-» +IntToStr (sb.a)+" :" + IntToStr (sb.b)+" :" + IntToStr (sb.c)+")" + «rn» ;
m_wndChat.SetWindowText (strChat);
int number_line = m_wndChat.GetLineCount ();
m_wndChat.LineScroll (number_line);
}
break;
case m_TypeMessage:tmDisconnect:
{
CString strChat;
m_wndChat.GetWindowText (strChat);
// ΠΡΠ»ΠΈ ΠΏΡΠΈΠ½ΡΡΠΎ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ ΠΎΠ± ΠΎΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ ΡΠ°ΡΠ° (ΠΎΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠΈ ΡΠ΅ΡΠ²Π΅ΡΠ°),
// ΠΈΠ·ΠΌΠ΅Π½ΠΈΠΌ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ΅ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ.
if (sb.stopchat == true)
{
StopChat ();
strChat += «» + CString (sb.name) + «: Π§Π°Ρ ΠΎΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½!» + «rn» + «==============================» + «rn» ;
}
else
{
strChat += «» + CString (sb.name) + «- ΠΏΠΎΠΊΠΈΠ½ΡΠ» (Π°) ΡΠ°Ρ!» + «rn» ;
}
FILE* fo;
fo = fopen («client.txt» ," ab");
fprintf (fo, strChat);
m_wndChat.SetWindowText (strChat);
int number_line = m_wndChat.GetLineCount ();
m_wndChat.LineScroll (number_line);
}
break;
default:
AfxMessageBox («ΠΠ΅ΠΈΠ·Π²Π΅ΡΡΠ½ΠΎΠ΅ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅!»);
break;
}
}
// ΠΡΠΈ Π·Π°ΠΊΡΡΡΠΈΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΎΡΠΏΡΠ°Π²ΠΈΠΌ Π² ΡΠ°Ρ
// ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎΠ± ΠΎΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠΈ ΡΠ°ΡΡΡΡΠ΅Π³ΠΎ.
void CChatCppDlg: OnClose ()
{
StopChat ();
CDialog:OnClose ();
}
// ΠΠΎΡΠ»Π°ΡΡ ΡΡΡΠΎΠΊΡ-ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ Π² ΡΠ°Ρ.
void CChatCppDlg: SendChat (CString strMessage)
{
SENDBUFFER sb;
int len = strMessage. GetLength ();
memcpy (sb.buffer, strMessage. GetBuffer (), sizeof (TCHAR)*len);
m_wndName.GetWindowText (strMessage);
len = strMessage. GetLength ();
memcpy (sb.name, strMessage. GetBuffer (), sizeof (TCHAR)*len);
sb.typemessage = m_TypeMessage:tmChat;
SendBuffer (sb, true);
}
// ΠΠΎΡΠ»Π°ΡΡ Π±ΡΡΠ΅Ρ ΠΏΠΎΠ΄Π³ΠΎΡΠΎΠ²Π»Π΅Π½Π½ΠΎΠ³ΠΎ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ Π² ΡΠ΅ΡΡ.
void CChatCppDlg: SendBuffer (SENDBUFFER sb, bool toserver)
{
// ΠΡΠ»ΠΈ ΡΠΎΠΊΠ΅Ρ Π½Π΅ ΡΠΎΠ·Π΄Π°Π½, Π½Π΅ΡΠ΅Π³ΠΎ Π΄Π΅Π»Π°ΡΡ Π² ΡΡΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ.
if (m_mainSocket.m_hSocket == INVALID_SOCKET) return;
if (m_ButtonStartServer.GetCheck () == BST_CHECKED)
{
for (int i = 0; i < (int)m_vecSockets.size (); i++)
{
int send = m_vecSockets[i]->Send (&sb, sizeof (SENDBUFFER));
if (send == sizeof (SENDBUFFER))
{
m_wndSend.SetWindowText (««);
}
}
// ΠΡΠ»ΠΈ Π½Π΅ΠΏΠΎΡΡΠ΅Π΄ΡΡΠ²Π΅Π½Π½ΠΎ ΠΎΡΠΏΡΠ°Π²ΠΊΡ ΠΎΡΡΡΠ΅ΡΡΠ²Π»ΡΠ΅Ρ ΡΠ΅ΡΠ²Π΅Ρ,
// ΠΎΡΠΎΠ±ΡΠ°Π·ΠΈΠΌ Π΅Π³ΠΎ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ Π² Π΅Π³ΠΎ ΠΆΠ΅ ΠΎΠΊΠ½Π΅ ΠΎΡΠΏΡΠ°Π²ΠΊΠΈ,
// ΡΠ»Π°Π³ toserver Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌ ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ Π΄Π°Π½Π½Π°Ρ ΡΡΠ½ΠΊΡΠΈΡ
// ΠΌΠΎΠΆΠ΅Ρ ΡΠ°Π±ΠΎΡΠ°ΡΡ Π² ΡΠ΅ΠΆΠΈΠΌΠ΅ Π·Π΅ΡΠΊΠ°Π»Π° ΡΠΌ. CChatCppDlg: OnReceive (void).
if (toserver == true)
{
if (sb.typemessage == m_TypeMessage:tmChat)
{
CString strChat;
m_wndChat.GetWindowText (strChat);
strChat += «» + CString (sb.name) + «: „+ CString (sb.buffer) + „(“ + IntToStr (sb.d)+ „:“ + IntToStr (sb.e)+“ :» + IntToStr (sb.f)+ «-» +IntToStr (sb.a)+" :" + IntToStr (sb.b)+" :" + IntToStr (sb.c)+")" + «rn» ;
m_wndChat.SetWindowText (strChat);
int number_line = m_wndChat.GetLineCount ();
m_wndChat.LineScroll (number_line);
}
if (sb.typemessage == m_TypeMessage:tmDisconnect)
{
CString strChat;
m_wndChat.GetWindowText (strChat);
strChat += «» + CString (sb.name) + «: «+ «Π§Π°Ρ ΠΎΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½!» + «rn» + «===============================rn» ;
FILE* fo;
fo = fopen («server.txt» ," ab");
fprintf (fo, strChat);
m_wndChat.SetWindowText (strChat);
int number_line = m_wndChat.GetLineCount ();
m_wndChat.LineScroll (number_line);
}
}
}
else if (m_ButtonStartClient.GetCheck () == BST_CHECKED)
{
int send = m_mainSocket.Send (&sb, sizeof (SENDBUFFER));
if (send == sizeof (SENDBUFFER))
m_wndSend.SetWindowText (««);
}
}
// Π€ΠΎΡΠΌΠΈΡΡΠ΅ΠΌ ΠΈ ΠΎΡΠΏΡΠ°Π²Π»ΡΠ΅ΠΌ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ ΠΎΠ± ΠΎΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠΈ ΠΎΡ ΡΠ΅ΡΠΈ.
void CChatCppDlg: SendDisconnect (void)
{
CString strChat;
m_wndChat.GetWindowText (strChat);
SENDBUFFER sb;
CString s;
m_wndName.GetWindowText (s);
int len = s. GetLength ();
memcpy (sb.name, s. GetBuffer (), sizeof (TCHAR)*len);
sb.typemessage = m_TypeMessage:tmDisconnect;
// ΠΡΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠ΅ ΡΠ΅ΡΠ²Π΅ΡΠ° ΠΎΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅Ρ ΡΠ°Ρ.
if (m_ButtonStartServer.GetCheck () == BST_CHECKED)
sb.stopchat = true;
SendBuffer (sb, true);
}
// Π‘ΠΎΠ±ΡΡΠΈΠ΅ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ, ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ Π½Π° ΡΡΠΎΡΠΎΠ½Π΅ ΠΊΠ»ΠΈΠ΅Π½ΡΠ°.
void CChatCppDlg: OnConnect (BOOL Error)
{
if (Error == TRUE)
{
AfxMessageBox («ΠΠΎΠΏΡΡΠΊΠ° ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ Π±ΡΠ»Π° ΠΎΡΠ²Π΅ΡΠ³Π½ΡΡΠ°! nΠΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΅ΡΠ²Π΅Ρ Π΅ΡΠ΅ Π½Π΅ ΡΠΎΠ·Π΄Π°Π½!»);
StopChat ();
}
else
{
m_ButtonSend.EnableWindow (TRUE);
SetWindowText («Π‘Π΅ΡΡ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ!»);
}
}
// Π‘Π΅ΡΠ²Π΅Ρ ΠΎΡΠΏΡΠ°Π²Π»ΡΠ΅Ρ ΠΊΠ»ΠΈΠ΅Π½ΡΠ°ΠΌ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ Π»ΡΠ΄Π΅ΠΉ Π² ΡΠ°ΡΠ΅.
void CChatCppDlg: SendCountPeople (void)
{
int countpeople = 1/*ΡΠ΅ΡΠ²Π΅Ρ*/ + (int)m_vecSockets.size ()/*ΠΊΠ»ΠΈΠ΅Π½ΡΡ*/;
m_wndCountPeople.SetWindowText («Π ΡΠ°ΡΠ΅ «+
IntToStr (countpeople) + «ΡΠ΅Π». online»);
// ΠΡΠΏΡΠ°Π²ΠΈΠΌ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ ΠΎ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²Π°Ρ Π»ΡΠ΄Π΅ΠΉ Π² ΡΠ°ΡΠ΅.
SENDBUFFER sb;
sb.typemessage = m_TypeMessage:tmCountPeople;
sb.countpeople = countpeople;
for (int i = 0; i < (int)m_vecSockets.size (); i++)
{
int send = m_vecSockets[i]->Send (&sb, sizeof (SENDBUFFER));
}
}
// ΠΠ°ΠΏΡΠΎΡ ΠΈΠΌΠ΅Π½ΠΈ ΡΠ°ΡΡΡΡΠ΅Π³ΠΎ ΠΏΠ΅ΡΠ΅Π΄ ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ΠΌ ΡΠΎΠΊΠ΅ΡΠ°.
bool CChatCppDlg: QueryName (void)
CString strName;
m_wndName.GetWindowText (strName);
if (strName == g_EmptyName
void CChatCppDlg: OnEnChangeEditName ()
{
}
void CChatCppDlg: OnEnChangeEditIp (){}
void CChatCppDlg: OnEnChangeEditPort (){}
void CChatCppDlg: OnEnChangeEditSend () {}
void CChatCppDlg: OnBnClickedStaticCountpeople ()
{}
void CAboutDlg: OnBnClickedOk ()
{
OnOK ();
}
void CChatCppDlg: OnEnChangeEditChat () {}
void CChatCppDlg: OnBnClickedButton1()
{
system («C:\\Users\ΠΠ΄ΠΌΠΈΠ½ΠΈΡΡΡΠ°ΡΠΎΡ\Desktop\client_start\ChatCpp\client.txt»);
}
3. Π Π°Π·ΡΠ°Π±ΠΎΡΠΊΠ° ΠΈ ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠΌΠΏΠ»Π΅ΠΊΡΠ°
Π Π΅Π·ΡΠ»ΡΡΠ°ΡΠΎΠΌ ΡΠ°Π±ΠΎΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΡΡΠ°Π» ΠΎΠ±ΠΌΠ΅Π½ ΡΠ΅ΠΊΡΡΠΎΠ²ΠΎΠΉ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠ΅ΠΉ ΠΌΠ΅ΠΆΠ΄Ρ ΡΠ΄Π°Π»Π΅Π½Π½ΡΠΌΠΈ ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΠ°ΠΌΠΈ Π»ΠΎΠΊΠ°Π»ΡΠ½ΠΎΠΉ ΡΠ΅ΡΠΈ. ΠΠΊΠ½ΠΎ ΠΏΠ΅ΡΠ²ΠΎΠ³ΠΎ Π·Π°ΠΏΡΡΠΊΠ° ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΎ Π½Π° ΡΠΈΡΡΠ½ΠΊΠ΅ 2.
Π ΠΈΡΡΠ½ΠΎΠΊ 2. ΠΠΊΠ½ΠΎ ΠΏΠ΅ΡΠ²ΠΎΠ³ΠΎ Π·Π°ΠΏΡΡΠΊΠ° ΠΠΊΠ½ΠΎ ΡΠ΅ΡΠ²Π΅ΡΠ° ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΎ Π½Π° ΡΠΈΡΡΠ½ΠΊΠ΅ 3.
Π ΠΈΡΡΠ½ΠΎΠΊ 3. ΠΠΊΠ½ΠΎ ΡΠ΅ΡΠ²Π΅ΡΠ°
ΠΠΊΠ½ΠΎ ΠΊΠ»ΠΈΠ΅Π½ΡΠ° ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΎ Π½Π° ΡΠΈΡΡΠ½ΠΊΠ΅ 4.
Π ΠΈΡΡΠ½ΠΎΠΊ 4. ΠΠΊΠ½ΠΎ ΠΊΠ»ΠΈΠ΅Π½ΡΠ° ΠΡΠΎΠ²Π΅ΡΠΊΠ° ΠΎΡΠΏΡΠ°Π²ΠΊΠΈ ΠΈ ΠΏΡΠΈΡ ΠΎΠ΄Π° ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΉ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΎ Π½Π° ΡΠΈΡΡΠ½ΠΊΠ΅ 6.
Π ΠΈΡΡΠ½ΠΎΠΊ 5. ΠΡΠΎΠ²Π΅ΡΠΊΠ° ΠΎΡΠΏΡΠ°Π²ΠΊΠΈ ΠΈ ΠΏΡΠΈΡ ΠΎΠ΄Π° ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΉ Π ΠΏΡΠ΅ΠΈΠΌΡΡΠ΅ΡΡΠ²Π°ΠΌ Π΄Π°Π½Π½ΠΎΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡΠ½Π΅ΡΡΠΈ:
1) ΠΠ½ΡΡΠΈΡΠΈΠ²Π½ΠΎ ΠΏΠΎΠ½ΡΡΠ½ΡΠΉ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ;
2) Π‘ΠΊΠΎΡΠΎΡΡΡ ΠΏΠ΅ΡΠ΅ΡΡΠ»ΠΊΠΈ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΉ Π½Π° Π²ΡΡΠΎΠΊΠΎΠΌ ΡΡΠΎΠ²Π½Π΅;
3) ΠΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΠΎΡΠΊΡΡΡΠΈΡ Π°ΡΡ ΠΈΠ²Π° Π²ΡΠ΅Ρ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΉ;
4) ΠΡΡ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠ°Ρ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΡΠΈΡΠ°Π±Π΅Π»ΡΠ½Π° ΠΈ Π½Π°Ρ ΠΎΠ΄ΠΈΡΡΡ ΠΏΠ΅ΡΠ΅Π΄ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΌ;
5) ΠΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ (Π² Π²Π΅ΡΡ Π½Π΅ΠΌ Π»Π΅Π²ΠΎΠΌ ΡΠ³Π»Ρ) ΡΠΎΡΡΠΎΡΠ½ΠΈΡ ΡΠ°ΡΠ°.
ΠΠ΅Π΄ΠΎΡΡΠ°ΡΠΊΠΈ:
1) ΠΡΡΡΡΡΡΠ²ΠΈΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ ΠΎΡΠΏΡΠ°Π²ΠΊΠΈ Π»ΠΈΡΠ½ΠΎΠ³ΠΎ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ;
2) Π ΡΠ»ΡΡΠ°Π΅ Π½Π΅ΡΠ°Π±ΠΎΡΠΎΡΠΏΠΎΡΠΎΠ±Π½ΠΎΡΡΠΈ ΡΠ΅ΡΠ²Π΅ΡΠ°, ΠΊΠ»ΠΈΠ΅Π½Ρ Π½Π΅ ΡΠΌΠΎΠΆΠ΅Ρ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠΈΡΡΡΡ ΠΊ ΡΠ΅ΡΠΈ (Π΄Π»Ρ ΡΠ΅ΡΠ΅Π½ΠΈΡ Π΄Π°Π½Π½ΠΎΠΉ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ ΠΎΠ±ΡΡΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡ Π΄ΡΠ±Π»ΠΈΡΡΡΡΠΈΠ΅ ΡΠ΅ΡΠ²Π΅ΡΠ°).
ΠΠ»Ρ ΠΊΠΎΡΡΠ΅ΠΊΡΠ½ΠΎΠΉ ΡΠ°Π±ΠΎΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π»ΠΈΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ ΡΠΈΡΡΠ΅ΠΌΡ Π·Π°ΡΠΈΡΡ:
1) ΠΠ΅ΡΠ΅Π΄ ΡΠ΅ΠΌ, ΠΊΠ°ΠΊ ΡΠΎΠ·Π΄Π°ΡΡ ΡΠ΅ΡΠ²Π΅Ρ (Π»ΠΈΠ±ΠΎ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠΈΡΡΡΡ Π² ΡΠ΅ΡΠ²Π΅ΡΡ), ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ Π²Π²Π΅ΡΡΠΈ ΠΈΠ½Π΄ΠΈΠ²ΠΈΠ΄ΡΠ°Π»ΡΠ½ΠΎΠ΅ ΠΈΠΌΡ. Π¦Π΅Π»Ρ — ΠΏΡΠ΅Π΄ΠΎΡΠ²ΡΠ°ΡΠ΅Π½ΠΈΠ΅ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΡΡ ΠΈΠΌΠ΅Π½ Π² ΡΠ°ΡΠ΅. ΠΡΠ»ΠΈ Π½Π΅ Π²Π²Π΅ΡΡΠΈ ΠΈΠΌΡ, ΠΏΠΎΡΠ²ΠΈΡΡΡ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠ΅Π΅ ΠΎΠΊΠ½ΠΎ ΠΎ Π½Π΅ Π²Π²ΠΎΠ΄Π΅ ΠΈΠΌΠ΅Π½ΠΈ. ΠΠ°Π½Π½Π°Ρ ΠΏΡΠΎΠ²Π΅ΡΠΊΠ° ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½Π° Π½Π° ΡΠΈΡΡΠ½ΠΊΠ΅ 6.
Π ΠΈΡΡΠ½ΠΎΠΊ 6. ΠΡΠΎΠ²Π΅ΡΠΊΠ° Π²Π²ΠΎΠ΄Π° ΠΈΠΌΠ΅Π½ΠΈ
2) ΠΡΠΏΠΎΠ»ΡΠ·ΡΡ ΡΡΠ½ΠΊΡΠΈΡ (DisabledControl), Π·Π°ΠΏΡΠ΅ΡΠ°Π΅ΠΌ Π΄ΠΎΡΡΡΠΏ ΠΊ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡΠΌ ΠΏΡΠΈ ΡΠ°Π±ΠΎΡΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π² ΡΠ΅ΠΆΠΈΠΌΠ΅ ΡΠ΅ΡΠ²Π΅ΡΠ° ΠΈΠ»ΠΈ ΠΊΠ»ΠΈΠ΅Π½ΡΠ°. Π¦Π΅Π»Ρ Π·Π°ΠΏΡΠ΅ΡΠ° — ΠΈΠ·Π±Π΅ΠΆΠ°ΡΡ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΡ ΠΎΡ ΡΠ»ΡΡΠ°ΠΉΠ½ΠΎΠ³ΠΎ Π½Π°ΠΆΠ°ΡΠΈΡ «Π½Π΅ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΡΡ » ΠΊΠ½ΠΎΠΏΠΎΠΊ. ΠΠ°Π½Π½ΡΠ΅ Π·Π°ΠΏΡΠ΅ΡΡ Ρ ΠΎΡΠΎΡΠΎ Π²ΠΈΠ΄Π½Ρ Π½Π° ΡΠΈΡΡΠ½ΠΊΠ°Ρ 4,5,6. ΠΡΠΈ ΡΠΎΠ·Π΄Π°Π½ΠΈΠΈ ΡΠ΅ΡΠ²Π΅ΡΠ° (Π»ΠΈΠ±ΠΎ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ ΠΊΠ»ΠΈΠ΅Π½ΡΠ° ΠΊ ΡΠ΅ΡΠ²Π΅ΡΡ), Π·Π°ΡΠ΅ΠΌΠ½ΡΡΡΡΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ IP-Π°Π΄ΡΠ΅ΡΠ° ΠΈ Π½ΠΎΠΌΠ΅ΡΠ° ΠΏΠΎΡΡΠ°, ΠΊΠΎΡΠΎΡΡΠ΅ Π² Π΄Π°Π½Π½ΠΎΠΌ ΡΠ΅ΠΆΠΈΠΌΠ΅ ΡΠ΅Π΄Π°ΠΊΡΠΈΡΠΎΠ²Π°ΡΡ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ.
3) ΠΡΠΈ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΠΈ ΠΊΠ»ΠΈΠ΅Π½ΡΠ° ΠΊ ΡΠ΅ΡΠ²Π΅ΡΡ, Π΅ΡΠ»ΠΈ ΡΠ΅ΡΠ²Π΅Ρ Π½Π΅ ΡΠΎΠ·Π΄Π°Π½ — ΠΏΠΎΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠ΅Π΅ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ (ΡΠΈΡΡΠ½ΠΎΠΊ 7):
Π ΠΈΡΡΠ½ΠΎΠΊ 7. ΠΡΠΎΠ²Π΅ΡΠΊΠ° Π½Π° ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ ΠΊΠ»ΠΈΠ΅Π½ΡΠ° ΠΊ ΡΠ΅ΡΠ²Π΅ΡΡ ΠΡΠΈ Π½Π°ΠΆΠ°ΡΠΈΠΈ ΠΊΠ½ΠΎΠΏΠΊΠΈ Π°ΡΡ ΠΈΠ²Π° ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΉ, ΠΏΠΎΡΠ²Π»ΡΠ΅ΡΡΡ ΠΎΠΊΠ½ΠΎ ΠΈΡΡΠΎΡΠΈΠΈ Π²ΡΠ΅Ρ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΉ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ (ΡΠ΅ΡΠ²Π΅ΡΠ°), Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΎΡ ΡΠΈΠΏΠ° ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ (ΡΠΈΡΡΠ½ΠΎΠΊ 8):
Π ΠΈΡΡΠ½ΠΎΠΊ 8. ΠΡΡ ΠΈΠ² ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΉ ΠΊΠ»ΠΈΠ΅Π½ΡΠ°
ΠΠ°ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅
Π ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ΅ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΊΡΡΡΠΎΠ²ΠΎΠ³ΠΎ ΠΏΡΠΎΠ΅ΠΊΡΠ°, ΠΏΠΎΠ»ΡΡΠΈΠ»ΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΠΏΠ΅ΡΠ΅ΡΡΠ»ΠΊΠΈ ΡΠ΅ΠΊΡΡΠΎΠ²ΡΡ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΉ ΠΏΠΎ Π»ΠΎΠΊΠ°Π»ΡΠ½ΠΎΠΉ ΡΠ΅ΡΠΈ.
ΠΡΠ»ΠΈ ΠΈΠ·ΡΡΠ΅Π½Ρ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ ΠΊΠ»Π°ΡΡΠΎΠ² CAboutDlg, CSock, ChatCppApp, CChatCppDlg ΠΈ Ρ. Π΄. ΠΠ·Π½Π°ΠΊΠΎΠΌΠΈΠ»ΠΈΡΡ ΡΠΎ ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΡΠΌΠΈ ΠΌΠ΅ΡΠΎΠ΄Π°ΠΌΠΈ Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ Ρ ΡΡΠΈΠΌΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ°ΠΌΠΈ, Π½Π°ΡΡΠΈΠ»ΠΈΡΡ ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°ΡΡ ΡΠ΅Π°ΠΊΡΠΈΡ ΡΡΠΈΡ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠ² Π½Π° ΡΠΎΠ±ΡΡΠΈΡ, Π½Π°ΡΡΠΈΠ»ΠΈΡΡ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎ ΠΈ ΡΡΡΠ΅ΡΠΈΡΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠ°Π±ΠΎΡΠ΅Π΅ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²ΠΎ ΡΠΎΡΠΌΡ ΠΈ ΠΎΡΠ²ΠΎΠΈΠ»ΠΈΡΡ ΡΠΎ ΡΠΏΠ΅ΡΠΈΡΠΈΡΠ½ΠΎΡΡΡΡ Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ. VC++ ΡΠ²ΡΠ·ΡΠ²Π°Π΅Ρ Ρ ΠΊΠ°ΠΆΠ΄ΡΠΌ Π²ΠΊΠ»ΡΡΠ°Π΅ΠΌΡΠΌ Π² ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΠΎΠΊΠ½ΠΎΠΌ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΠΉ ΠΌΠΎΠ΄ΡΠ»Ρ ΠΈ ΡΠ°ΠΊΠΈΠΌ ΡΠΏΠΎΡΠΎΠ±ΠΎΠΌ Π»ΠΎΠΊΠ°Π»ΠΈΠ·ΡΠ΅Ρ Π²ΡΠ΅ ΡΠ²ΠΎΠΉΡΡΠ²Π° ΠΎΠΊΠ½Π° Π² ΠΎΡΠ΄Π΅Π»ΡΠ½ΠΎΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΠΎΠΉ Π΅Π΄ΠΈΠ½ΠΈΡΠ΅. ΠΡΡΡΠ½ΠΈΠ»ΠΈ, ΡΡΠΎ ΠΎΡΠ½ΠΎΠ²Π½Π°Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° Π²Π΅ΡΡΠΌΠ° ΡΠΏΠ΅ΡΠΈΡΠΈΡΠ½Π°: ΠΎΠ½Π° ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΠΏΠ΅ΡΠ΅ΡΠ΅Π½Ρ Π²ΡΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΡ Π² ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ΅ ΠΌΠΎΠ΄ΡΠ»Π΅ΠΉ ΠΈ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΈΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠΎΠ², ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°ΡΡΠΈΡ ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Π½ΡΠΆΠ½ΡΡ ΠΎΠΊΠΎΠ½ ΠΈ ΡΠ²ΡΠ·Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Ρ Windows. ΠΡΡ ΠΎΡΠ½ΠΎΠ²Π½Π°Ρ ΡΠ°Π±ΠΎΡΠ° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΡΠΏΡΠ°Π²Π»ΡΠ΅ΡΡΡ ΠΊΠΎΠ΄ΠΎΠΌ, ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠΈΠΌΡΡ Π² ΠΌΠΎΠ΄ΡΠ»ΡΡ .
1. ΠΠ΅ΡΠ΅Π΄Π°ΡΠ° Π΄Π°Π½Π½ΡΡ ΠΏΠΎ ΡΠ΅ΡΠΈ Ρ ΠΏΠΎΠΌΠΎΡΡΡ Π‘Socket. http://besnog.ru/40 500.shtml.
2. ΠΠΎΡΡΡΠΎΠ΅Π½ΠΈΠ΅ ΠΊΠ»ΠΈΠ΅Π½Ρ-ΡΠ΅ΡΠ²Π΅ΡΠ½ΠΎΠ³ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ ΠΊΠ»Π°ΡΡΠ° CAsyncSocket (MFC). http://club.shelek.ru/viewart.php?id=325
3. Π‘Π°ΠΌΠΎΡΡΠΈΡΠ΅Π»Ρ ΠΈΠ³ΡΡ Π½Π° WINSOCK. http://insidepro.com/kk/006/006r.shtml
4. ΠΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° MFC. http://www.tdoc.ru/c/programming/visual-cpp/visual-cpp-beginners-page6.html
5. Π€Π°ΡΠΎΠ½ΠΎΠ² Π.Π. Delphi ΠΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Π½Π° ΡΠ·ΡΠΊΠ΅ Π²ΡΡΠΎΠΊΠΎΠ³ΠΎ ΡΡΠΎΠ²Π½Ρ. — Π.: «ΠΠΠ’ΠΠ », 2006. — 639 Ρ.
ΠΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π
Π ΠΈΡΡΠ½ΠΎΠΊ 9. ΠΠΈΠ°Π³ΡΠ°ΠΌΠΌΠ° ΠΊΠ»Π°ΡΡΠΎΠ²
ΠΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π
Π ΠΈΡΡΠ½ΠΎΠΊ 10. ΠΠΈΠ°Π³ΡΠ°ΠΌΠΌΠ° ΠΏΡΠ΅ΡΠ΅Π΄Π΅Π½ΡΠΎΠ²
ΠΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π
Π ΠΈΡΡΠ½ΠΎΠΊ 11. ΠΠΈΠ°Π³ΡΠ°ΠΌΠΌΠ° ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠ²
ΠΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π
Π ΠΈΡΡΠ½ΠΎΠΊ 12. ΠΠΈΠ°Π³ΡΠ°ΠΌΠΌΠ° Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΠΉ
ΠΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π
Π ΠΈΡΡΠ½ΠΎΠΊ 13. ΠΠΈΠ°Π³ΡΠ°ΠΌΠΌΠ° ΡΠ°Π·Π²ΡΡΡΡΠ²Π°Π½ΠΈΡ
ΠΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π
Π ΠΈΡΡΠ½ΠΎΠΊ 14. ΠΡΠΎΡΠΎΠΊΠΎΠ» ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ