Π Π°Π·ΡΠ°Π±ΠΎΡΠΊΠ° ΠΏΠΎΡΡΠΎΠ²ΠΎΠ³ΠΎ ΠΊΠ»ΠΈΠ΅Π½ΡΠ° Π΄Π»Ρ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΎΠ½Π½ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΡ Windows
ΠΠΎΡΠ»Π΅ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ ΡΠ°Π·ΡΠ°Π±Π°ΡΡΠ²Π°Π΅ΠΌΠΎΠ³ΠΎ ΠΊΠ»ΠΈΠ΅Π½ΡΡΠΊΠΎΠ³ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΊ ΡΠ΅ΡΠ²Π΅ΡΡ ΠΈ Π²ΠΎΠ΄Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΌ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡΡ ΡΡΡΠΎΠΊ, ΡΠ΅ΡΠ²Π΅ΡΡ ΠΎΡΠΏΡΠ°Π²Π»ΡΠ΅ΡΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Π° USER Ρ ΠΈΠΌΠ΅Π½Π΅ΠΌ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ. ΠΠΎΡΠ»Π΅ ΡΡΠΎΠ³ΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° ΠΏΠ΅ΡΠ΅Ρ ΠΎΠ΄ΠΈΡ Π² ΡΠ΅ΠΆΠΈΠΌ ΠΎΠΆΠΈΠ΄Π°Π½ΠΈΡ ΠΎΡΠ²Π΅ΡΠ° ΡΠ΅ΡΠ²Π΅ΡΠ°. ΠΠΎΡΠ»Π΅ ΡΠΎΠ³ΠΎ ΠΊΠ°ΠΊ ΡΡΡΠΎΠΊΠ° Ρ ΠΎΡΠ²Π΅ΡΠΎΠΌ ΡΠ΅ΡΠ²Π΅ΡΠ° ΠΏΡΠΈΡ ΠΎΠ΄ΠΈΡ Π² ΡΠΎΠΊΠ΅Ρ ΠΊΠ»ΠΈΠ΅Π½ΡΠ°, ΡΠΎ ΡΡΠ° ΡΡΡΠΎΠΊΠ° ΡΠΎΡ ΡΠ°Π½ΡΠ΅ΡΡΡ Π² ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠΉ Π±ΡΡΠ΅Ρ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π΄Π»Ρ Ρ ΡΠ°Π½Π΅Π½ΠΈΡ ΡΡΡΠΎΠΊ, ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠΈΡ … Π§ΠΈΡΠ°ΡΡ Π΅ΡΡ >
Π Π°Π·ΡΠ°Π±ΠΎΡΠΊΠ° ΠΏΠΎΡΡΠΎΠ²ΠΎΠ³ΠΎ ΠΊΠ»ΠΈΠ΅Π½ΡΠ° Π΄Π»Ρ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΎΠ½Π½ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΡ Windows (ΡΠ΅ΡΠ΅ΡΠ°Ρ, ΠΊΡΡΡΠΎΠ²Π°Ρ, Π΄ΠΈΠΏΠ»ΠΎΠΌ, ΠΊΠΎΠ½ΡΡΠΎΠ»ΡΠ½Π°Ρ)
Π€Π΅Π΄Π΅ΡΠ°Π»ΡΠ½ΠΎΠ΅ Π°Π³Π΅Π½ΡΡΡΠ²ΠΎ ΠΏΠΎ ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡ ΠΠΠΠΠΠΠ‘ΠΠΠ ΠΠΠ‘Π£ΠΠΠ Π‘Π’ΠΠΠΠΠ«Π Π£ΠΠΠΠΠ Π‘ΠΠ’ΠΠ’ ΠΠ½ΡΡΠΈΡΡΡ ΡΠΈΡΡΠ΅ΠΌ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΠΈ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΎΠ½Π½ΠΎΠΉ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΠΈ ΠΠΎΡΡΠ½ΠΈΡΠ΅Π»ΡΠ½Π°Ρ Π·Π°ΠΏΠΈΡΠΊΠ° ΠΊ ΠΊΡΡΡΠΎΠ²ΠΎΠΌΡ ΠΏΡΠΎΠ΅ΠΊΡΡ
«Π Π°Π·ΡΠ°Π±ΠΎΡΠΊΠ° ΠΏΠΎΡΡΠΎΠ²ΠΎΠ³ΠΎ ΠΊΠ»ΠΈΠ΅Π½ΡΠ° Π΄Π»Ρ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΎΠ½Π½ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΡ Windows»
ΠΠ΅Π½Π·Π° 2007
Π Π΅ΡΠ΅ΡΠ°Ρ
Π‘ΠΠ’ΠΠΠΠ ΠΠ ΠΠ’ΠΠΠΠ, Π‘ΠΠΠΠ’Π«, ΠΠΠΠΠ’Π ΠΠΠΠΠ― ΠΠΠ§Π’Π, ΠΠ£Π’ΠΠΠ’ΠΠ€ΠΠΠΠ¦ΠΠ―, Π‘ΠΠ’ΠΠΠΠ ΠΠ ΠΠΠ ΠΠΠΠΠ ΠΠΠΠΠΠ, ΠΠΠΠ ΠΠ¦ΠΠΠΠΠΠ― Π‘ΠΠ‘Π’ΠΠΠ WINDOWS
ΠΠ±ΡΠ΅ΠΊΡΠΎΠΌ ΠΈΡΡΠ»Π΅Π΄ΠΎΠ²Π°Π½ΠΈΡ Π² ΠΊΡΡΡΠΎΠ²ΠΎΠΌ ΠΏΡΠΎΠ΅ΠΊΡΠ΅ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΏΡΠΎΡΠΎΠΊΠΎΠ» ΠΏΡΠΈΠΊΠ»Π°Π΄Π½ΠΎΠ³ΠΎ ΡΡΠΎΠ²Π½Ρ POP3. ΠΠ°Π½Π½ΡΠΉ ΠΏΡΠΎΡΠΎΠΊΠΎΠ» ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π΄Π»Ρ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠ΅Π½ΠΈΡ Π΄ΠΎΡΡΡΠΏΠ° ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΉ ΡΠ΅ΡΠΈ ΠΊ ΡΠ»Π΅ΠΊΡΡΠΎΠ½Π½ΡΠΌ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡΠΌ, Ρ ΡΠ°Π½ΡΡΠΈΠΌΡΡ Π½Π° ΡΠ΅ΡΠ²Π΅ΡΠ΅.
Π¦Π΅Π»ΡΡ ΠΊΡΡΡΠΎΠ²ΠΎΠ³ΠΎ ΠΏΡΠΎΠ΅ΠΊΡΠ° ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, ΡΠ΅Π°Π»ΠΈΠ·ΡΡΡΠ΅Π³ΠΎ ΡΠ°Π±ΠΎΡΡ Ρ ΠΏΠΎΠ΄ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎΠΌ ΠΏΡΠΎΡΠΎΠΊΠΎΠ»Π° POP3. ΠΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²ΡΠ²Π°ΡΡ ΡΡΠΈ Π²ΠΈΠ΄Π° Π°ΡΡΠ΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ, Π·Π°ΠΏΡΠΎΡ ΡΡΠ°ΡΠΈΡΡΠΈΠΊΠΈ ΡΠ»Π΅ΠΊΡΡΠΎΠ½Π½ΡΡ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΉ Ρ ΡΠ΅ΡΠ²Π΅ΡΠ° ΠΈ ΡΠ°Π·ΡΡΠ² ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ. ΠΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±ΡΡΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠ°Π½ΠΎ Π΄Π»Ρ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΎΠ½Π½ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΡ WINDOWS. ΠΠ»Ρ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ ΡΠ·ΡΠΊ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π‘ΠΈ. ΠΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΠΈΠΌΠ΅ΡΡ Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΉ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ.
Π Π΅ΡΠ΅ΡΠ°Ρ ΠΠ°Π΄Π°Π½ΠΈΠ΅ Π½Π° ΠΊΡΡΡΠΎΠ²ΠΎΠ΅ ΠΏΡΠΎΠ΅ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΠ²Π΅Π΄Π΅Π½ΠΈΠ΅
1. ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ
1.1 ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΠΊΠ»Π°ΡΡΠ° pop3Socket
1.2 ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΠΊΠ»Π°ΡΡΠ° pop3ClientDlg
1.3 ΠΡΠΎΡΡΠ°Ρ Π°ΡΡΠ΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡ
1.4 APOP Π°ΡΡΠ΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡ
1.5 AUTH Π°ΡΡΠ΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡ
2. ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΡΡΠ½ΠΊΡΠΈΠΉ
2.1 ΠΡΠΎΡΡΠ°Ρ Π°ΡΡΠ΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡ
2.2 APOP Π°ΡΡΠ΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡ
2.3 AUTH Π°ΡΡΠ΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡ
3. Π ΡΠΊΠΎΠ²ΠΎΠ΄ΡΡΠ²ΠΎ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΠΠ°ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ Π‘ΠΏΠΈΡΠΎΠΊ ΠΈΡΡΠΎΡΠ½ΠΈΠΊΠΎΠ² ΠΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π. ΠΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΠΎΠ΅. ΠΠ»Π³ΠΎΡΠΈΡΠΌΡ ΡΡΠ½ΠΊΡΠΈΠΎΠ½ΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ
Post Office Protocol (POP) — ΠΏΡΠΎΡΠΎΠΊΠΎΠ» Π΄ΠΎΡΡΠ°Π²ΠΊΠΈ ΠΏΠΎΡΡΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΠΈΠ· ΠΏΠΎΡΡΠΎΠ²ΠΎΠ³ΠΎ ΡΡΠΈΠΊΠ° ΠΏΠΎΡΡΠΎΠ²ΠΎΠ³ΠΎ ΡΠ΅ΡΠ²Π΅ΡΠ° Π ΠΠ . ΠΠ½ΠΎΠ³ΠΈΠ΅ ΠΊΠΎΠ½ΡΠ΅ΠΏΡΠΈΠΈ, ΠΏΡΠΈΠ½ΡΠΈΠΏΡ ΠΈ ΠΏΠΎΠ½ΡΡΠΈΡ ΠΏΡΠΎΡΠΎΠΊΠΎΠ»Π° POP Π²ΡΠ³Π»ΡΠ΄ΡΡ ΠΈ ΡΡΠ½ΠΊΡΠΈΠΎΠ½ΠΈΡΡΡΡ ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎ SMTP. ΠΠΎΠΌΠ°Π½Π΄Ρ POP ΠΏΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ ΠΈΠ΄Π΅Π½ΡΠΈΡΠ½Ρ ΠΊΠΎΠΌΠ°Π½Π΄Π°ΠΌ SMTP, ΠΎΡΠ»ΠΈΡΠ°ΡΡΡ Π² Π½Π΅ΠΊΠΎΡΠΎΡΡΡ Π΄Π΅ΡΠ°Π»ΡΡ . ΠΠ° ΡΠΈΡ. 7 ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½Π° ΠΌΠΎΠ΄Π΅Π»Ρ ΠΊΠ»ΠΈΠ΅Π½Ρ-ΡΠ΅ΡΠ²Π΅Ρ ΠΏΠΎ ΠΏΡΠΎΡΠΎΠΊΠΎΠ»Ρ POP. Π‘Π΅ΡΠ²Π΅Ρ POP Π½Π°Ρ ΠΎΠ΄ΠΈΡΡΡ ΠΌΠ΅ΠΆΠ΄Ρ Π°Π³Π΅Π½ΡΠΎΠΌ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΠΈ ΠΏΠΎΡΡΠΎΠ²ΡΠΌΠΈ ΡΡΠΈΠΊΠ°ΠΌΠΈ.
Π Π½Π°ΡΡΠΎΡΡΠ΅Π΅ Π²ΡΠ΅ΠΌΡ ΡΡΡΠ΅ΡΡΠ²ΡΡΡ Π΄Π²Π΅ Π²Π΅ΡΡΠΈΠΈ ΠΏΡΠΎΡΠΎΠΊΠΎΠ»Π° POP — Π ΠΠ 2 ΠΈ Π ΠΠ Π, ΠΎΠ±Π»Π°Π΄Π°ΡΡΠΈΠΌΠΈ ΠΏΡΠΈΠΌΠ΅ΡΠ½ΠΎ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΡΠΌΠΈ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡΠΌΠΈ, ΠΎΠ΄Π½Π°ΠΊΠΎ Π½Π΅ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌΡΠΌΠΈ Π΄ΡΡΠ³ Ρ Π΄ΡΡΠ³ΠΎΠΌ. ΠΠ΅Π»ΠΎ Π² ΡΠΎΠΌ, ΡΡΠΎ Ρ Π ΠΠ 2 ΠΈ Π ΠΠ Π ΡΠ°Π·Π½ΡΠ΅ Π½ΠΎΠΌΠ΅ΡΠ° ΠΏΠΎΡΡΠΎΠ² ΠΏΡΠΎΡΠΎΠΊΠΎΠ»Π°. ΠΠ΅ΠΆΠ΄Ρ Π½ΠΈΠΌΠΈ ΠΎΡΡΡΡΡΡΠ²ΡΠ΅Ρ ΡΠ²ΡΠ·Ρ, Π°Π½Π°Π»ΠΎΠ³ΠΈΡΠ½Π°Ρ ΡΠ²ΡΠ·ΠΈ ΠΌΠ΅ΠΆΠ΄Ρ SMTP ΠΈ ESMTP. ΠΡΠΎΡΠΎΠΊΠΎΠ» Π ΠΠ Π Π½Π΅ ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΠ΅ΠΌ ΠΈΠ»ΠΈ ΠΌΠΎΠ΄ΠΈΡΠΈΠΊΠ°ΡΠΈΠ΅ΠΉ Π ΠΠ 2 — ΡΡΠΎ ΡΠΎΠ²Π΅ΡΡΠ΅Π½Π½ΠΎ Π΄ΡΡΠ³ΠΎΠΉ ΠΏΡΠΎΡΠΎΠΊΠΎΠ». Π ΠΠ 2 ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ Π² Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ΅ RFC 937 (Post Office Protocol-Version 2, Butler, et al, 1985), a Π ΠΠ Π — Π² RFC 1225 (Post Office Protocol-Version 3, Rose, 1991). ΠΠ°Π»Π΅Π΅ ΠΊΡΠ°ΡΠΊΠΎ ΡΠ°ΡΡΠΌΠΎΡΡΠΈΠΌ POP Π²ΠΎΠΎΠ±ΡΠ΅ ΠΈ Π±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΠΎ — Π ΠΠ Π. PΠΠ Π ΡΠ°Π·ΡΠ°Π±ΠΎΡΠ°Π½ Ρ ΡΡΠ΅ΡΠΎΠΌ ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠΈ Π΄ΠΎΡΡΠ°Π²ΠΊΠΈ ΠΏΠΎΡΡΡ Π½Π° ΠΏΠ΅ΡΡΠΎΠ½Π°Π»ΡΠ½ΡΠ΅ ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΡ ΠΈ ΠΈΠΌΠ΅Π΅Ρ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ Π΄Π»Ρ ΡΡΠΎΠ³ΠΎ.
Π Π°Π½Π΅Π΅ ΠΏΠΎΡΡΠΎΠ²ΡΠ΅ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ Π±ΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²Π° ΡΠ΅ΡΠ΅ΠΉ Π΄ΠΎΡΡΠ°Π²Π»ΡΠ»ΠΈΡΡ Π½Π΅ΠΏΠΎΡΡΠ΅Π΄ΡΡΠ²Π΅Π½Π½ΠΎ ΠΎΡ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΠ° ΠΊ Π΄ΡΡΠ³ΠΎΠΌΡ. Π Π΅ΡΠ»ΠΈ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΡΠ°ΡΡΠΎ ΠΌΠ΅Π½ΡΠ» ΡΠ°Π±ΠΎΡΠΈΠ΅ ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΡ ΠΈΠ»ΠΈ ΠΎΠ΄ΠΈΠ½ ΠΊΠΎΠΌΠΏΡΡΡΠ΅Ρ ΠΏΡΠΈΠ½Π°Π΄Π»Π΅ΠΆΠ°Π» Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΠΌ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΠΌ, ΡΡΡΠ΅ΡΡΠ²ΠΎΠ²Π°Π»ΠΈ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΠ΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ. Π Π½Π°ΡΠΈ Π΄Π½ΠΈ ΠΎΠ±ΡΠ΅ΠΏΡΠΈΠ½ΡΡΠ° Π΄ΠΎΡΡΠ°Π²ΠΊΠ° ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ Π½Π΅ Π½Π° ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ, Π° Π² ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΡΠ΅ ΠΏΠΎΡΡΠΎΠ²ΡΠ΅ ΡΡΠΈΠΊΠΈ ΠΏΠΎΡΡΠΎΠ²ΠΎΠ³ΠΎ ΡΠ΅ΡΠ²Π΅ΡΠ° ΠΎΡΠ³Π°Π½ΠΈΠ·Π°ΡΠΈΠΈ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΊΡΡΠ³Π»ΠΎΡΡΡΠΎΡΠ½ΠΎ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ (Π²ΠΊΠ»ΡΡΠ΅Π½).
ΠΠΎΠ½ΡΡΡΡΠΊΡΠΈΡ ΠΏΡΠΎΡΠΎΠΊΠΎΠ»Π° Π ΠΠ Π ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°Π΅Ρ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΠΎΠ±ΡΠ°ΡΠΈΡΡΡΡ ΠΊ ΡΠ²ΠΎΠ΅ΠΌΡ ΠΏΠΎΡΡΠΎΠ²ΠΎΠΌΡ ΡΠ΅ΡΠ²Π΅ΡΡ ΠΈ ΠΈΠ·ΡΡΡΡ Π½Π°ΠΊΠΎΠΏΠΈΠ²ΡΡΡΡΡ Π΄Π»Ρ Π½Π΅Π³ΠΎ ΠΏΠΎΡΡΡ. ΠΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΠΌΠΎΠΆΠ΅Ρ ΠΏΠΎΠ»ΡΡΠΈΡΡ Π΄ΠΎΡΡΡΠΏ ΠΊ Π ΠΠ -ΡΠ΅ΡΠ²Π΅ΡΡ ΠΈΠ· Π»ΡΠ±ΠΎΠΉ ΡΠΎΡΠΊΠΈ Π΄ΠΎΡΡΡΠΏΠ° ΠΊ ΠΠ½ΡΠ΅ΡΠ½Π΅Ρ. ΠΡΠΈ ΡΡΠΎΠΌ ΠΎΠ½ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π·Π°ΠΏΡΡΡΠΈΡΡ ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΡΠΉ ΠΏΠΎΡΡΠΎΠ²ΡΠΉ Π°Π³Π΅Π½Ρ (UA), ΡΠ°Π±ΠΎΡΠ°ΡΡΠΈΠΉ ΠΏΠΎ ΠΏΡΠΎΡΠΎΠΊΠΎΠ»Ρ Π ΠΠ Π, ΠΈ Π½Π°ΡΡΡΠΎΠΈΡΡ Π΅Π³ΠΎ Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ ΡΠΎ ΡΠ²ΠΎΠΈΠΌ ΠΏΠΎΡΡΠΎΠ²ΡΠΌ ΡΠ΅ΡΠ²Π΅ΡΠΎΠΌ. ΠΡΠ°ΠΊ, Π²ΠΎ Π³Π»Π°Π²Π΅ ΠΌΠΎΠ΄Π΅Π»ΠΈ POP Π½Π°Ρ ΠΎΠ΄ΠΈΡΡΡ ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΠΉ ΠΏΠ΅ΡΡΠΎΠ½Π°Π»ΡΠ½ΡΠΉ ΠΊΠΎΠΌΠΏΡΡΡΠ΅Ρ, ΡΠ°Π±ΠΎΡΠ°ΡΡΠΈΠΉ ΠΈΡΠΊΠ»ΡΡΠΈΡΠ΅Π»ΡΠ½ΠΎ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΊΠ»ΠΈΠ΅Π½ΡΠ° ΠΏΠΎΡΡΠΎΠ²ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΡ (ΡΠ΅ΡΠ²Π΅ΡΠ°). ΠΠΎΠ΄ΡΠ΅ΡΠΊΠ½Π΅ΠΌ ΡΠ°ΠΊΠΆΠ΅, ΡΡΠΎ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ Π΄ΠΎΡΡΠ°Π²Π»ΡΡΡΡΡ ΠΊΠ»ΠΈΠ΅Π½ΡΡ ΠΏΠΎ ΠΏΡΠΎΡΠΎΠΊΠΎΠ»Ρ POP, Π° ΠΏΠΎΡΡΠ»Π°ΡΡΡΡ ΠΏΠΎ-ΠΏΡΠ΅ΠΆΠ½Π΅ΠΌΡ ΠΏΡΠΈ ΠΏΠΎΠΌΠΎΡΠΈ SMTP. Π’ΠΎ Π΅ΡΡΡ Π½Π° ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΠ΅ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΡΡΡΠ΅ΡΡΠ²ΡΡΡ Π΄Π²Π° ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΡ Π°Π³Π΅Π½ΡΠ°-ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ° ΠΊ ΠΏΠΎΡΡΠΎΠ²ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΠ΅ — Π΄ΠΎΡΡΠ°Π²ΠΊΠΈ (POP) ΠΈ ΠΎΡΠΏΡΠ°Π²ΠΊΠΈ (SMTP). Π Π°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΈ ΠΏΡΠΎΡΠΎΠΊΠΎΠ»Π° Π ΠΠ Π Π½Π°Π·ΡΠ²Π°Π΅Ρ ΡΠ°ΠΊΡΡ ΡΠΈΡΡΠ°ΡΠΈΡ " ΡΠ°Π·Π΄Π΅Π»ΡΠ½ΡΠ΅ Π°Π³Π΅Π½ΡΡ" (split UA). ΠΠΎΠ½ΡΠ΅ΠΏΡΠΈΡ ΡΠ°Π·Π΄Π΅Π»ΡΠ½ΡΡ Π°Π³Π΅Π½ΡΠΎΠ² ΠΊΡΠ°ΡΠΊΠΎ ΠΎΠ±ΡΡΠΆΠ΄Π°Π΅ΡΡΡ Π² ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ Π ΠΠ Π.
1. Π ΠΏΡΠΎΡΠΎΠΊΠΎΠ»Π΅ Π ΠΠ Π ΠΎΠ³ΠΎΠ²ΠΎΡΠ΅Π½Ρ ΡΡΠΈ ΡΡΠ°Π΄ΠΈΠΈ ΠΏΡΠΎΡΠ΅ΡΡΠ° ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ ΠΏΠΎΡΡΡ: Π°Π²ΡΠΎΡΠΈΠ·Π°ΡΠΈΡ, ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΡ ΠΈ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅. ΠΠΎΡΠ»Π΅ ΡΠΎΠ³ΠΎ ΠΊΠ°ΠΊ ΡΠ΅ΡΠ²Π΅Ρ ΠΈ ΠΊΠ»ΠΈΠ΅Π½Ρ Π ΠΠ Π ΡΡΡΠ°Π½ΠΎΠ²ΠΈΠ»ΠΈ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠ΅, Π½Π°ΡΠΈΠ½Π°Π΅ΡΡΡ ΡΡΠ°Π΄ΠΈΡ Π°Π²ΡΠΎΡΠΈΠ·Π°ΡΠΈΠΈ. ΠΠ° ΡΡΠ°Π΄ΠΈΠΈ Π°Π²ΡΠΎΡΠΈΠ·Π°ΡΠΈΠΈ ΠΊΠ»ΠΈΠ΅Π½Ρ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΡΠΈΡΡΠ΅Ρ ΡΠ΅Π±Ρ Π΄Π»Ρ ΡΠ΅ΡΠ²Π΅ΡΠ°. ΠΡΠ»ΠΈ Π°Π²ΡΠΎΡΠΈΠ·Π°ΡΠΈΡ ΠΏΡΠΎΡΠ»Π° ΡΡΠΏΠ΅ΡΠ½ΠΎ, ΡΠ΅ΡΠ²Π΅Ρ ΠΎΡΠΊΡΡΠ²Π°Π΅Ρ ΠΏΠΎΡΡΠΎΠ²ΡΠΉ ΡΡΠΈΠΊ ΠΊΠ»ΠΈΠ΅Π½ΡΠ° ΠΈ Π½Π°ΡΠΈΠ½Π°Π΅ΡΡΡ ΡΡΠ°Π΄ΠΈΡ ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΠΈ. Π Π½Π΅ΠΉ ΠΊΠ»ΠΈΠ΅Π½Ρ Π»ΠΈΠ±ΠΎ Π·Π°ΠΏΡΠ°ΡΠΈΠ²Π°Π΅Ρ Ρ ΡΠ΅ΡΠ²Π΅ΡΠ° ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΠΏΠΈΡΠΎΠΊ ΠΏΠΎΡΡΠΎΠ²ΡΡ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΉ), Π»ΠΈΠ±ΠΎ ΠΏΡΠΎΡΠΈΡ Π΅Π³ΠΎ ΡΠΎΠ²Π΅ΡΡΠΈΡΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ΅ Π΄Π΅ΠΉΡΡΠ²ΠΈΠ΅ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π²ΡΠ΄Π°ΡΡ ΠΏΠΎΡΡΠΎΠ²ΠΎΠ΅ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅. ΠΠ° ΡΡΠ°Π΄ΠΈΠΈ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΡ ΡΠ΅Π°Π½Ρ ΡΠ²ΡΠ·ΠΈ Π·Π°ΠΊΠ°Π½ΡΠΈΠ²Π°Π΅ΡΡΡ.
1. ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ
Π Ρ ΠΎΠ΄Π΅ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊΡΡΡΠΎΠ²ΠΎΠ³ΠΎ ΠΏΡΠΎΠ΅ΠΊΡΠ° Π±ΡΠ»Π° ΡΠ°Π·ΡΠ°Π±ΠΎΡΠ°Π½Π°, ΡΠ΅Π°Π»ΠΈΠ·ΡΡΡΠ°Ρ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΊΠ»ΠΈΠ΅Π½ΡΡΠΊΠΎΠ³ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, ΡΡΠ½ΠΊΡΠΈΠΎΠ½ΠΈΡΡΡΡΠ΅Π³ΠΎ ΠΏΠΎ ΠΏΡΠΎΡΠΎΠΊΠΎΠ»Ρ pop3. ΠΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° Π±ΡΠ»Π° ΡΠ°Π·ΡΠ°Π±ΠΎΡΠ°Π½Π° Π² ΡΡΠ΅Π΄Π΅ Microsoft Visual Studio 2005. ΠΡΠΎΠ΅ΠΊΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΈΠΌΠ΅Π΅Ρ Π΄ΠΈΠ°Π»ΠΎΠ³ΠΎΠ²ΡΠΉ ΡΠΈΠΏ. Π Ρ ΠΎΠ΄Π΅ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½Π° Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° ΠΊΠ»Π°ΡΡΠΎΠ² MFC. Π ΡΠ°ΡΡΠ½ΠΎΡΡΠΈ Π±ΡΠ» ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ Π±Π°Π·ΠΎΠ²ΡΠΉ ΠΊΠ»Π°ΡΡ CSocket, ΠΊΠΎΡΠΎΡΡΠΉ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄Π½ΡΠΌ ΠΊΠ»Π°ΡΡΠΎΠΌ ΠΎΡ CsynkSocket — ΠΊΠ»Π°ΡΡ ΡΠΈΠ½Ρ ΡΠΎΠ½Π½ΡΡ ΡΠΎΠΊΠ΅ΡΠΎΠ². ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌΠ° ΡΠΈΠ½Ρ ΡΠΎΠ½Π½ΡΡ ΡΠΎΠΊΠ΅ΡΠΎΠ² ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΎΡΠ³Π°Π½ΠΈΠ·ΠΎΠ²Π°ΡΡ ΡΠΏΠΎΡΡΠ΄ΠΎΡΠ΅Π½Π½ΠΎΠ΅ ΡΡΠ½ΠΊΡΠΈΠΎΠ½ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΡ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌΠΎΠ² Π΄Π»Ρ ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·Π°ΡΠΈΠΈ. Π‘ΠΈΠ½Ρ ΡΠΎΠ½Π½ΡΠΉ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌ Π½Π΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π½Π°ΡΠ°ΡΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ Π΄ΠΎ ΡΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ Π±ΡΠ»ΠΎ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΎ ΠΏΠΎΠ΄ΡΠ²Π΅ΡΠΆΠ΄Π΅Π½ΠΈΠ΅ ΠΎ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠ΅Π³ΠΎ.
Π ΡΠ°Π·ΡΠ°Π±ΠΎΡΠ°Π½Π½ΠΎΠΌ ΠΏΡΠΎΠ΅ΠΊΡΠ΅ Π±ΡΠ» ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ ΠΊΠ»Π°ΡΡ pop3Socket, ΠΊΠΎΡΠΎΡΡΠΉ ΡΠ²Π»ΡΠ΅ΡΡΡ Π½Π°ΡΠ»Π΅Π΄Π½ΠΈΠΊΠΎΠΌ ΠΊΠ»Π°ΡΡΠ° CSocket.
Π Ρ ΠΎΠ΄Π΅ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π»ΡΡ ΠΊΠ»Π°ΡΡ md5Capi, ΠΊΠΎΡΠΎΡΡΠΉ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ Ρ ΡΡ-ΡΡΠ½ΠΊΡΠΈΠΈ MD5 Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ wincrypt. h
1.1 ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΠΊΠ»Π°ΡΡΠ° pop3Socket
Π Π°Π·ΡΠ°Π±ΠΎΡΠ°Π½Π½ΡΠΉ ΠΊΠ»Π°ΡΡ ΠΈΠΌΠ΅Π΅Ρ ΡΠ»Π΅Π΄ΡΡΡΡΡ ΡΡΡΡΠΊΡΡΡΡ:
class pop3Socket: public CSocket
{
public:
pop3Socket (Cpop3ClientDlg* Dlg);
virtual ~pop3Socket ();
virtual void OnReceive (int nErrorCode);
virtual void OnClose (int nErrorCode);
virtual void OnSend (int nErrorCode);
char fl;
Cpop3ClientDlg* m_Dlg;
};
Π ΡΠ΅ΠΊΡΠΈΠΈ public ΠΊΠ»Π°ΡΡΠ° Π½Π°Ρ ΠΎΠ΄ΡΡΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ ΡΠ²ΠΎΠΉΡΡΠ²Π° ΠΈ ΠΌΠ΅ΡΠΎΠ΄Ρ:
pop3Socket (Cpop3ClientDlg* Dlg) — ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡ ΠΊΠ»Π°ΡΡΠ°. ΠΠ°Π½Π½ΡΠΉ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡ ΠΏΠ΅ΡΠ΅Π³ΡΡΠΆΠ΅Π½ Π² ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΠΈ Ρ Π»ΠΎΠ³ΠΈΠΊΠΎΠΉ ΡΠ°Π±ΠΎΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ, Π΄Π»Ρ ΡΠΎΠ³ΠΎ ΡΡΠΎΠ±Ρ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡΡ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΡ ΡΠΎΠ·Π΄Π°Π²Π°Π΅ΠΌΠΎΠ³ΠΎ ΡΠΎΠΊΠ΅ΡΠ° ΠΎΡ Π΄ΠΈΠ°Π»ΠΎΠ³ΠΎΠ²ΠΎΠ³ΠΎ ΠΎΠΊΠ½Π°.
virtual ~pop3Socket () — ΠΠΈΡΡΡΠ°Π»ΡΠ½ΡΠΉ Π΄Π΅ΡΡΡΡΠΊΡΠΎΡ ΠΊΠ»Π°ΡΡΠ°;
virtual void OnReceive (int nErrorCode) — Π²ΠΈΡΡΡΠ°Π»ΡΠ½ΡΠΉ ΠΌΠ΅ΡΠΎΠ΄ ΠΊΠ»Π°ΡΡΠ°, Π²ΡΠ·ΡΠ²Π°ΡΡΠΈΠΉΡΡ ΠΏΡΠΈ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈ ΡΠΎΠΊΠ΅ΡΠΎΠΌ Π²Ρ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ;
virtual void OnClose (int nErrorCode) — Π²ΠΈΡΡΡΠ°Π»ΡΠ½ΡΠΉ ΠΌΠ΅ΡΠΎΠ΄ ΠΊΠ»Π°ΡΡΠ°, Π²ΡΠ·ΡΠ²Π°ΡΡΠΈΠΉΡΡ ΠΏΡΠΈ Π·Π°ΠΊΡΡΡΠΈΠΈ ΡΠΎΠΊΠ΅ΡΠ°;
virtual void OnSend (int nErrorCode) — Π²ΠΈΡΡΡΠ°Π»ΡΠ½ΡΠΉ ΠΌΠ΅ΡΠΎΠ΄ ΠΊΠ»Π°ΡΡΠ°, Π²ΡΠ·ΡΠ²Π°ΡΡΠΈΠΉΡΡ ΠΏΡΠΈ ΠΎΡΠΏΡΠ°Π²ΠΊΠΈ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ ΡΠ΅ΡΠ΅Π· ΡΠΎΠΊΠ΅Ρ;
char fl — ΡΠ²ΠΎΠΉΡΡΠ²ΠΎ ΠΊΠ»Π°ΡΡΠ°, ΠΊΠΎΡΠΎΡΠΎΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΠΏΡΠΈ Π°Π½Π°Π»ΠΈΠ·Π΅ ΠΎΡΠ²Π΅ΡΠ° ΡΠ΅ΡΠ²Π΅ΡΠ°.
Cpop3ClientDlg* m_Dlg — ΡΠ²ΠΎΠΉΡΡΠ²ΠΎ — ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ Π½Π° Π΄ΠΈΠ°Π»ΠΎΠ³ΠΎΠ²ΠΎΠ΅ ΠΎΠΊΠ½ΠΎ ΡΠΈΠΏΠ° Cpop3ClientDlg (Π³Π»Π°Π²Π½ΠΎΠ΅ Π΄ΠΈΠ°Π»ΠΎΠ³ΠΎΠ²ΠΎΠ΅ ΠΎΠΊΠ½ΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ).
ΠΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΊΠ»Π°ΡΡΠ° ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½ΠΎ Π² ΡΠ°ΠΉΠ»Π΅ pop3Socket. h ΠΏΡΠΎΠ΅ΠΊΡΠ°.
Π Π΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ² ΠΊΠ»Π°ΡΡΠ° ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Π° Π² ΡΠ°ΠΉΠ»Π΅ pop3Socket. ΡΡΡ ΠΏΡΠΎΠ΅ΠΊΡΠ°.
Π ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΠΊΠ»Π°ΡΡΠ° Π±ΡΠ» ΠΏΠ΅ΡΠ΅Π³ΡΡΠΆΠ΅Π½ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡ, ΠΊΠΎΡΠΎΡΡΠΉ Π½Π°ΡΡΡΠ°ΠΈΠ²Π°Π» ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ m_Dlg Π½Π° Π°Π΄ΡΠ΅Ρ Π΄ΠΈΠ°Π»ΠΎΠ³ΠΎΠ²ΠΎΠ³ΠΎ ΠΎΠΊΠ½Π° ΠΈΠ· ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ Π²ΡΠ·ΠΎΠ² ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΠ°.
1.2 ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΠΊΠ»Π°ΡΡΠ° pop3ClientDlg
ΠΠ»Π°ΡΡ pop3ClientDlg ΡΠ²Π»ΡΠ΅ΡΡΡ Π½Π°ΡΠ»Π΅Π΄Π½ΠΈΠΊΠΎΠΌ ΠΊΠ»Π°ΡΡΠ° CDialog.
ΠΠ»Π°ΡΡ ΠΈΠΌΠ΅Π΅Ρ ΡΠ»Π΅Π΄ΡΡΡΡΡ ΡΡΡΡΠΊΡΡΡΡ:
class Cpop3ClientDlg: public CDialog
{
public:
Cpop3ClientDlg (CWnd* pParent = NULL); // standard constructor
// Dialog Data
enum { IDD = IDD_POP3CLIENT_DIALOG };
protected:
virtual void DoDataExchange (CDataExchange* pDX); // DDX/DDV support
// Implementation
protected:
HICON m_hIcon;
// Generated message map functions
virtual BOOL OnInitDialog ();
afx_msg void OnSysCommand (UINT nID, LPARAM lParam);
afx_msg void OnPaint ();
afx_msg HCURSOR OnQueryDragIcon ();
DECLARE_MESSAGE_MAP ()
public:
CListBox Protocol;
public:
afx_msg void OnBnClickedButton1();
public:
CButton connect_btn;
public:
CButton disconnect_btn;
public:
afx_msg void OnBnClickedButton2();
public:
afx_msg void OnBnClickedRadio1();
public:
bool simple;
public:
bool apop;
public:
bool auth;
public:
afx_msg void OnBnClickedRadio2();
public:
afx_msg void OnBnClickedRadio3();
};
Cpop3ClientDlg (CWnd* pParent = NULL) — ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΠΉ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡ, Π½Π°ΡΠ»Π΅Π΄ΡΠ΅ΠΌΡΠΉ ΠΎΡ ΠΊΠ»Π°ΡΡΠ° CDialog;
virtual void DoDataExchange (CDataExchange* pDX) — ΠΌΠ΅ΡΠΎΠ΄, ΡΠ΅Π°Π»ΠΈΠ·ΡΡΡΠΈΠΉ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌ ΠΎΠ±ΠΌΠ΅Π½Π° Π΄Π°Π½Π½ΡΠΌΠΈ DDX.
ΠΠ΅ΡΠΎΠ΄Ρ, Π³Π΅Π½Π΅ΡΠΈΡΡΡΡΠΈΠ΅ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ:
virtual BOOL OnInitDialog (), afx_msg void OnSysCommand (UINT nID, LPARAM lParam), afx_msg void OnPaint (), afx_msg HCURSOR OnQueryDragIcon (), DECLARE_MESSAGE_MAP ().
ΠΡΠΈ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ΅ ΠΊΠ»Π°ΡΡΠ° Π±ΡΠ»ΠΈ ΡΠΎΠ·Π΄Π°Π½Ρ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ ΠΌΠ΅ΡΠΎΠ΄Ρ ΠΈ ΡΠ²ΠΎΠΉΡΡΠ²Π°:
CListBox Protocol — ΠΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΡΠΈΠΏΠ° ClistBox, Π² ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΡΡ Π²ΡΠ²ΠΎΠ΄ ΡΡΡΠΎΠΊ ΠΏΡΠΎΡΠΎΠΊΠΎΠ»Π° ΠΎΠ±ΠΌΠ΅Π½Π° ΠΌΠ΅ΠΆΠ΄Ρ ΡΠ΅ΡΠ²Π΅ΡΠΎΠΌ ΠΈ ΠΊΠ»ΠΈΠ΅Π½ΡΠΎΠΌ.
CButton connect_btn — ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ, ΡΠ²ΡΠ·Π°Π½Π½Π°Ρ Ρ ΠΊΠ½ΠΎΠΏΠΊΠΎΠΉ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ Ρ ΡΠ΅ΡΠ²Π΅ΡΠΎΠΌ
CButton disconnect_btn — ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ, ΡΠ²ΡΠ·Π°Π½Π½Π°Ρ Ρ ΠΊΠ½ΠΎΠΏΠΊΠΎΠΉΡΠ°Π·ΡΡΠ²Π° ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ Ρ ΡΠ΅ΡΠ²Π΅ΡΠΎΠΌ
bool simple, apop, auth — Π»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅. ΠΠ½ΠΈ ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°ΡΡΡΡ Π² Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ «true» Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΎΡ ΡΠΎΠ³ΠΎ, ΠΊΠ°ΠΊΠΎΠΉ ΡΠΈΠΏ Π°ΡΡΠ΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ Π²ΡΠ±ΡΠ°Π½ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΌ.
afx_msg void OnBnClickedButton1() — ΠΌΠ΅ΡΠΎΠ΄, Π²ΡΠ·ΡΠ²Π°Π΅ΠΌΡΠΉ ΠΏΡΠΈΠ½Π°ΠΆΠ°ΡΠΈΠΈ Π½Π° ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ Button1(ΠΊΠ½ΠΎΠΏΠΊΠ° ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ).
afx_msg void OnBnClickedButton2() — ΠΌΠ΅ΡΠΎΠ΄, Π²ΡΠ·ΡΠ²Π°Π΅ΠΌΡΠΉ ΠΏΡΠΈΠ½Π°ΠΆΠ°ΡΠΈΠΈ Π½Π° ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ Button2(ΠΊΠ½ΠΎΠΏΠΊΠ° ΡΠ°Π·ΡΡΠ²Π° ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ).
afx_msg void OnBnClickedRadio1() — ΠΌΠ΅ΡΠΎΠ΄, Π²ΡΠ·ΡΠ²Π°Π΅ΠΌΡΠΉ ΠΏΡΠΈ Π½Π°ΠΆΠ°ΡΠΈΠΈ Π½Π° ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ RadioButton1 — ΠΏΡΠΎΡΡΠ°Ρ Π°ΡΡΠ΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡ.
afx_msg void OnBnClickedRadio2() — ΠΌΠ΅ΡΠΎΠ΄, Π²ΡΠ·ΡΠ²Π°Π΅ΠΌΡΠΉ ΠΏΡΠΈ Π½Π°ΠΆΠ°ΡΠΈΠΈ Π½Π° ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ RadioButton1 — APOP Π°ΡΡΠ΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡ.
afx_msg void OnBnClickedRadio3() — ΠΌΠ΅ΡΠΎΠ΄, Π²ΡΠ·ΡΠ²Π°Π΅ΠΌΡΠΉ ΠΏΡΠΈ Π½Π°ΠΆΠ°ΡΠΈΠΈ Π½Π° ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ RadioButton1 — AUTH Π°ΡΡΠ΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡ.
ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΠΊΠ»Π°ΡΡΠ° pop3ClientDlg ΡΠΎΠ΄Π΅ΡΠΆΠΈΡΡΡ Π² ΡΠ°ΠΉΠ»Π΅ pop3ClientDlg.h. Π Π΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ ΠΊΠ»Π°ΡΡΠ° ΡΠΎΠ΄Π΅ΡΠΆΠΈΡΡΡ Π² ΡΠ°ΠΉΠ»Π΅ pop3ClientDlg.cpp.
Π Ρ ΠΎΠ΄Π΅ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΏΡΠΎΠ΅ΠΊΡΠ° Π±ΡΠ»ΠΈ ΠΌΠΎΠ΄ΠΈΡΠΈΡΠΈΡΠΎΠ²Π°Π½Ρ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ ΠΌΠ΅ΡΠΎΠ΄Ρ ΠΊΠ»Π°ΡΡΠ°: ΠΌΠ΅ΡΠΎΠ΄ BOOL Cpop3ClientDlg: OnInitDialog () — Π² Π½Π΅Π³ΠΎ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π° ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡ ΡΠ²ΠΎΠΉΡΡΠ² ΠΊΠ»Π°ΡΡΠ°:
this->simple=false;
this->apop=false;
this->auth=false;
ΠΡΠ½ΠΎΠ²Π½Π°Ρ ΡΠ°ΡΡΡ ΠΊΠΎΠ΄Π° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° ΡΠΎΠ΄Π΅ΡΠΆΠΈΡΡΡ Π² ΠΌΠ΅ΡΠΎΠ΄Π΅ void Cpop3ClientDlg: OnBnClickedButton1() — ΠΌΠ΅ΡΠΎΠ΄Π΅, ΠΊΠΎΡΠΎΡΡΠΉ Π²ΡΠ·ΡΠ²Π°Π΅ΡΡΡ ΠΏΡΠΈ Π½Π°ΠΆΠ°ΡΠΈΠΈ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΌ Π½Π° ΠΊΠ½ΠΎΠΏΠΊΡ Button1.
1.2 ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΠΌΠ΅ΡΠΎΠ΄Π° void Cpop3ClientDlg: OnBnClickedButton1()
ΠΠ΅ΡΠΎΠ΄ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ Π»ΠΎΠΊΠ°Π»ΡΠ½ΡΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅:
pop3Socket *pSocket — ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ Π½Π° ΠΎΠ±ΡΠ΅ΠΊΡ ΠΊΠ»Π°ΡΡΠ° pop3Socket;
Cstring ip — ΡΡΡΠΎΠΊΠ° ΡΠΈΠΏΠ° Cstring, ΠΏΡΠ΅Π΄Π½Π°Π·Π½Π°ΡΠ΅Π½Π½Π°Ρ Π΄Π»Ρ Π·ΡΠ°Π½Π΅Π½ΠΈΡ ip Π°Π΄ΡΠ΅ΡΠ° ΡΠ΅ΡΠ²Π΅ΡΠ°
int port — ΡΠ΅Π»ΠΎΡΠΈΡΠ»Π΅Π½Π½Π°Ρ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ Π΄Π»Ρ Ρ ΡΠ°Π½Π΅Π½ΠΈΡ Π½ΠΎΠΌΠ΅ΡΠ° ΠΏΠΎΡΡΠ° ΡΠ΅ΡΠ²Π΅ΡΠ°;
CString messtr — ΡΡΡΠΎΠΊΠ° Π΄Π»Ρ Ρ ΡΠ°Π½Π΅Π½ΠΈΡ ΡΡΠΎΡΠΌΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ ΠΎΡΠ²Π΅ΡΠ° ΠΊΠ»ΠΈΠ΅Π½ΡΠ°
CString pswd — ΡΡΡΠΎΠΊΠ° Π΄Π»Ρ Ρ ΡΠ°Π½Π΅Π½ΠΈΡ ΠΏΠ°ΡΠΎΠ»ΡΡ ΠΏΡΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ;
CString login — ΡΡΡΠΎΠΊΠ° Π΄Π»Ρ Ρ ΡΠ°Π½Π΅Π½ΠΈΡ ΠΈΠΌΠ΅Π½ΠΈ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ;
char * buf = new char — ΠΌΠ°ΡΡΠΈΠ² Π΄Π»Ρ Ρ ΡΠ°Π½Π΅Π½ΠΈΡ ΠΏΡΠΈΠ½ΡΡΠΎΠ² ΡΡΡΠΎΠΊΠΈ ΠΎΡ ΡΠ΅ΡΠ²Π΅ΡΠ°;
char fl=0 — ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ Π΄Π»Ρ Π°Π½Π°Π»ΠΈΠ·Π° ΠΎΡΠ²Π΅ΡΠ° ΡΠ΅ΡΠ²Π΅ΡΠ°;
char * stamp = new char[64] - ΡΡΡΠΎΠΊΠ° Π΄Π»Ρ Ρ ΡΠ°Π½Π΅Π½ΠΈΡ Π²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΠΌΠ΅ΡΠΊΠΈ ΡΠ΅ΡΠ²Π΅ΡΠ°.
ΠΠ΅ΡΠΎΠ΄ Π²ΡΠ·ΡΠ²Π°Π΅ΡΡΡ ΠΏΡΠΈ Π½Π°ΠΆΠ°ΡΠΈΠΈ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΌ Π½Π° ΠΊΠ½ΠΎΠΏΠΊΡ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ Ρ ΡΠ΅ΡΠ²Π΅ΡΠΎΠΌ. ΠΠΎΠ΄ΡΠ°Π·ΡΠΌΠ΅Π²Π°Π΅ΡΡΡ, ΡΡΠΎ Π½Π° ΠΌΠΎΠΌΠ΅Π½Ρ Π½Π°ΠΆΠ°ΡΠΈΡ ΠΊΠ½ΠΎΠΏΠΊΠΈ, ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Π²Π²Π΅Π» Π²ΡΠ΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡΠ΅ Π΄Π»Ρ ΡΡΠ½ΠΊΡΠΈΠΎΠ½ΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Π΄Π°Π½Π½ΡΠ΅, ΠΊΠ°ΠΊ ΡΠΎ: ΠΈΠΌΡ, ΠΏΠ°ΡΠΎΠ»Ρ, Π°Π΄ΡΠ΅Ρ, Π½ΠΎΠΌΠ΅Ρ ΠΏΠΎΡΡΠ°, ΡΠΈΠΏ Π°ΡΡΠ΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ. ΠΠ°Π»ΠΈΡΠΈΠ΅ ΠΏΠΎΠ»Π½ΠΎΡΡ Π²Π²ΠΎΠ΄Π° ΡΡΠΈΡ Π΄Π°Π½Π½ΡΡ ΠΏΡΠΎΠ²Π΅ΡΡΠ΅ΡΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΎΠΉ ΠΈ, Π² ΡΠ»ΡΡΠ°Π΅, Π΅ΡΠ»ΠΈ ΠΊΠ°ΠΊΠΈΠ΅-Π»ΠΈΠ±ΠΎ ΠΈΠ· Π½ΠΈΡ ΠΎΡΡΡΡΡΡΠ²ΡΡΡ, ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° Π²ΡΠ΄Π°Π΅Ρ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ ΠΎΠ± ΠΎΡΠΈΠ±ΠΊΠ΅ Π² Π²ΠΈΠ΄Π΅ ΠΎΠΊΠ½Π° AfxMessageBox.
ΠΠ°ΠΊ ΡΠΎΠ»ΡΠΊΠΎ Π΄Π°Π½Π½ΡΠΉ ΠΌΠ΅ΡΠΎΠ΄ Π²ΡΠ·ΡΠ²Π°Π΅ΡΡΡ, ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ ΡΡΠΈΡΡΠ²Π°Π½ΠΈΠ΅ Π²Π²Π΅Π΄Π΅Π½Π½ΡΡ Π΄Π°Π½Π½ΡΡ Π² ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΡΠ½ΠΊΡΠΈΠΈ GetDlgItemText. ΠΠ°ΡΠ°ΠΌΠ΅ΡΡΠ°ΠΌΠΈ Π΄Π°Π½Π½ΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ ΡΠ²Π»ΡΡΡΡΡ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ° ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΠΈΠ· ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ ΡΡΠΈΡΡΠ²Π°Π΅ΡΡΡ ΡΡΡΠΎΠΊΠ° ΠΈ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ, Π² ΠΊΠΎΡΠΎΡΠΎΡΡ Π΄Π°Π½Π½ΡΠ΅ ΡΡΠΈΡΡΠ²Π°ΡΡΡΡ.
GetDlgItemText (IDC_EDIT1,ip); - ΠΈΠ· ΡΡΡΠΎΠΊΠΈ Π²Π²ΠΎΠ΄Π° Π² ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ ip
GetDlgItemText (IDC_EDIT2,login); - ΠΈΠ· ΡΡΡΠΎΠΊΠΈ Π²Π²ΠΎΠ΄Π° ΠΈΠΌΠ΅Π½ΠΈ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Π² ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ login;
port = atoi (login); - Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΡΠ½ΠΊΡΠΈΠΈ atoi ΡΡΡΠΎΠΊΠ° login ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΡΠ΅ΡΡΡ Π² ΡΠ΅Π»ΠΎΡΠΈΡΠ»Π΅Π½Π½ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΈ ΠΏΡΠΈΡΠ²Π°ΠΈΠ²Π°Π΅ΡΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ port.
GetDlgItemText (IDC_EDIT3,login); - ΠΈΠ· ΡΡΡΠΎΠΊΠΈ Π²Π²ΠΎΠ΄Π° ΠΈΠΌΠ΅Π½ΠΈ Π² ΡΡΡΠΎΠΊΡ login
GetDlgItemText (IDC_EDIT4,pswd); - ΠΈΠ· ΡΡΡΠΎΠΊΠΈ Π²Π²ΠΎΠ΄Π° ΠΏΠ°ΡΠΎΠ»Ρ Π² ΡΡΡΠΎΠΊΡ pswd.
ΠΠΎΡΠ»Π΅ ΡΡΠΎΠ³ΠΎ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΡΡ ΠΏΡΠΎΠ²Π΅ΡΠΊΠ° ΡΠΎΠ³ΠΎ, ΡΡΠΎ Π±ΡΠ» Π²ΡΠ±ΡΠ°Π½ ΡΠΈΠΏ Π°ΡΡΠ΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ, Π΅ΡΠ»ΠΈ Π½ΠΈ ΠΎΠ΄ΠΈΠ½ ΠΈΠ· ΡΠΈΠΏΠΎΠ² Π°ΡΡΠ΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ Π²ΡΠ±ΡΠ°Π½ Π½Π΅ Π±ΡΠ», ΡΠΎ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ Π²ΡΠ·ΠΎΠ² Π΄ΠΈΠ°Π»ΠΎΠ³ΠΎΠ²ΠΎΠ³ΠΎ ΠΎΠΊΠ½Π° Ρ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ΠΌ ΠΎΠ± ΠΎΡΠΈΠ±ΠΊΠ΅.
ΠΡΠ»ΠΈ ΠΏΡΠΎΠ²Π΅ΡΠΊΠ° ΠΏΡΠΎΡΠ΄Π΅Π½Π° ΡΡΠΏΠ΅ΡΠ½ΠΎ, ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΡΠΎΠΊΠ΅ΡΠ° pSocket=new pop3Socket (this), ΠΈ Π΅Π³ΠΎ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡ pSocket->Create ().
ΠΠ°Π»Π΅Π΅ ΡΡΠ½ΠΊΡΠΈΠΎΠ½ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΠΎΡΡΡΠ΅ΡΡΠ²Π»ΡΠ΅ΡΡΡ Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΎΡ Π²ΡΠ±ΡΠ°Π½Π½ΠΎΠ³ΠΎ ΡΠΈΠΏΠ° Π°ΡΡΠ΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ. ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΡΡ Π°Π½Π°Π»ΠΈΠ· ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ simple, apop ΠΈ auth.
1.3 ΠΡΠΎΡΡΠ°Ρ Π°ΡΡΠ΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡ
1. ΠΡΡΡΠ΅ΡΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠ΅ Ρ ΡΠ΅ΡΠ²Π΅ΡΠΎΠΌ Ρ ΠΏΠΎΠΌΠΎΡΡΡ Π²ΡΠ·ΠΎΠ²Π° ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ° ΡΠΎΠΊΠ΅ΡΠ° pSocet: pSocket->Connect (ip, port), Π³Π΄Π΅ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ² ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡΡΡ ΡΡΡΠΎΠΊΠ°, ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠ°Ρ Π°Π΄ΡΠ΅Ρ ΡΠ΅ΡΠ²Π΅ΡΠ° ΠΈ Π½ΠΎΠΌΠ΅Ρ ΠΏΠΎΡΡΠ° ΠΡΠ»ΠΈ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠ΅ Π½Π΅ ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½ΠΎ ΠΏΠΎ ΠΊΠ°ΠΊΠΈΠΌ-Π»ΠΈΠ±ΠΎ ΠΏΡΠΈΡΠΈΠ½Π°ΠΌ, ΡΠΎ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΡΡ Π²ΡΠ·ΠΎΠ² ΠΎΠΊΠ½Π° ΠΎΡΠΈΠ±ΠΊΠΈ ΠΈ Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ.
2. ΠΠΆΠΈΠ΄Π°Π½ΠΈΠ΅ ΠΈ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΠ΅ ΡΡΡΠΎΠΊΠΈ ΠΎΡΠ²Π΅ΡΠ° ΠΎΡ ΡΠ΅ΡΠ²Π΅ΡΠ° Π² ΠΌΠ°ΡΡΠΈΠ² ΠΈ buf Ρ ΠΏΠΎΠΌΠΎΡΡΡ Π²ΡΠ·ΠΎΠ²Π° ΠΌΠ΅ΡΠΎΠ΄Π° ΡΠΎΠΊΠ΅ΡΠ° pSocet->Receive (buf, 0). Π ΡΠ»ΡΡΠ°Π΅, Π΅ΡΠ»ΠΈ Π΄Π°Π½Π½ΡΠ΅ Π½Π΅ Π±ΡΠ»ΠΈ ΠΏΠΎΠ»ΡΡΠ΅Π½Ρ ΡΡΠΎΡ ΠΌΠ΅ΡΠΎΠ΄ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΠΎΡΡΠΈΡΠ°ΡΠ΅Π»ΡΠ½ΠΎΠ΅ ΡΠΈΡΠ»ΠΎ, Π² ΠΏΡΠΎΡΠΈΠ²Π½ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΠΏΠΎΠ»ΡΡΠ΅Π½Π½ΡΡ Π±Π°ΠΉΡ. ΠΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ Π±Π°ΠΉΡ, ΠΏΠΎΠ»ΡΡΠ΅Π½Π½ΡΡ ΠΎΡ ΡΠ΅ΡΠ²Π΅ΡΠ° ΠΏΡΠΈΡΠ²Π°ΠΈΠ²Π°Π΅ΡΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ int recived.
3. ΠΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΡΡ ΡΠΎΡΠΌΠ°ΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΌΠ΅ΡΠΎΠ΄Π° ΡΡΡΠΎΠΊΠΈ messtr. Format () ΡΡΡΠΎΠΊΠΈ messtr messtr. Format («S: %s», buf). ΠΡΠΎΡ ΠΌΠ΅ΡΠΎΠ΄ Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅Ρ Π² Π½Π°ΡΠ°Π»ΠΎ ΡΡΡΠΎΠΊΠΈ ΡΠΈΠΌΠ²ΠΎΠ» ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΡ «S: «ΠΈ Π΄Π°Π»Π΅Π΅ ΡΠΎΠ΄Π΅ΡΠΈΠΌΠΎΠ΅ ΠΌΠ°ΡΡΠΈΠ²Π° buf.
4. ΠΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΡΡ ΡΠ²ΠΎΠ΄ ΡΡΡΠΎΠΊΠΈ messtr Π² ListBox Ρ ΠΏΠΎΠΌΠΎΡΡΡ Π²ΡΠ·ΠΎΠ²Π° ΠΌΠ΅ΡΠΎΠ΄Π° Protocol->Add (messtr).
5. Π ΡΠΈΠΊΠ»Π΅ ΠΎΡ 0 Π΄ΠΎ 127 ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ° ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΡΡ ΠΎΠ±Π½ΡΠ»Π΅Π½ΠΈΠ΅ ΠΌΠ°ΡΡΠΈΠ²Π° buf
6. Π‘ ΠΏΠΎΠΌΠΎΡΡΡ Π²ΡΠ·ΠΎΠ²Π° ΠΌΠ΅ΡΠΎΠ΄Π° EnableWindow ΠΎΠ±ΡΠ΅ΠΊΡΠ° disconect_btn Ρ true Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ° ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΡΡ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠ° ΠΎΠΊΠ½Π° ΠΊΠ½ΠΎΠΏΠΊΠΈ ΡΠ°Π·ΡΡΠ²Π° ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ Ρ ΡΠ΅ΡΠ²Π΅ΡΠΎΠΌ Π² Π°ΠΊΡΠΈΠ²Π½ΠΎΠ΅ ΡΠΎΡΠΎΡΠ½ΠΈΠ΅.
7. Π‘ ΠΏΠΎΠΌΠΎΡΡΡ Π²ΡΠ·ΠΎΠ²Π° ΠΌΠ΅ΡΠΎΠ΄Π° EnableWindow ΠΎΠ±ΡΠ΅ΠΊΡΠ° conect_btn Ρ false Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ° ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΡΡ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠ° ΠΎΠΊΠ½Π° ΠΊΠ½ΠΎΠΏΠΊΠΈ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ Ρ ΡΠ΅ΡΠ²Π΅ΡΠΎΠΌ Π² Π½Π΅Π°ΠΊΡΠΈΠ²Π½ΠΎΠ΅ ΡΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅.
8. ΠΡΠ»ΠΈ ΠΎΡ ΡΠ΅ΡΠ²Π΅ΡΠ° ΠΏΠΎΠ»ΡΡΠ΅Π½ ΠΏΠΎΠ»ΠΎΠΆΠΈΡΠ΅Π»ΡΠ½ΡΠΉ ΠΎΡΠ²Π΅Ρ (ΠΏΡΠΎΠ²Π΅ΡΡΠ΅ΡΡΡ ΠΏΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ fl: Π΅ΡΠ»ΠΈ ΠΎΠ½Π° ΠΈΠΌΠ΅Π΅Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ «+», ΡΠΎ ΠΎΡΠ²Π΅Ρ ΠΏΠΎΠ»ΠΎΠΆΠΈΡΠ΅Π»Π΅Π½, Π΅ΡΠ»ΠΈ «-», ΡΠΎ ΠΎΡΡΠΈΡΠ°ΡΠ΅Π»Π΅Π½), ΡΠΎΠ³Π΄Π° ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΡΡ ΠΎΡΠΏΡΠ°Π²ΠΊΠ° Π΅ΠΌΡ ΡΡΡΠΎΠΊΠΈ Ρ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ USER:
«pSocket->Send («USER «+ login + «nr», strlen («USER «)+strlen (login) + strlen («nr»), 1)», Π΅ΡΠ»ΠΈ Π½Π΅Ρ, ΡΠΎ ΠΎΡΡΡΠ΅ΡΡΠ²Π»ΡΠ΅ΡΡΡ ΠΏΠ΅ΡΠ΅Ρ ΠΎΠ΄ ΠΊ ΠΏΡΠ½ΠΊΡΡ 14
9. ΠΠΎΠ²ΡΠΎΡΠΈΡΡ 2−7
10. ΠΠΎΠ²ΡΠΎΡΠΈΡΡ ΠΏ 8−9 (Ρ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ PASS: pSocket->Send («PASS «+ pswd + «nr», strlen («PASS «)+strlen (pswd)+strlen («nr»), 0))
11. ΠΠΎΠ²ΡΠΎΡΠΈΡΡ ΠΏ 8−9 Ρ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ STAT:
pSocket->Send («STATnr», strlen («STATnr»), 0)
12. ΠΠΎΡΠ»Π°ΡΡ ΡΠ΅ΡΠ²Π΅ΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ QUIT:
pSocket->Send («QUITnr», strlen («QUITnr»), 0)
1.4 APOP Π°ΡΡΠ΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡ
1. ΠΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΡΡ ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΠ° md5Capi ΠΊΠ»Π°ΡΡΠ° Cmd5Capi. ΠΡΠΎΡ ΠΎΠ±ΡΠ΅ΠΊΡ ΠΎΡΡΡΠ΅ΡΡΠ²Π»ΡΠ΅Ρ Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΠ΅ Ρ ΡΡ-ΡΡΠ½ΠΊΡΠΈΠΈ MD5. ΠΠ±ΡΡΠ²Π»Π΅Π½ΠΈΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ — CString out, in, test; int start, end;
2. ΠΡΠ»ΠΈ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠ΅ Ρ ΡΠ΅ΡΠ²Π΅ΡΠΎΠΌ ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½ΠΎ ΡΠΎ 3, ΠΈΠ½ΡΠ°Π΅ Π²ΡΠ²ΠΎΠ΄ ΠΎΠΊΠ½Π° ΠΎΡΠΈΠ±ΠΊΠΈ:
3. Π£ΡΡΠ°Π½ΠΎΠ²ΠΊΠ° ΠΎΠΊΠ½Π° ΠΊΠ½ΠΎΠΏΠΊΠΈ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ Ρ ΡΠ΅ΡΠ²Π΅ΡΠΎΠΌ Π² Π½Π΅Π°ΠΊΡΠΈΠ²Π½ΠΎΠ΅ ΡΠΎΡΠΎΡΠ½ΠΈΠ΅
4. Π£ΡΡΠ°Π½Π²ΠΊΠ° ΠΎΠΊΠ½Π° ΠΊΠ½ΠΎΠΏΠΊΠΈ ΡΠ°Π·ΡΡΠ²Π° ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ Π² Π°ΠΊΡΠΈΠ²Π½ΠΎΠ΅ ΡΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅
5. ΠΠΎΠ»ΡΡΠ΅Π½ΠΈΠ΅ ΡΡΡΠΎΠΊΠΈ ΠΎΡΠ²Π΅ΡΠ° ΠΎΡ ΡΠ΅ΡΠ²Π΅ΡΠ° Π² ΠΌΠ°ΡΡΠΈΠ² ΠΈ buf. ΠΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ Π±Π°ΠΉΡ, ΠΏΠΎΠ»ΡΡΠ΅Π½Π½ΡΡ ΠΎΡ ΡΠ΅ΡΠ²Π΅ΡΠ° ΠΏΡΠΈΡΠ²Π°ΠΈΠ²Π°Π΅ΡΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ int recived.
6. Π€ΠΎΡΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΌΠ΅ΡΠΎΠ΄Π° ΡΡΡΠΎΠΊΠΈ messtr. Forma () ΡΡΡΠΎΠΊΠΈ messtr messtr. Format («S: %s», buf)
7. ΠΠΎΠΈΡΠΊ Π² ΠΏΠΎΠ»ΡΡΠ΅Π½Π½ΠΎΠΉ ΠΎΡ ΡΠ΅ΡΠ²Π΅ΡΠ° ΡΡΡΠΎΠΊΠΈ ΠΏΡΠΈΠ²Π΅ΡΡΡΠ²ΠΈΡ ΡΠ½ΠΈΠΊΠ°Π»ΡΠ½ΠΎΠΉ ΠΌΠ΅ΡΠΊΠΈ.
8. ΠΡΠ²ΠΎΠ΄ ΡΡΡΠΎΠΊΠΈ messtr Π² ListBox.
9. ΠΠ±Π½ΡΠ»Π΅Π½ΠΈΠ΅ ΠΌΠ°ΡΡΠΈΠ²Π° buf
10. ΠΡΠ»ΠΈ ΠΎΡ ΡΠ΅ΡΠ²Π΅ΡΠ° ΠΏΠΎΠ»ΡΡΠ΅Π½ ΠΏΠΎΠ»ΠΎΠΆΠΈΡΠ΅Π»ΡΠ½ΡΠΉ ΠΎΡΠ²Π΅Ρ, ΡΠΎ 11, ΠΈΠ½Π°ΡΠ΅ 14
11. ΠΡΡΠΈΡΠ»Π΅Π½ΠΈΠ΅ MD5 Ρ ΡΡΠ° ΠΎΡ ΡΡΡΠΎΠΊΠΈ Π²ΠΈΠ΄Π°: ΠΌΠ΅ΡΠΊΠ°_ΡΠ΅ΡΠ²Π΅ΡΠ°+ΠΏΠ°ΡΠΎΠ»Ρ
12. ΠΡΠΏΡΠ°Π²ΠΊΠ° ΡΠ΅ΡΠ²Π΅ΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ APOP:
out="APOP «+ login + „“ + md5Capi. Digest (in)+» nr" ;
pSocket->Send (out, out. GetLength (), 0)
13. ΠΡΠ»ΠΈ ΠΏΠΎΠ»ΡΡΠ΅Π½ ΠΏΠΎΠ»ΠΎΠΆΠΈΡΠ΅Π»ΡΠ½ΡΠΉ ΠΎΡΠ²Π΅Ρ, ΡΠΎ ΠΎΡΠΏΡΠ°Π²ΠΊΠ° ΡΠ΅ΡΠ²Π΅ΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ STAT, ΠΈΠ½Π°ΡΠ΅ 14
14. ΠΡΠΏΡΠ°Π²ΠΊΠ° ΡΠ΅ΡΠ²Π΅ΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ QUIT.
1.5 AUTH Π°ΡΡΠ΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡ
1. ΠΡΠ»ΠΈ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠ΅ Ρ ΡΠ΅ΡΠ²Π΅ΡΠΎΠΌ ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½ΠΎ ΡΠΎ 2, ΠΈΠ½ΡΠ°Π΅ Π²ΡΠ²ΠΎΠ΄ ΠΎΠΊΠ½Π° ΠΎΡΠΈΠ±ΠΊΠΈ:
2. Π£ΡΡΠ°Π½ΠΎΠ²ΠΊΠ° ΠΎΠΊΠ½Π° ΠΊΠ½ΠΎΠΏΠΊΠΈ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ Ρ ΡΠ΅ΡΠ²Π΅ΡΠΎΠΌ Π² Π½Π΅Π°ΠΊΡΠΈΠ²Π½ΠΎΠ΅ ΡΠΎΡΠΎΡΠ½ΠΈΠ΅
3. Π£ΡΡΠ°Π½Π²ΠΊΠ° ΠΎΠΊΠ½Π° ΠΊΠ½ΠΎΠΏΠΊΠΈ ΡΠ°Π·ΡΡΠ²Π° ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ Π² Π°ΠΊΡΠΈΠ²Π½ΠΎΠ΅ ΡΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅
4. ΠΠΎΠ»ΡΡΠ΅Π½ΠΈΠ΅ ΡΡΡΠΎΠΊΠΈ ΠΎΡΠ²Π΅ΡΠ° ΠΎΡ ΡΠ΅ΡΠ²Π΅ΡΠ° Π² ΠΌΠ°ΡΡΠΈΠ² ΠΈ buf. ΠΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ Π±Π°ΠΉΡ, ΠΏΠΎΠ»ΡΡΠ΅Π½Π½ΡΡ ΠΎΡ ΡΠ΅ΡΠ²Π΅ΡΠ° ΠΏΡΠΈΡΠ²Π°ΠΈΠ²Π°Π΅ΡΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ int recived.
5. Π€ΠΎΡΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΌΠ΅ΡΠΎΠ΄Π° ΡΡΡΠΎΠΊΠΈ messtr. Forma () ΡΡΡΠΎΠΊΠΈ messtr messtr. Format («S: %s», buf)
6. ΠΠΎΠΈΡΠΊ Π² ΠΏΠΎΠ»ΡΡΠ΅Π½Π½ΠΎΠΉ ΠΎΡ ΡΠ΅ΡΠ²Π΅ΡΠ° ΡΡΡΠΎΠΊΠΈ ΠΏΡΠΈΠ²Π΅ΡΡΡΠ²ΠΈΡ ΡΠ½ΠΈΠΊΠ°Π»ΡΠ½ΠΎΠΉ ΠΌΠ΅ΡΠΊΠΈ.
7. ΠΡΠ²ΠΎΠ΄ ΡΡΡΠΎΠΊΠΈ messtr Π² ListBox.
8. ΠΠ±Π½ΡΠ»Π΅Π½ΠΈΠ΅ ΠΌΠ°ΡΡΠΈΠ²Π° buf
9. ΠΡΠ»ΠΈ ΠΎΡ ΡΠ΅ΡΠ²Π΅ΡΠ° ΠΏΠΎΠ»ΡΡΠ΅Π½ ΠΏΠΎΠ»ΠΎΠΆΠΈΡΠ΅Π»ΡΠ½ΡΠΉ ΠΎΡΠ²Π΅Ρ, ΡΠΎ 11, ΠΈΠ½Π°ΡΠ΅ 14
10. ΠΡΡΠΈΡΠ»Π΅Π½ΠΈΠ΅ MD5 Ρ ΡΡΠ° ΠΎΡ ΠΌΠ΅ΡΠΊΠΈ ΡΠ΅ΡΠ²Π΅ΡΠ° Ρ ΠΏΠ°ΡΠΎΠ»Π΅ΠΌ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΊΠ»ΡΡΠ°.
11. ΠΡΠΏΡΠ°Π²ΠΊΠ° ΡΠ΅ΡΠ²Π΅ΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ APOP:
out="AUTH «+ login + „“ + md5Capi. Digest (in)+» nr" ;
pSocket->Send (out, out. GetLength (), 0)
12. ΠΡΠ»ΠΈ ΠΏΠΎΠ»ΡΡΠ΅Π½ ΠΏΠΎΠ»ΠΎΠΆΠΈΡΠ΅Π»ΡΠ½ΡΠΉ ΠΎΡΠ²Π΅Ρ, ΡΠΎ ΠΎΡΠΏΡΠ°Π²ΠΊΠ° ΡΠ΅ΡΠ²Π΅ΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ STAT, ΠΈΠ½Π°ΡΠ΅ 14
13. ΠΡΠΏΡΠ°Π²ΠΊΠ° ΡΠ΅ΡΠ²Π΅ΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ QUIT.
2. ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅ Π°Π»Π³ΠΎΡΠΈΡΠΌΠ° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ
ΠΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΡΡ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ ΠΊ ΡΠ΅ΡΠ²Π΅ΡΡ. ΠΡΠ»ΠΈ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠ΅ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½ΠΎ, ΡΠΎ Π²ΡΠ΄Π°Π΅ΡΡΡ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠ΅Π΅ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ ΠΎΠ± ΠΎΡΠΈΠ±ΠΊΠ΅ ΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° Π·Π°Π²Π΅ΡΡΠ°Π΅Ρ ΡΠ²ΠΎΡ ΡΠ°Π±ΠΎΡΡ. ΠΡΠ»ΠΈ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠ΅ Ρ ΡΠ΅ΡΠ²Π΅ΡΠΎΠΌ ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½ΠΎ, ΡΠΎ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΡΡ Π²ΡΠ±ΠΎΡ Π²Π΅ΡΠΊΠΈ Π°Π»Π³ΠΎΡΠΈΡΠΌΠ°, ΠΏΠΎ ΠΊΠΎΡΠΎΡΠΎΠΉ ΠΏΠΎΠΉΠ΄Π΅Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ. ΠΠ½Π° Π²ΡΠ±ΠΈΡΠ°Π΅ΡΡΡ Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΎΡ Π²ΡΠ±ΡΠ°Π½Π½ΠΎΠ³ΠΎ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΌ ΡΠΈΠΏΠ° Π°ΡΡΠ΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ. Π Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΎΡ ΡΡΠΎΠ³ΠΎ ΡΠΈΠΏΠ°, ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° Π²ΡΠΏΠΎΠ»Π½ΡΠ΅Ρ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΡΡ ΠΏΡΠΎΡΠ΅Π΄ΡΡΡ. ΠΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ ΡΡΠΈ Π²ΠΈΠ΄Π° Π°ΡΡΠ΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ: ΠΏΡΠΎΡΡΠ°Ρ Π°ΡΡΠ΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡ, ΠΏΡΠΈ ΠΊΠΎΡΠΎΡΠΎΠΉ ΠΏΠ°ΡΠΎΠ»Ρ ΠΈ ΠΈΠΌΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡΡΡ ΠΏΠΎ ΠΊΠ°Π½Π°Π»Ρ ΡΠ²ΡΠ·ΠΈ Π² Π½Π΅Π·Π°ΡΠΈΡΠ΅Π½Π½ΠΎΠΌ ΠΎΡΠΊΡΡΡΠΎΠΌ Π²ΠΈΠ΄Π΅; Π°ΡΡΠ΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ Π±Π΅Π·ΠΊΠ»ΡΡΠ΅Π²ΠΎΠΉ Ρ ΡΡ-ΡΡΠ½ΠΊΡΠΈΠΈ MD5, Π°ΡΡΠ΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΠΊΠ»ΡΡΠ΅Π²ΠΎΠΉ Ρ ΡΡ-ΡΡΠ½ΠΊΡΠΈΠΈ MD5. Π ΡΠ»ΡΡΠ°Π΅, Π΅ΡΠ»ΠΈ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΌ Π²ΡΠ±ΡΠ°Π½ ΡΠΈΠΏ Π°ΡΡΠ΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ — ΠΏΡΠΎΡΡΠ°Ρ Π°ΡΡΠ΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡ, ΡΠΎ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΡΡ ΠΏΠ΅ΡΠ΅Ρ ΠΎΠ΄ ΠΊ ΠΏΡΠΎΡΠ΅Π΄ΡΡΠ΅ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ ΡΡΠΎΠ³ΠΎ ΡΠΈΠΏΠ° Π°ΡΡΠ΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ. Π ΡΠ»ΡΡΠ°Π΅, Π΅ΡΠ»ΠΈ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΌ Π²ΡΠ±ΡΠ°Π½ ΡΠΈΠΏ Π°ΡΡΠ΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ Ρ ΡΡ-ΡΡΠ½ΠΊΡΠΈΠΉ MD5, ΡΠΎ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΡΡ ΡΠΎΡΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΡΡΡΠΎΠΊΠΈ, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π΄Π»Ρ Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΡ Ρ ΡΡ-ΡΡΠ½ΠΊΡΠΈΠΈ ΠΈ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΡΡ ΠΏΠ΅ΡΠ΅Ρ ΠΎΠ΄ ΠΊ ΠΏΡΠΎΡΠ΅Π΄ΡΡΠ°ΠΌ, ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°ΡΡΠΈΠΌ Π΄Π°Π½Π½ΡΠ΅ Π²ΠΈΠ΄Ρ Π°ΡΡΠ΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ.
2.1 ΠΡΠΎΡΡΠ°Ρ Π°ΡΡΠ΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡ
ΠΠΎΡΠ»Π΅ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ ΡΠ°Π·ΡΠ°Π±Π°ΡΡΠ²Π°Π΅ΠΌΠΎΠ³ΠΎ ΠΊΠ»ΠΈΠ΅Π½ΡΡΠΊΠΎΠ³ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΊ ΡΠ΅ΡΠ²Π΅ΡΡ ΠΈ Π²ΠΎΠ΄Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΌ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡΡ ΡΡΡΠΎΠΊ, ΡΠ΅ΡΠ²Π΅ΡΡ ΠΎΡΠΏΡΠ°Π²Π»ΡΠ΅ΡΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Π° USER Ρ ΠΈΠΌΠ΅Π½Π΅ΠΌ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ. ΠΠΎΡΠ»Π΅ ΡΡΠΎΠ³ΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° ΠΏΠ΅ΡΠ΅Ρ ΠΎΠ΄ΠΈΡ Π² ΡΠ΅ΠΆΠΈΠΌ ΠΎΠΆΠΈΠ΄Π°Π½ΠΈΡ ΠΎΡΠ²Π΅ΡΠ° ΡΠ΅ΡΠ²Π΅ΡΠ°. ΠΠΎΡΠ»Π΅ ΡΠΎΠ³ΠΎ ΠΊΠ°ΠΊ ΡΡΡΠΎΠΊΠ° Ρ ΠΎΡΠ²Π΅ΡΠΎΠΌ ΡΠ΅ΡΠ²Π΅ΡΠ° ΠΏΡΠΈΡ ΠΎΠ΄ΠΈΡ Π² ΡΠΎΠΊΠ΅Ρ ΠΊΠ»ΠΈΠ΅Π½ΡΠ°, ΡΠΎ ΡΡΠ° ΡΡΡΠΎΠΊΠ° ΡΠΎΡ ΡΠ°Π½ΡΠ΅ΡΡΡ Π² ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠΉ Π±ΡΡΠ΅Ρ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π΄Π»Ρ Ρ ΡΠ°Π½Π΅Π½ΠΈΡ ΡΡΡΠΎΠΊ, ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠΈΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ ΠΏΡΠΎΡΠΎΠΊΠΎΠ»Π°. ΠΠΎΡΠ»Π΅ ΡΡΠΎΠ³ΠΎ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΡΡ ΠΏΡΠΎΠ²Π΅ΡΠΊΠ° ΠΎΡΠ²Π΅ΡΠ½ΠΎΠΉ ΡΡΡΠΎΠΊΠΈ ΡΠ΅ΡΠ²Π΅ΡΠ°. ΠΡΠ»ΠΈ ΡΡΡΠΎΠΊΠ° ΠΎΡΠ²Π΅ΡΠ° ΡΠ΅ΡΠ²Π΅ΡΠ° ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ Π½Π°ΡΠ°Π»ΡΠ½ΡΡ ΠΏΠΎΠ΄ΡΡΡΠΎΠΊΡERR, ΡΠΎ Π·Π½Π°ΡΠΈΡ ΡΡΠΈΠΊΠ° Ρ Π΄Π°Π½Π½ΡΠΌ ΠΈΠΌΠ΅Π½Π΅ΠΌ Π½Π° ΡΠ΅ΡΠ²Π΅ΡΠ΅ Π½Π΅ ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ. Π Π΄Π°Π½Π½ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ ΡΠ΅ΡΠ²Π΅ΡΡ ΠΎΡΠΏΡΠ°Π²Π»ΡΠ΅ΡΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Π° QUIT ΠΈ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΡΡ Π²ΡΡ ΠΎΠ΄ ΠΈΠ· ΠΏΡΠΎΡΠ΅Π΄ΡΡΡ. ΠΡΠ»ΠΈ ΠΆΠ΅ ΡΡΡΠΎΠΊΠ° Π½Π°ΡΠΈΠ½Π°Π΅ΡΡΡ Ρ +ΠΠ, ΡΠΎ ΠΏΠΎΡΡΠΎΠ²ΡΠΉ ΡΡΠΈΠΊ Ρ Π΄Π°Π½Π½ΡΠΌ ΠΈΠΌΠ΅Π½Π΅ΠΌ ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ Π½Π° ΡΠ΅ΡΠ²Π΅ΡΠ΅ ΠΈ ΡΠ΅ΡΠ²Π΅Ρ ΠΎΠΆΠΈΠ΄Π°Π΅Ρ ΠΏΠ°ΡΠΎΠ»Ρ Π΄Π»Ρ Π΄ΠΎΡΡΡΠΏΠ° ΠΊ Π½Π΅ΠΌΡ. ΠΠ°Π»Π΅Π΅ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΡΡ ΠΎΡΠΏΡΠ°Π²ΠΊΠ° ΡΠ΅ΡΠ²Π΅ΡΡ ΡΡΡΠΎΠΊΠΈ Ρ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ PASS, ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠ΅ΠΉ ΠΏΠ°ΡΠΎΠ»Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Π΄Π»Ρ Π΄ΠΎΡΡΡΠΏΠ° ΠΊ ΠΏΠΎΡΡΠΎΠ²ΠΎΠΌΡ ΡΡΠΈΠΊΡ. ΠΠ°Π»Π΅Π΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° ΠΎΠΏΡΡΡ ΠΏΠ΅ΡΠ΅Ρ ΠΎΠ΄ΠΈΡ Π² ΡΠ΅ΠΆΠΈΠΌ ΠΎΠΆΠΈΠ΄Π°Π½ΠΈΡ ΠΎΡΠ²Π΅ΡΠ° ΡΠ΅ΡΠ²Π΅ΡΠ° ΠΈ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΡΡ ΠΏΡΠΈΠ΅ΠΌ ΠΈ Π°Π½Π°Π»ΠΈΠ· ΠΏΠΎΠ»ΡΡΠ΅Π½Π½ΠΎΠΉ ΠΎΡ Π½Π΅Π³ΠΎ ΡΡΡΠΎΠΊΠΈ. ΠΡΠ»ΠΈ ΡΡΡΠΎΠΊΠ° ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ Π½Π°ΡΠ°Π»ΡΠ½ΡΡ ΠΏΠΎΠ΄ΡΡΡΠΎΠΊΡ +ΠΠ, Π·Π½Π°ΡΠΈΡ ΠΏΠ°ΡΠΎΠ»Ρ, Π²Π²Π΅Π΄Π΅Π½Π½ΡΠΉ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΌ ΠΊΠΎΡΡΠ΅ΠΊΡΠ΅Π½, ΠΈ ΡΠ΅ΡΠ²Π΅Ρ ΠΏΠ΅ΡΠ΅ΡΠ΅Π» Π² ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΎΠ½Π½ΡΡ ΡΠ°Π·Ρ. ΠΡΠ»ΠΈ ΡΡΡΠΎΠΊΠ°-ΠΎΡΠ²Π΅Ρ ΡΠ΅ΡΠ²Π΅ΡΠ° ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΠΏΠΎΠ΄ΡΡΡΠΎΠΊΡERR, ΡΠΎ ΡΠ΅ΡΠ²Π΅ΡΡ ΠΎΡΠΏΡΠ°Π²Π»ΡΠ΅ΡΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Π° QUIT ΠΈ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΡΡ Π²ΡΡ ΠΎΠ΄ ΠΈΠ· ΠΏΡΠΎΡΠ΅Π΄ΡΡΡ.
ΠΡΠ»ΠΈ Π°ΡΡΠ΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡ ΡΡΠΏΠ΅ΡΠ½ΠΎ Π·Π°Π²Π΅ΡΡΠ΅Π½Π°, ΡΠΎ Π°Π»Π³ΠΎΡΠΈΡΠΌ ΡΠ°Π±ΠΎΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΠΏΠ΅ΡΠ΅Ρ ΠΎΠ΄ Π² ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΎΠ½Π½ΡΡ ΡΠ°Π·Ρ. ΠΠ° ΡΡΠΎΠΉ ΡΠ°Π·Π΅ ΡΡΠ½ΠΊΡΠΈΠΎΠ½ΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΡΠ΅ΡΠ²Π΅ΡΡ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎ ΠΎΡΡΡΠ»Π°ΡΡΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ STAT — Π΄Π»Ρ Π²ΡΠ²ΠΎΠ΄Π° ΡΡΠ°ΡΠΈΡΡΠΈΠΊΠΈ ΠΏΠΎΡΡΠΎΠ²ΠΎΠ³ΠΎ ΡΡΠΈΠΊΠ° ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Π° QUIT — Π΄Π»Ρ Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΡ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ Ρ ΡΠ΅ΡΠ²Π΅ΡΠΎΠΌ.
2.2 APOP Π°ΡΡΠ΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡ
ΠΡΠ»ΠΈ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΌ Π±ΡΠ» Π²ΡΠ±ΡΠ°Π½ ΡΠΈΠΏ Π°ΡΡΠ΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ Π±Π΅ΡΠΊΠ»ΡΡΠ΅Π²ΠΎΠΉ Ρ ΡΡ-ΡΡΠ½ΠΊΡΠΈΠΈ MD5, ΡΠΎ Π°Π»Π³ΠΎΡΠΈΡΠΌ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΠΏΠ΅ΡΠ΅Ρ ΠΎΠ΄ΠΈΡ ΠΊ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ Π΄Π°Π½Π½ΠΎΠΉ ΠΏΡΠΎΡΠ΅Π΄ΡΡΡ. Π Π΄Π°Π½Π½ΠΎΠΌ Π²ΠΈΠ΄Π΅ Π°ΡΡΠ΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΡΡΡΠΎΠΊΠ°, ΠΊΠΎΡΠΎΡΠ°Ρ Π±ΡΠ»Π° ΠΏΠΎΠ»ΡΡΠ΅Π½Π° ΠΈΠ· ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΉ ΡΠ°ΡΡΠΈ Π°Π»Π³ΠΎΡΠΈΡΠΌΠ°. ΠΠ° Π²ΡΠΎΡΠΎΠΌ ΡΠ°Π³Π΅ Π°Π»Π³ΠΎΡΠΈΡΠΌΠ° ΡΡΠ½ΠΊΡΠΈΠΈ apop ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΡΡ ΡΠΊΠ»Π΅ΠΈΠ²Π°Π½ΠΈΠ΅ ΠΏΠΎΠ»ΡΡΠ΅Π½Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠΈ ΠΌΠ΅ΡΠΊΠΈ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ ΡΠ΅ΡΠ²Π΅ΡΠ° Ρ ΠΏΠ°ΡΠΎΠ»Π΅ΠΌ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ. ΠΠΎΡΠ»Π΅ ΡΡΠΎΠ³ΠΎ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΡΡ Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΠ΅ MD5 Ρ ΡΡΠ° ΠΎΡ ΡΡΠΎΠΉ ΡΡΡΠΎΠΊΠΈ. ΠΠΎΡΠ»Π΅ ΡΡΠΎΠ³ΠΎ ΡΠΎΡΠΌΠΈΡΡΠ΅ΡΡΡ ΡΡΡΠΎΠΊΠ° Π΄Π»Ρ ΠΊΠΎΠΌΠ°Π½Π΄Ρ APOP. ΠΡΠ° ΡΡΡΠΎΠΊΠ° ΠΈΠΌΠ΅Π΅Ρ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ Π²ΠΈΠ΄: «APOP ΠΈΠΌΡ_ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Ρ ΡΡ-ΡΡΠ½ΠΊΡΠΈΡ». ΠΠΎΡΠ»Π΅ ΡΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ ΡΡΠ° ΡΡΡΠΎΠΊΠ° ΡΡΠΎΡΠΌΠΈΡΠΎΠ²Π°Π½Π°, ΠΎΠ½Π° ΠΎΡΠΏΡΠ°Π²Π»ΡΠ΅ΡΡΡ ΡΠ΅ΡΠ²Π΅ΡΡ. ΠΠΎΡΠ»Π΅ ΡΡΠΎΠ³ΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° ΠΏΠ΅ΡΠ΅Ρ ΠΎΠ΄ΠΈΡ Π² ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅ ΠΎΠΆΠΈΠ΄Π°Π½ΠΈΡ ΠΎΡΠ²Π΅ΡΠ½Π° ΠΎΡ ΡΠ΅ΡΠ²Π΅ΡΠ°. ΠΠΎΡΠ»Π΅ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ ΡΡΡΠΎΠΊΠΈ Ρ ΠΎΡΠ²Π΅ΡΠΎΠΌ ΡΠ΅ΡΠ²Π΅ΡΠ° ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΡΡ Π΅Π΅ ΡΠ°Π·Π±ΠΎΡ. ΠΡΠ»ΠΈ ΡΡΡΠΎΠΊΠ° ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ Π½Π°ΡΠ°Π»ΡΠ½ΡΡ ΠΏΠΎΠ΄ΡΡΡΠΎΠΊΡERR, ΡΠΎ Π°ΡΡΠ΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ Π΅ ΠΏΡΠΎΠΉΠ΄Π΅Π½Π° ΠΈ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΡΡ ΠΎΡΠΏΡΠ°Π²ΠΊΠ° ΡΠ΅ΡΠ²Π΅ΡΡ ΡΡΡΠΎΠΊΠΈ Ρ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ QUIT ΠΈ Π²ΡΡ ΠΎΠ΄ ΠΈΠ· ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ. ΠΡΠ»ΠΈ ΡΡΡΠΎΠΊΠ° ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ Π½Π°ΡΠ°Π»ΡΠ½ΡΡ ΠΏΠΎΠ΄ΡΡΡΠΎΠΊΡ +OK, ΡΠΎ Π·Π½Π°ΡΠΈΡ Π°ΡΡΠ΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡ ΠΏΡΠΎΠΉΠ΄Π΅Π½Π° ΡΡΠΏΠ΅ΡΠ½ΠΎ ΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° ΠΏΠ΅ΡΠ΅Ρ ΠΎΠ΄ΠΈΡ Π² ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΎΠ½Π½ΡΡ ΡΠ°Π·Ρ. Π ΡΡΠΎΠΉ ΡΠ°Π·Π΅ ΡΠ΅ΡΠ²Π΅ΡΡ ΠΎΡΡΡΠ»Π°Π΅ΡΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Π° STAT ΠΈ ΠΏΠΎΡΠ»Π΅ ΡΡΠΎΠ³ΠΎ ΠΊΠΎΠΌΠ°Π½Π΄Π° QUIT. ΠΠΎΡΠ»Π΅ ΡΡΠΎΠ³ΠΎ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΡΡ ΡΠ°Π·ΡΡΠ² ΡΠ²ΡΠ·ΠΈ Ρ ΡΠ΅ΡΠ²Π΅ΡΠΎΠΌ ΠΈ Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ.
2.3 AUTH Π°ΡΡΠ΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡ (CRAM-MD5)
ΠΡΠ·ΠΎΠ² Π΄Π°Π½Π½ΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΎΡΡΡΠ΅ΡΡΠ²Π»ΡΠ΅ΡΡΡ Π² ΡΠ»ΡΡΠ°Π΅, Π΅ΡΠ»ΠΈ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΌ Π±ΡΠ» Π²ΡΠ±ΡΠ°Π½ Π²ΠΈΠ΄ Π°ΡΡΠ΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΠΊΠ»ΡΡΠ΅Π²ΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ MD5. ΠΠ»Π³ΠΎΡΠΈΡΠΌ ΡΡΠ½ΠΊΡΠΈΠΎΠ½ΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π΄Π°Π½Π½ΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΏΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ ΠΏΠΎΠ»Π½ΠΎΡΡΡΡ ΡΠΎΠ²ΠΏΠ°Π΄Π°Π΅Ρ Ρ Π°Π»Π³ΠΎΡΠΈΡΠΌΠΎΠΌ, ΠΎΠΏΠΈΡΠ½ΡΠΌ Π² ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠ΅ΠΌ ΠΏΡΠ½ΠΊΡΠ΅., Π·Π° ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ΠΌ ΡΠΎΠ³ΠΎ, ΡΡΠΎ:
— ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΡΡ Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΠ΅ Ρ ΡΡ-ΡΡΠ½ΠΊΡΠΈΠΈ MD5 ΠΎΡ ΡΠ½ΠΈΠΊΠ°Π»ΡΠ½ΠΎΠΉ ΠΌΠ΅ΡΠΊΠΈ, ΠΏΠΎΠ»ΡΡΠ΅Π½Π½ΠΎΠΉ ΠΎΡ ΡΠ΅ΡΠ²Π΅ΡΠ° ΠΌΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΠΏΠ°ΡΠΎΠ»Ρ, Π²Π²Π΅Π΄Π΅Π½Π½ΠΎΠ³ΠΎ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΌ.
— Π‘Π΅ΡΠ²Π΅ΡΡ ΠΎΡΠΏΡΠ°Π²Π»ΡΠ΅ΡΡΡ ΡΡΡΠΎΠΊΠ° Π²ΠΈΠ΄Π° «AUTH ΠΈΠΌΡ_ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Ρ ΡΡ-ΡΡΠ½ΠΊΡΠΈΡ»
3. Π ΡΠΊΠΎΠ²ΠΎΠ΄ΡΡΠ²ΠΎ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ
Π Π°Π·ΡΠ°Π±ΠΎΡΠ°Π½Π½Π°Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° ΠΈΠΌΠ΅Π΅Ρ Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΉ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ Π ΠΈΡ. 1 ΠΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΠΠΎΡΠ»Π΅ Π·Π°ΠΏΡΡΠΊΠ° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡΠΊΠ°Π·Π°ΡΡ Π°Π΄ΡΠ΅Ρ ΡΠ΅ΡΠ²Π΅ΡΠ° ΠΊ ΠΊΠΎΡΠΎΡΠΎΠΌΡ ΠΎΠ½ ΠΎΠ±ΡΠ°ΡΠ°Π΅ΡΡΡ, Π½ΠΎΠΌΠ΅Ρ ΠΏΠΎΡΡΠ°, ΠΈΠΌΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ, Π° ΡΠ°ΠΊ ΠΆΠ΅ ΠΏΠ°ΡΠΎΠ»Ρ, ΠΏΠΎΡΠ»Π΅ ΡΠ΅Π³ΠΎ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π²ΡΠ±ΡΠ°ΡΡ Π²ΠΈΠ΄ Π°ΡΡΠ΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ:
— ΠΏΡΠΎΡΡΠ°Ρ
— APOP
— AUTH
ΠΠΎΡΠ»Π΅ ΡΠ΅Π³ΠΎ Π½Π°ΠΆΠ°ΡΡ ΠΊΠ»Π°Π²ΠΈΡΡ «ΠΠΎΠ΄ΠΊΠ»ΡΡΠΈΡΡΡΡ». ΠΡΠΈ Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΠΈ ΡΠ°Π±ΠΎΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΠΈΠ»ΠΈ Π²ΡΠ±ΠΎΡΠ΅ Π΄ΡΡΠ³ΠΎΠΉ Π°ΡΡΠ΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ Π½Π°ΠΆΠ°ΡΡ ΠΊΠ»Π°Π²ΠΈΡΡ «ΠΡΠΊΠ»ΡΡΠΈΡΡΡΡ».
ΠΠ»Ρ Π²ΡΡ ΠΎΠ΄Π° ΠΈΠ· ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ Π½Π°ΠΆΠ°ΡΡ ΠΊΡΠ΅ΡΡΠΈΠΊ ΠΈΠ»ΠΈ ΠΊΠ»Π°Π²ΠΈΡΡ «ΠΡΡ ΠΎΠ΄».
ΠΠ°ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅
Π ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ΅ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΡΠ°Π±ΠΎΡΡ Π±ΡΠ»Π° ΡΠ°Π·ΡΠ°Π±ΠΎΡΠ°Π½Π° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ°, ΡΠ΅Π°Π»ΠΈΠ·ΡΡΡΠ°Ρ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΏΠΎΡΡΠΎΠ²ΠΎΠ³ΠΎ ΠΊΠ»ΠΈΠ΅Π½ΡΠ° ΠΏΡΠΎΡΠΎΠΊΠΎΠ»Π° POP3. ΠΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° ΡΠ΅Π°Π»ΠΈΠ·ΡΠ΅Ρ ΡΡΠ½ΠΊΡΠΈΠΈ Π°Π²ΡΠΎΡΠΈΠ·Π°ΡΠΈΠΈ, Π·Π°ΠΏΡΠΎΡΠ° ΡΡΠ°ΡΠΈΡΡΠΈΠΊΠΈ ΠΈ Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΡ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ. ΠΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π° Π½Π° ΡΠ·ΡΠΊΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π‘ΠΈ Π΄Π»Ρ ΠΠ‘ WINDOWS ΠΈ ΠΈΠΌΠ΅Π΅Ρ Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΉ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ.
Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, Π²ΡΠ΅ ΡΡΠ΅Π±ΠΎΠ²Π°Π½ΠΈΡ Π·Π°Π΄Π°Π½ΠΈΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½Ρ Π² ΠΏΠΎΠ»Π½ΠΎΠΌ ΠΎΠ±ΡΠ΅ΠΌΠ΅.
Π‘ΠΏΠΈΡΠΎΠΊ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½Π½ΡΡ ΠΈΡΡΠΎΡΠ½ΠΈΠΊΠΎΠ²
www.rsdn.ru
www.codenet.ru
www.firststeps.
ΠΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π. ΠΠ»Π³ΠΎΡΠΈΡΠΌ ΡΡΠ½ΠΊΡΠΈΠΎΠ½ΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ
ΠΡΠΎΡΡΠ°Ρ Π°ΡΡΠ΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡ ΠΡΡΠ΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡ Ρ Π±Π΅ΡΠΊΠ»ΡΡΠ΅Π²ΠΎΠΉ Ρ ΡΡ-ΡΡΠ½ΠΊΡΠΈΠ΅ΠΉ. ΠΠΎΠΌΠ°Π½Π΄Π° APOP
ΠΡΡΠ΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡ Ρ ΠΊΠ»ΡΡΠ΅Π²ΠΎΠΉ Ρ ΡΡ-ΡΡΠ½ΠΊΡΠΈΠ΅ΠΉ CRAM-MD5. AUTH.
ΠΠ±ΡΠΈΠΉ Π°Π»Π³ΠΎΡΠΈΡΠΌ