ΠΡΠ±ΠΎΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡ Π·Π½Π°Π΅Ρ, ΡΡΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠ΅ΠΌ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½Π΅Π΅, ΡΠ΅ΠΌ Π»ΡΡΡΠ΅ ΡΠ΄Π°Π»ΠΎΡΡ Β«ΡΠ°ΡΡΡΠ°Π²ΠΈΡΡ ΡΠΊΠΎΠ±ΠΊΠΈΒ», Π²ΡΠ²Π΅Π΄Ρ Β«ΠΎΠ±ΡΠΈΠΉ ΠΌΠ½ΠΎΠΆΠΈΡΠ΅Π»Ρ Π·Π° ΡΠΊΠΎΠ±ΠΊΠΈΒ». ΠΡΡΠ³ΠΈΠΌΠΈ ΡΠ»ΠΎΠ²Π°ΠΌΠΈ, Ρ ΠΎΡΠΎΡΠΈΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡΡ Π΄ΠΎΠ»ΠΆΠ½Ρ Π±ΡΡΡ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ Β«Π»Π΅Π½ΠΈΠ²ΡΒ», ΡΡΠΎΠ±Ρ Π½Π°ΠΉΡΠΈ ΠΎΠΏΡΠΈΠΌΠ°Π»ΡΠ½ΡΡ Π΄Π΅ΠΊΠΎΠΌΠΏΠΎΠ·ΠΈΡΠΈΡ ΡΠ΅ΡΠ°Π΅ΠΌΠΎΠΉ Π·Π°Π΄Π°ΡΠΈ. ΠΡΠΈ ΠΏΡΠΎΠ΅ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΠΈ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ webβΡΠ°ΠΉΡΠ° Zope ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΡΠ°Π·ΠΌΠ΅ΡΡΠΈΡΡ Β«ΠΌΠ½ΠΎΠΆΠΈΡΠ΅Π»ΠΈΒ» ΠΈ Β«ΡΠΊΠΎΠ±ΠΊΠΈΒ» ΡΠ°ΠΊ, ΡΡΠΎΠ±Ρ Π΄ΠΎΡΡΠΈΠ³Π½ΡΡΡ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΠΎΠ³ΠΎ ΠΏΠΎΠ²ΡΠΎΡΠ½ΠΎΠ³ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΠΊΠΎΠ΄Π° (ΠΊΠ°ΠΊ ΡΠ°Π·ΠΌΠ΅ΡΠΊΠΈ, ΡΠ°ΠΊ ΠΈ ΡΡΠ΅Π½Π°ΡΠΈΠ΅Π²). ΠΠΎΠΌΠΎΠ³Π°Π΅Ρ ΡΡΠΎΠΌΡ ΡΠ½ΠΈΠΊΠ°Π»ΡΠ½ΡΠΉ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ ΠΊ ΠΏΠΎΡΡΡΠΎΠ΅Π½ΠΈΡ Π²Π·Π°ΠΈΠΌΠΎΠΎΡΠ½ΠΎΡΠ΅Π½ΠΈΠΉ ΠΌΠ΅ΠΆΠ΄Ρ ΠΎΠ±ΡΠ΅ΠΊΡΠ°ΠΌΠΈ: Π·Π°ΠΈΠΌΡΡΠ²ΠΎΠ²Π°Π½ΠΈΠ΅ (acquisition).
ΠΡΡΡΡ Π½Π΅ΠΊΠΎΡΠΎΡΡΠΉ ΠΎΠ±ΡΠ΅ΠΊΡ (Π΄ΠΎΠΊΡΠΌΠ΅Π½Ρ, ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅, ΡΡΠ΅Π½Π°ΡΠΈΠΉ, ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ ΠΊ Π±Π°Π·Π΅ Π΄Π°Π½Π½ΡΡ ΠΈ Ρ.ΠΏ.) ΡΠ°ΡΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ Π² ΠΏΠ°ΠΏΠΊΠ΅ Example. Π’Π΅ΠΏΠ΅ΡΡ ΠΎΠ±ΡΠ΅ΠΊΡΡ ΡΡΠΎΠΉ ΠΏΠ°ΠΏΠΊΠΈ Π΄ΠΎΡΡΡΠΏΠ½Ρ ΠΏΠΎ ΠΈΠΌΠ΅Π½ΠΈ ΠΈΠ· Π»ΡΠ±ΡΡ Π½ΠΈΠΆΠ΅Π»Π΅ΠΆΠ°ΡΠΈΡ ΠΏΠ°ΠΏΠΎΠΊ. ΠΠ°ΠΆΠ΅ ΠΏΠΎΠ»ΠΈΡΠΈΠΊΠΈ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΠΈ Π·Π°ΠΈΠΌΡΡΠ²ΡΡΡΡΡ Π±ΠΎΠ»Π΅Π΅ Π³Π»ΡΠ±ΠΎΠΊΠΎ Π²Π»ΠΎΠΆΠ΅Π½Π½ΡΠΌΠΈ ΠΏΠ°ΠΏΠΊΠ°ΠΌΠΈ ΠΎΡ ΠΏΠ°ΠΏΠΎΠΊ, ΠΊΠΎΡΠΎΡΡΠ΅ Π±Π»ΠΈΠΆΠ΅ ΠΊ ΠΊΠΎΡΠ½Ρ. ΠΠ°ΠΈΠΌΡΡΠ²ΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΎΡΠ΅Π½Ρ Π²Π°ΠΆΠ½ΠΎΠΉ ΠΊΠΎΠ½ΡΠ΅ΠΏΡΠΈΠ΅ΠΉ Zope, Π±Π΅Π· ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΡ ΠΊΠΎΡΠΎΡΠΎΠΉ Zope ΡΠ»ΠΎΠΆΠ½ΠΎ Π³ΡΠ°ΠΌΠΎΡΠ½ΠΎ ΠΏΡΠΈΠΌΠ΅Π½ΡΡΡ, ΠΈ Π½Π°ΠΎΠ±ΠΎΡΠΎΡ, Π΅Π΅ ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΡΠΊΠΎΠ½ΠΎΠΌΠΈΡΡ ΡΠΈΠ»Ρ ΠΈ Π²ΡΠ΅ΠΌΡ, ΠΏΠΎΠ²ΡΠΎΡΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ ΠΎΠ±ΡΠ΅ΠΊΡΡ Π² ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ΅.
Π‘Π°ΠΌΠΎΠ΅ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½ΠΎΠ΅, ΡΡΠΎ Π·Π°ΠΈΠΌΡΡΠ²ΠΎΠ²Π°ΡΡ ΠΎΠ±ΡΠ΅ΠΊΡΡ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ°ΠΊΠΆΠ΅ ΠΈΠ· ΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΡΠ½ΡΡ ΠΏΠ°ΠΏΠΎΠΊ. ΠΡΡΡΡ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΡΠ΄ΠΎΠΌ Ρ ΠΏΠ°ΠΏΠΊΠΎΠΉ Example Π½Π°Ρ ΠΎΠ΄ΠΈΡΡΡ ΠΏΠ°ΠΏΠΊΠ° Zigzag, Π² ΠΊΠΎΡΠΎΡΠΎΠΉ Π»Π΅ΠΆΠΈΡ Π½ΡΠΆΠ½ΡΠΉ ΠΎΠ±ΡΠ΅ΠΊΡ (Π΅Π³ΠΎ Π½Π°ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½ΠΈΠ΅ note). ΠΡΠΈ ΡΡΠΎΠΌ Π² ΠΏΠ°ΠΏΠΊΠ΅ Example ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡΠ° ΠΈΠ½ΡΠ΅ΡΠ΅ΡΡΠ΅Ρ ΠΎΠ±ΡΠ΅ΠΊΡ index_html, Π²Π½ΡΡΡΠΈ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ Π²ΡΠ·ΡΠ²Π°Π΅ΡΡΡ note. ΠΠ±ΡΡΠ½ΡΠΉ ΠΏΡΡΡ ΠΊ ΠΎΠ±ΡΠ΅ΠΊΡΡ index_html Π±ΡΠ΄Π΅Ρ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡΡ ΠΏΠΎ URI Π²ΡΠΎΠ΄Π΅ http://zopeserver/Example/. Π Π²ΠΎΡ Π΅ΡΠ»ΠΈ Π½ΡΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ note ΠΈΠ· Zigzag (ΠΈ Π² ΠΏΠ°ΠΏΠΊΠ΅ Example Π΅Π³ΠΎ Π½Π΅Ρ), ΡΠΎ URI Π±ΡΠ΄Π΅Ρ: http://zopeserver/Zigzag/Example/. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, ΡΠΊΠ°Π·Π°Π½ΠΈΠ΅ ΠΏΡΡΠΈ Π² Zope ΠΎΡΠ»ΠΈΡΠ°Π΅ΡΡΡ ΠΎΡ ΡΡΠ°Π΄ΠΈΡΠΈΠΎΠ½Π½ΠΎΠ³ΠΎ ΠΏΡΡΠΈ, ΡΠΊΠ°ΠΆΠ΅ΠΌ, Π² Unix: Π² ΠΏΡΡΠΈ ΠΌΠΎΠ³ΡΡ ΠΏΡΠΈΡΡΡΡΡΠ²ΠΎΠ²Π°ΡΡ Β«Π·ΠΈΠ³Π·Π°Π³ΠΈΒ» ΡΠ΅ΡΠ΅Π· ΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΡΠ½ΡΠ΅ ΠΏΠ°ΠΏΠΊΠΈ, Π΄Π°ΡΡΠΈΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ Π·Π°ΠΈΠΌΡΡΠ²ΠΎΠ²Π°ΡΡ ΠΎΠ±ΡΠ΅ΠΊΡΡ ΠΈΠ· ΡΡΠΈΡ ΠΏΠ°ΠΏΠΎΠΊ. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°ΡΡ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΡΡ ΡΡΡΠ°Π½ΠΈΡΡ, ΠΊΠΎΠΌΠ±ΠΈΠ½ΠΈΡΡΡ ΠΎΠ΄ΠΈΠ½ ΠΈΠ»ΠΈ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ Π½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΡΡ Π°ΡΠΏΠ΅ΠΊΡΠΎΠ².
ΠΠ°ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅
Π ΡΡΠΎΠΉ Π»Π΅ΠΊΡΠΈΠΈ Π±ΡΠ»ΠΈ ΡΠ°ΡΡΠΌΠΎΡΡΠ΅Π½Ρ ΡΠ°Π·Π»ΠΈΡΠ½ΡΠ΅ ΠΏΠΎΠ΄Ρ ΠΎΠ΄Ρ ΠΊ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ Python Π² webβΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡΡ . Π‘Π°ΠΌΡΠΉ ΠΏΡΠΎΡΡΠΎΠΉ ΡΠΏΠΎΡΠΎΠ± ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ webβΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ β ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ CGIβΡΡΠ΅Π½Π°ΡΠΈΠ΅Π². ΠΠΎΠ»Π΅Π΅ ΡΠ»ΠΎΠΆΠ½ΡΠΌ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΡΡ ΠΌΠΎΠ΄ΡΠ»Π΅ΠΉ Π΄Π»Ρ webβΡΠ΅ΡΠ²Π΅ΡΠ°, ΡΠ°ΠΊΠΈΡ ΠΊΠ°ΠΊ mod_python. ΠΠ°ΠΊΠΎΠ½Π΅Ρ, ΡΡΡΠ΅ΡΡΠ²ΡΡΡ ΡΠ΅Ρ Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ Π²ΡΠΎΠ΄Π΅ Zope, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΡΡ ΡΠΏΠ΅ΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΡΠ΅ ΡΠ΅ΡΠ²ΠΈΡΡ, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡΠΈΠ΅ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ webβΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ.
ΠΠ΅ΠΊΡΠΈΡ #9: Π‘Π΅ΡΠ΅Π²ΡΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π½Π° Python.
Π ΡΡΠΎΠΉ Π»Π΅ΠΊΡΠΈΠΈ ΡΠ°ΡΡΠΌΠ°ΡΡΠΈΠ²Π°Π΅ΡΡΡ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ Π½Π° Python ΠΏΡΠΎΡΡΠ΅ΠΉΡΠ΅Π³ΠΎ ΠΊΠ»ΠΈΠ΅Π½ΡβΡΠ΅ΡΠ²Π΅ΡΠ½ΠΎΠ³ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, Π΄Π°Π΅ΡΡΡ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΠΎ ΡΠΈΠΏΠΈΡΠ½ΠΎΠΌ Π΄Π»Ρ ΡΠ΅ΡΠΈ Internet ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ. Π‘ΡΠ°Π½Π΄Π°ΡΡΠ½Π°Ρ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° Python ΠΈΠΌΠ΅Π΅Ρ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΌΠΎΠ΄ΡΠ»Π΅ΠΉ Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ Ρ ΡΠ°Π·Π»ΠΈΡΠ½ΡΠΌΠΈ ΠΏΡΠΎΡΠΎΠΊΠΎΠ»Π°ΠΌΠΈ. ΠΡΠΈΠΌΠΈ ΠΌΠΎΠ΄ΡΠ»ΡΠΌΠΈ ΠΎΡ Π²Π°ΡΡΠ²Π°ΡΡΡΡ ΠΊΠ°ΠΊ Π½ΠΈΠ·ΠΊΠΎΡΡΠΎΠ²Π½Π΅Π²ΡΠ΅ ΠΏΡΠΎΡΠΎΠΊΠΎΠ»Ρ (TCP/IP, UDP/IP), ΡΠ°ΠΊ ΠΈ Π²ΡΡΠΎΠΊΠΎΡΡΠΎΠ²Π½Π΅Π²ΡΠ΅ (HTTP, FTP, SMTP, POP3, IMAP, NNTP, β¦). ΠΠ΄Π΅ΡΡ Π±ΡΠ΄Π΅Ρ ΡΠ°ΡΡΠΌΠΎΡΡΠ΅Π½Π° ΡΠ°Π±ΠΎΡΠ° Ρ ΡΠΎΠΊΠ΅ΡΠ°ΠΌΠΈ (ΠΌΠΎΠ΄ΡΠ»Ρ socket) ΠΈ ΡΡΠΈ ΠΌΠΎΠ΄ΡΠ»Ρ Π²ΡΡΠΎΠΊΠΎΡΡΠΎΠ²Π½Π΅Π²ΡΡ ΠΏΡΠΎΡΠΎΠΊΠΎΠ»ΠΎΠ² (urllib2, poplib, smtplib). ΠΡΠΈ ΡΡΠΎΠΌ ΠΏΡΠ΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π΅ΡΡΡ, ΡΡΠΎ ΠΈΠΌΠ΅Π΅ΡΡΡ ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅ ΠΏΡΠΈΠ½ΡΠΈΠΏΠΎΠ² ΡΠ°Π±ΠΎΡΡ IPβΡΠ΅ΡΠΈ ΠΈ Π½Π΅ΠΊΠΎΡΠΎΡΡΡ Π΅Π΅ ΡΠ΅ΡΠ²ΠΈΡΠΎΠ², Π° ΡΠ°ΠΊΠΆΠ΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΠΎ ΡΠΈΡΡΠ΅ΠΌΠ΅ WWW.
Π Π°Π±ΠΎΡΠ° Ρ ΡΠΎΠΊΠ΅ΡΠ°ΠΌΠΈ
ΠΡΠΈΠΌΠ΅Π½ΡΠ΅ΠΌΠ°Ρ Π² IPβΡΠ΅ΡΡΡ Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠ° ΠΊΠ»ΠΈΠ΅Π½ΡβΡΠ΅ΡΠ²Π΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ IPβΠΏΠ°ΠΊΠ΅ΡΡ Π΄Π»Ρ ΠΊΠΎΠΌΠΌΡΠ½ΠΈΠΊΠ°ΡΠΈΠΈ ΠΌΠ΅ΠΆΠ΄Ρ ΠΊΠ»ΠΈΠ΅Π½ΡΠΎΠΌ ΠΈ ΡΠ΅ΡΠ²Π΅ΡΠΎΠΌ. ΠΠ»ΠΈΠ΅Π½Ρ ΠΎΡΠΏΡΠ°Π²Π»ΡΠ΅Ρ Π·Π°ΠΏΡΠΎΡ ΡΠ΅ΡΠ²Π΅ΡΡ, Π½Π° ΠΊΠΎΡΠΎΡΡΠΉ ΡΠΎΡ ΠΎΡΠ²Π΅ΡΠ°Π΅Ρ. Π ΡΠ»ΡΡΠ°Π΅ Ρ TCP/IP ΠΌΠ΅ΠΆΠ΄Ρ ΠΊΠ»ΠΈΠ΅Π½ΡΠΎΠΌ ΠΈ ΡΠ΅ΡΠ²Π΅ΡΠΎΠΌ ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅ΡΡΡ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠ΅ (ΠΎΠ±ΡΡΠ½ΠΎ Ρ Π΄Π²ΡΡΡΠΎΡΠΎΠ½Π½Π΅ΠΉ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΠ΅ΠΉ Π΄Π°Π½Π½ΡΡ ), Π° Π² ΡΠ»ΡΡΠ°Π΅ Ρ UDP/IP β ΠΊΠ»ΠΈΠ΅Π½Ρ ΠΈ ΡΠ΅ΡΠ²Π΅Ρ ΠΎΠ±ΠΌΠ΅Π½ΠΈΠ²Π°ΡΡΡΡ ΠΏΠ°ΠΊΠ΅ΡΠ°ΠΌΠΈ (Π΄Π΅ΠΉΡΠ°Π³ΡΠ°ΠΌΠΌΠ°ΠΌΠΌΠΈ) Ρ Π½Π΅Π³Π°ΡΠ°Π½ΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠΉ Π΄ΠΎΡΡΠ°Π²ΠΊΠΎΠΉ.
ΠΠ°ΠΆΠ΄ΡΠΉ ΡΠ΅ΡΠ΅Π²ΠΎΠΉ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ IPβΡΠ΅ΡΠΈ ΠΈΠΌΠ΅Π΅Ρ ΡΠ½ΠΈΠΊΠ°Π»ΡΠ½ΡΠΉ Π² ΡΡΠΎΠΉ ΡΠ΅ΡΠΈ Π°Π΄ΡΠ΅Ρ (IPβΠ°Π΄ΡΠ΅Ρ). Π£ΠΏΡΠΎΡΠ΅Π½Π½ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΡΡΠΈΡΠ°ΡΡ, ΡΡΠΎ ΠΊΠ°ΠΆΠ΄ΡΠΉ ΠΊΠΎΠΌΠΏΡΡΡΠ΅Ρ Π² ΡΠ΅ΡΠΈ ΠΠ½ΡΠ΅ΡΠ½Π΅Ρ ΠΈΠΌΠ΅Π΅Ρ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΠΉ IPβΠ°Π΄ΡΠ΅Ρ. ΠΡΠΈ ΡΡΠΎΠΌ Π² ΡΠ°ΠΌΠΊΠ°Ρ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΡΠ΅ΡΠ΅Π²ΠΎΠ³ΠΎ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ° ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠ΅ΡΠ΅Π²ΡΡ ΠΏΠΎΡΡΠΎΠ². ΠΠ»Ρ ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½ΠΈΡ ΡΠ΅ΡΠ΅Π²ΠΎΠ³ΠΎ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΊΠ»ΠΈΠ΅Π½ΡΠ° Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π²ΡΠ±ΡΠ°ΡΡ ΡΠ²ΠΎΠ±ΠΎΠ΄Π½ΡΠΉ ΠΏΠΎΡΡ ΠΈ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠ΅ Ρ ΡΠ΅ΡΠ²Π΅ΡΠ½ΡΠΌ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌ, ΠΊΠΎΡΠΎΡΠΎΠ΅ ΡΠ»ΡΡΠ°Π΅Ρ (listen) ΠΏΠΎΡΡ Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΠΌ Π½ΠΎΠΌΠ΅ΡΠΎΠΌ Π½Π° ΡΠ΄Π°Π»Π΅Π½Π½ΠΎΠΌ ΡΠ΅ΡΠ΅Π²ΠΎΠΌ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ΅. ΠΠ°ΡΠ° IPβΠ°Π΄ΡΠ΅Ρ ΠΈ ΠΏΠΎΡΡ Ρ Π°ΡΠ°ΠΊΡΠ΅ΡΠΈΠ·ΡΡΡ ΡΠΎΠΊΠ΅Ρ (Π³Π½Π΅Π·Π΄ΠΎ) β Π½Π°ΡΠ°Π»ΡΠ½ΡΡ (ΠΊΠΎΠ½Π΅ΡΠ½ΡΡ) ΡΠΎΡΠΊΡ ΡΠ΅ΡΠ΅Π²ΠΎΠΉ ΠΊΠΎΠΌΠΌΡΠ½ΠΈΠΊΠ°ΡΠΈΠΈ. ΠΠ»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ TCP/IP Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ Π΄Π²Π° ΡΠΎΠΊΠ΅ΡΠ°: ΠΎΠ΄ΠΈΠ½ Π½Π° Π»ΠΎΠΊΠ°Π»ΡΠ½ΠΎΠΉ ΠΌΠ°ΡΠΈΠ½Π΅, Π° Π΄ΡΡΠ³ΠΎΠΉ β Π½Π° ΡΠ΄Π°Π»Π΅Π½Π½ΠΎΠΉ. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, ΠΊΠ°ΠΆΠ΄ΠΎΠ΅ ΡΠ΅ΡΠ΅Π²ΠΎΠ΅ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠ΅ ΠΈΠΌΠ΅Π΅Ρ IPβΠ°Π΄ΡΠ΅Ρ ΠΈ ΠΏΠΎΡΡ Π½Π° Π»ΠΎΠΊΠ°Π»ΡΠ½ΠΎΠΉ ΠΌΠ°ΡΠΈΠ½Π΅, Π° ΡΠ°ΠΊΠΆΠ΅ IPβΠ°Π΄ΡΠ΅Ρ ΠΈ ΠΏΠΎΡΡ Π½Π° ΡΠ΄Π°Π»Π΅Π½Π½ΠΎΠΉ ΠΌΠ°ΡΠΈΠ½Π΅.
ΠΠΎΠ΄ΡΠ»Ρ socket ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°Π΅Ρ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΡΠ°Π±ΠΎΡΠ°ΡΡ Ρ ΡΠΎΠΊΠ΅ΡΠ°ΠΌΠΈ ΠΈΠ· Python. Π‘ΠΎΠΊΠ΅ΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡ ΡΡΠ°Π½ΡΠΏΠΎΡΡΠ½ΡΠΉ ΡΡΠΎΠ²Π΅Π½Ρ ΡΠΎΠ³Π»Π°ΡΠ½ΠΎ ΡΠ΅ΠΌΠΈΡΡΠΎΠ²Π½Π΅Π²ΠΎΠΉ ΠΌΠΎΠ΄Π΅Π»ΠΈ OSI (Open Systems Interconnection, Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΠ΅ ΠΎΡΠΊΡΡΡΡΡ ΡΠΈΡΡΠ΅ΠΌ), ΡΠΎ Π΅ΡΡΡ ΠΎΡΠ½ΠΎΡΡΡΡΡ ΠΊ Π±ΠΎΠ»Π΅Π΅ Π½ΠΈΠ·ΠΊΠΎΠΌΡ ΡΡΠΎΠ²Π½Ρ, ΡΠ΅ΠΌ Π±ΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²ΠΎ ΠΎΠΏΠΈΡΡΠ²Π°Π΅ΠΌΡΡ Π² ΡΡΠΎΠΌ ΡΠ°Π·Π΄Π΅Π»Π΅ ΠΏΡΠΎΡΠΎΠΊΠΎΠ»ΠΎΠ².
Π£ΡΠΎΠ²Π½ΠΈ ΠΌΠΎΠ΄Π΅Π»ΠΈ OSI:
Π€ΠΈΠ·ΠΈΡΠ΅ΡΠΊΠΈΠΉ
ΠΠΎΡΠΎΠΊ Π±ΠΈΡΠΎΠ², ΠΏΠ΅ΡΠ΅Π΄Π°Π²Π°Π΅ΠΌΡΡ ΠΏΠΎ ΡΠΈΠ·ΠΈΡΠ΅ΡΠΊΠΎΠΉ Π»ΠΈΠ½ΠΈΠΈ. ΠΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ ΡΠΈΠ·ΠΈΡΠ΅ΡΠΊΠΎΠΉ Π»ΠΈΠ½ΠΈΠΈ.
ΠΠ°Π½Π°Π»ΡΠ½ΡΠΉ (Ethernet, PPP, ATM ΠΈ Ρ.ΠΏ.)
ΠΠΎΠ΄ΠΈΡΡΠ΅Ρ ΠΈ Π΄Π΅ΠΊΠΎΠ΄ΠΈΡΡΠ΅Ρ Π΄Π°Π½Π½ΡΠ΅ Π² Π²ΠΈΠ΄Π΅ ΠΏΠΎΡΠΎΠΊΠ° Π±ΠΈΡΠΎΠ², ΡΠΏΡΠ°Π²Π»ΡΡΡΡ Ρ ΠΎΡΠΈΠ±ΠΊΠ°ΠΌΠΈ, Π²ΠΎΠ·Π½ΠΈΠΊΠ°ΡΡΠΈΠΌΠΈ Π½Π° ΡΠΈΠ·ΠΈΡΠ΅ΡΠΊΠΎΠΌ ΡΡΠΎΠ²Π½Π΅ Π² ΠΏΡΠ΅Π΄Π΅Π»Π°Ρ ΡΠΈΠ·ΠΈΡΠ΅ΡΠΊΠΈ Π΅Π΄ΠΈΠ½ΠΎΠΉ ΡΠ΅ΡΠΈ.
Π‘Π΅ΡΠ΅Π²ΠΎΠΉ (IP)
ΠΠ°ΡΡΡΡΡΠΈΠ·ΠΈΡΡΠ΅Ρ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΎΠ½Π½ΡΠ΅ ΠΏΠ°ΠΊΠ΅ΡΡ ΠΎΡ ΡΠ·Π»Π° ΠΊ ΡΠ·Π»Ρ.
Π’ΡΠ°Π½ΡΠΏΠΎΡΡΠ½ΡΠΉ (TCP, UDP ΠΈ Ρ.ΠΏ.)
ΠΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°Π΅Ρ ΠΏΡΠΎΠ·ΡΠ°ΡΠ½ΡΡ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡ Π΄Π°Π½Π½ΡΡ ΠΌΠ΅ΠΆΠ΄Ρ Π΄Π²ΡΠΌΡ ΡΠΎΡΠΊΠ°ΠΌΠΈ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ.
Π‘Π΅Π°Π½ΡΠΎΠ²ΡΠΉ
Π£ΠΏΡΠ°Π²Π»ΡΠ΅Ρ ΡΠ΅Π°Π½ΡΠΎΠΌ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ ΠΌΠ΅ΠΆΠ΄Ρ ΡΡΠ°ΡΡΠ½ΠΈΠΊΠ°ΠΌΠΈ ΡΠ΅ΡΠΈ. ΠΠ°ΡΠΈΠ½Π°Π΅Ρ, ΠΊΠΎΠΎΡΠ΄ΠΈΠ½ΠΈΡΡΠ΅Ρ ΠΈ Π·Π°Π²Π΅ΡΡΠ°Π΅Ρ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ.
ΠΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΡ
ΠΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°Π΅Ρ Π½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΡ Π΄Π°Π½Π½ΡΡ ΠΎΡ ΡΠΎΡΠΌΡ ΠΈΡ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΡ ΠΏΡΡΠ΅ΠΌ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡ ΡΠΎΡΠΌΠ°ΡΠΎΠ². ΠΠ° ΡΡΠΎΠΌ ΡΡΠΎΠ²Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ Π²ΡΠΏΠΎΠ»Π½ΡΡΡΡΡ ΠΏΡΠΎΠ·ΡΠ°ΡΠ½ΠΎΠ΅ (Ρ ΡΠΎΡΠΊΠΈ Π·ΡΠ΅Π½ΠΈΡ Π²ΡΡΠ΅Π»Π΅ΠΆΠ°ΡΠ΅Π³ΠΎ ΡΡΠΎΠ²Π½Ρ) ΡΠΈΡΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈ Π΄Π΅ΡΠΈΡΡΠΎΠ²Π°Π½ΠΈΠ΅ Π΄Π°Π½Π½ΡΡ .
ΠΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ (HTTP, FTP, SMTP, NNTP, POP3, IMAP ΠΈ Ρ.Π΄.)
ΠΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΡΠ΅ ΡΠ΅ΡΠ΅Π²ΡΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ. ΠΡΠΎΡΠΎΠΊΠΎΠ» Π·Π°Π²ΠΈΡΠΈΡ ΠΎΡ ΡΠΈΠΏΠ° ΡΠ΅ΡΠ²ΠΈΡΠ°.
ΠΠ°ΠΆΠ΄ΡΠΉ ΡΠΎΠΊΠ΅Ρ ΠΎΡΠ½ΠΎΡΠΈΡΡΡ ΠΊ ΠΎΠ΄Π½ΠΎΠΌΡ ΠΈΠ· ΠΊΠΎΠΌΠΌΡΠ½ΠΈΠΊΠ°ΡΠΈΠΎΠ½Π½ΡΡ Π΄ΠΎΠΌΠ΅Π½ΠΎΠ². ΠΠΎΠ΄ΡΠ»Ρ socket ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ Π΄ΠΎΠΌΠ΅Π½Ρ UNIX ΠΈ Internet. ΠΠ°ΠΆΠ΄ΡΠΉ Π΄ΠΎΠΌΠ΅Π½ ΠΏΠΎΠ΄ΡΠ°Π·ΡΠΌΠ΅Π²Π°Π΅Ρ ΡΠ²ΠΎΠ΅ ΡΠ΅ΠΌΠ΅ΠΉΡΡΠ²ΠΎ ΠΏΡΠΎΡΠΎΠΊΠΎΠ»ΠΎΠ² ΠΈ Π°Π΄ΡΠ΅ΡΠ°ΡΠΈΡ. ΠΠ°Π½Π½ΠΎΠ΅ ΠΈΠ·Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π±ΡΠ΄Π΅Ρ Π·Π°ΡΡΠ°Π³ΠΈΠ²Π°ΡΡ ΡΠΎΠ»ΡΠΊΠΎ Π΄ΠΎΠΌΠ΅Π½ Internet, Π° ΠΈΠΌΠ΅Π½Π½ΠΎ ΠΏΡΠΎΡΠΎΠΊΠΎΠ»Ρ TCP/IP ΠΈ UDP/IP, ΠΏΠΎΡΡΠΎΠΌΡ Π΄Π»Ρ ΡΠΊΠ°Π·Π°Π½ΠΈΡ ΠΊΠΎΠΌΠΌΡΠ½ΠΈΠΊΠ°ΡΠΈΠΎΠ½Π½ΠΎΠ³ΠΎ Π΄ΠΎΠΌΠ΅Π½Π° ΠΏΡΠΈ ΡΠΎΠ·Π΄Π°Π½ΠΈΠΈ ΡΠΎΠΊΠ΅ΡΠ° Π±ΡΠ΄Π΅Ρ ΡΠΊΠ°Π·ΡΠ²Π°ΡΡΡΡ ΠΊΠΎΠ½ΡΡΠ°Π½ΡΠ° socket.AF_INET.
Π ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΏΡΠΈΠΌΠ΅ΡΠ° ΡΠ»Π΅Π΄ΡΠ΅Ρ ΡΠ°ΡΡΠΌΠΎΡΡΠ΅ΡΡ ΠΏΡΠΎΡΡΠ΅ΠΉΡΡΡ ΠΊΠ»ΠΈΠ΅Π½ΡβΡΠ΅ΡΠ²Π΅ΡΠ½ΡΡ ΠΏΠ°ΡΡ. Π‘Π΅ΡΠ²Π΅Ρ Π±ΡΠ΄Π΅Ρ ΠΏΡΠΈΠ½ΠΈΠΌΠ°ΡΡ ΡΡΡΠΎΠΊΡ ΠΈ ΠΎΡΠ²Π΅ΡΠ°ΡΡ ΠΊΠ»ΠΈΠ΅Π½ΡΡ. Π‘Π΅ΡΠ΅Π²ΠΎΠ΅ ΡΡΡΡΠΎΠΉΡΡΠ²ΠΎ ΠΈΠ½ΠΎΠ³Π΄Π° Π½Π°Π·ΡΠ²Π°ΡΡ Ρ ΠΎΡΡΠΎΠΌ (host), ΠΏΠΎΡΡΠΎΠΌΡ Π±ΡΠ΄Π΅Ρ ΡΠΏΠΎΡΡΠ΅Π±Π»ΡΡΡΡΡ ΡΡΠΎΡ ΡΠ΅ΡΠΌΠΈΠ½ ΠΏΠΎ ΠΎΡΠ½ΠΎΡΠ΅Π½ΠΈΡ ΠΊ ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΡ, Π½Π° ΠΊΠΎΡΠΎΡΠΎΠΌ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ ΡΠ΅ΡΠ΅Π²ΠΎΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅.
Π‘Π΅ΡΠ²Π΅Ρ:
import socket, string
def do_something(x):
lst = map(None, x);
lst.reverse();
return string.join(lst, "")
HOST = "" # localhost
PORT = 33333
srv = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
srv.bind((HOST, PORT))
while 1:
print "Π‘Π»ΡΡΠ°Ρ ΠΏΠΎΡΡ 33333"
srv.listen(1)
sock, addr = srv.accept()
while 1:
pal = sock.recv(1024)
if not pal:
break
print "ΠΠΎΠ»ΡΡΠ΅Π½ΠΎ ΠΎΡ %s:%s:" % addr, pal
lap = do_something(pal)
print "ΠΡΠΏΡΠ°Π²Π»Π΅Π½ΠΎ %s:%s:" % addr, lap
sock.send(lap)
sock.close()
ΠΠ»ΠΈΠ΅Π½Ρ:
import socket
HOST = "" # ΡΠ΄Π°Π»Π΅Π½Π½ΡΠΉ ΠΊΠΎΠΌΠΏΡΡΡΠ΅Ρ (localhost)
PORT = 33333 # ΠΏΠΎΡΡ Π½Π° ΡΠ΄Π°Π»Π΅Π½Π½ΠΎΠΌ ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΠ΅
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock.connect((HOST, PORT))
sock.send("ΠΠΠΠΠΠΠ ΠΠ")
result = sock.recv(1024)
sock.close()
print "ΠΠΎΠ»ΡΡΠ΅Π½ΠΎ:", result
ΠΡΠΈΠΌΠ΅ΡΠ°Π½ΠΈΠ΅:Π ΠΏΡΠΈΠΌΠ΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½Ρ ΡΡΡΡΠΊΠΈΠ΅ Π±ΡΠΊΠ²Ρ: Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΡΠΊΠ°Π·ΡΠ²Π°ΡΡ ΠΊΠΎΠ΄ΠΈΡΠΎΠ²ΠΊΡ.
ΠΡΠ΅ΠΆΠ΄Π΅ Π²ΡΠ΅Π³ΠΎ, Π½ΡΠΆΠ½ΠΎ Π·Π°ΠΏΡΡΡΠΈΡΡ ΡΠ΅ΡΠ²Π΅Ρ. Π‘Π΅ΡΠ²Π΅Ρ ΠΎΡΠΊΡΡΠ²Π°Π΅Ρ ΡΠΎΠΊΠ΅Ρ Π½Π° Π»ΠΎΠΊΠ°Π»ΡΠ½ΠΎΠΉ ΠΌΠ°ΡΠΈΠ½Π΅ Π½Π° ΠΏΠΎΡΡΡ 33333, ΠΈ Π°Π΄ΡΠ΅ΡΠ΅ 127.0.0.1. ΠΠΎΡΠ»Π΅ ΡΡΠΎΠ³ΠΎ ΠΎΠ½ ΡΠ»ΡΡΠ°Π΅Ρ (listen()) ΠΏΠΎΡΡ. ΠΠΎΠ³Π΄Π° Π½Π° ΠΏΠΎΡΡΡ ΠΏΠΎΡΠ²Π»ΡΡΡΡΡ Π΄Π°Π½Π½ΡΠ΅, ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅ΡΡΡ (accept()) Π²Ρ ΠΎΠ΄ΡΡΠ΅Π΅ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠ΅. ΠΠ΅ΡΠΎΠ΄ accept() Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΠΏΠ°ΡΡ β SocketβΠΎΠ±ΡΠ΅ΠΊΡ ΠΈ Π°Π΄ΡΠ΅Ρ ΡΠ΄Π°Π»Π΅Π½Π½ΠΎΠ³ΠΎ ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΠ°, ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°ΡΡΠ΅Π³ΠΎ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠ΅ (ΠΏΠ°ΡΠ° β IPβΠ°Π΄ΡΠ΅Ρ, ΠΏΠΎΡΡ Π½Π° ΡΠ΄Π°Π»Π΅Π½Π½ΠΎΠΉ ΠΌΠ°ΡΠΈΠ½Π΅). ΠΠΎΡΠ»Π΅ ΡΡΠΎΠ³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡΠΈΠΌΠ΅Π½ΡΡΡ ΠΌΠ΅ΡΠΎΠ΄Ρ recv() ΠΈ send() Π΄Π»Ρ ΠΎΠ±ΡΠ΅Π½ΠΈΡ Ρ ΠΊΠ»ΠΈΠ΅Π½ΡΠΎΠΌ. Π recv() Π·Π°Π΄Π°Π΅ΡΡΡ ΡΠΈΡΠ»ΠΎ Π±Π°ΠΉΡΠΎΠ² Π² ΠΎΡΠ΅ΡΠ΅Π΄Π½ΠΎΠΉ ΠΏΠΎΡΡΠΈΠΈ. ΠΡ ΠΊΠ»ΠΈΠ΅Π½ΡΠ° ΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠΈΠΉΡΠΈ ΠΈ ΠΌΠ΅Π½ΡΡΠ΅Π΅ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ Π΄Π°Π½Π½ΡΡ .
ΠΠΎΠ΄ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡβΠΊΠ»ΠΈΠ΅Π½ΡΠ° Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ ΠΎΡΠ΅Π²ΠΈΠ΄Π΅Π½. ΠΠ΅ΡΠΎΠ΄ connect() ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅Ρ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠ΅ Ρ ΡΠ΄Π°Π»Π΅Π½Π½ΡΠΌ Ρ ΠΎΡΡΠΎΠΌ (Π² ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ ΠΎΠ½ ΡΠ°ΡΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ Π½Π° ΡΠΎΠΉ ΠΆΠ΅ ΠΌΠ°ΡΠΈΠ½Π΅). ΠΠ°Π½Π½ΡΠ΅ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡΡΡ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠΌ send() ΠΈ ΠΏΡΠΈΠ½ΠΈΠΌΠ°ΡΡΡΡ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠΌ recv() β Π°Π½Π°Π»ΠΎΠ³ΠΈΡΠ½ΠΎ ΡΠΎΠΌΡ, ΡΡΠΎ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ Π½Π° ΡΠ΅ΡΠ²Π΅ΡΠ΅.
ΠΠΎΠ΄ΡΠ»Ρ socket ΠΈΠΌΠ΅Π΅Ρ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ Π²ΡΠΏΠΎΠΌΠΎΠ³Π°ΡΠ΅Π»ΡΠ½ΡΡ ΡΡΠ½ΠΊΡΠΈΠΉ. Π ΡΠ°ΡΡΠ½ΠΎΡΡΠΈ, ΡΡΠ½ΠΊΡΠΈΠΈ Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ Ρ ΡΠΈΡΡΠ΅ΠΌΠΎΠΉ Π΄ΠΎΠΌΠ΅Π½Π½ΡΡ ΠΈΠΌΠ΅Π½ (DNS):
>>> import socket
>>> socket.gethostbyaddr('www.onego.ru')
('www.onego.ru', [], ['195.161.136.4'])
>>> socket.gethostbyaddr('195.161.136.4')
('www.onego.ru', [], ['195.161.136.4'])
>>> socket.gethostname()
'rnd.onego.ru'
Π Π½ΠΎΠ²ΡΡ Π²Π΅ΡΡΠΈΡΡ Python ΠΏΠΎΡΠ²ΠΈΠ»Π°ΡΡ ΡΠ°ΠΊΠ°Ρ ΡΡΠ½ΠΊΡΠΈΡ ΠΊΠ°ΠΊ socket.getservbyname(). ΠΠ½Π° ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²ΡΠ²Π°ΡΡ Π½Π°ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½ΠΈΡ ΠΠ½ΡΠ΅ΡΠ½Π΅ΡβΡΠ΅ΡΠ²ΠΈΡΠΎΠ² Π² ΠΎΠ±ΡΠ΅ΠΏΡΠΈΠ½ΡΡΡΠ΅ Π½ΠΎΠΌΠ΅ΡΠ° ΠΏΠΎΡΡΠΎΠ²: