ΠΊΠ°ΠΊΠΈΠ΅ Π²ΠΈΠ΄Ρ ΡΠΎΠΊΠ΅ΡΠΎΠ² Π΅ΡΡΡ Π² java Ρ ΠΊΠ°ΠΊΠΈΠΌ ΠΏΡΠΎΡΠΎΠΊΠΎΠ»ΠΎΠΌ ΠΎΠ½ΠΈ ΡΠ°Π±ΠΎΡΠ°ΡΡ
33.1. Java β Π‘Π΅ΡΡ
Π’Π΅ΡΠΌΠΈΠ½ Β«ΡΠ΅ΡΠ΅Π²ΠΎΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅Β» ΠΎΡΠ½ΠΎΡΠΈΡΡΡ ΠΊ Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ, ΠΊΠΎΡΠΎΡΡΠ΅ Π²ΡΠΏΠΎΠ»Π½ΡΡΡΡΡ Π½Π° Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ ΡΡΡΡΠΎΠΉΡΡΠ²Π°Ρ (ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΠ°Ρ ), Π² ΠΊΠΎΡΠΎΡΡΡ Π²ΡΠ΅ ΡΡΡΡΠΎΠΉΡΡΠ²Π° ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½Ρ Π΄ΡΡΠ³ ΠΊ Π΄ΡΡΠ³Ρ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΠ΅ΡΠΈ.
ΠΠ°ΠΊΠ΅Ρ java.net Π½Π°Π±ΠΎΡΠ° ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠΎΠ² ΠΏΡΠΈΠΊΠ»Π°Π΄Π½ΠΎΠ³ΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ J2SE ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ Π½Π°Π±ΠΎΡ ΠΊΠ»Π°ΡΡΠΎΠ² ΠΈ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠΎΠ², ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΡΡ ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΡΠ΅ ΡΠ²Π΅Π΄Π΅Π½ΠΈΡ ΠΎ Π½ΠΈΠ·ΠΊΠΎΡΡΠΎΠ²Π½Π΅Π²ΠΎΠΌ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΠΈ, ΡΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΏΠΈΡΠ°ΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ, ΠΎΡΠΈΠ΅Π½ΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠ΅ Π½Π° ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ ΡΡΡΠ΅ΡΡΠ²ΡΡΡΠ΅ΠΉ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ.
Π‘ΠΎΠ΄Π΅ΡΠΆΠ°Π½ΠΈΠ΅
ΠΡΠΎΡΠΎΠΊΠΎΠ»Ρ TCP ΠΈ UDP
ΠΠ°ΠΊΠ΅Ρ java.net ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°Π΅Ρ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΡ Π΄Π²ΡΡ ΠΎΠ±ΡΠΈΡ ΡΠ΅ΡΠ΅Π²ΡΡ ΠΏΡΠΎΡΠΎΠΊΠΎΠ»ΠΎΠ²:
ΠΠ°Π½Π½Π°Ρ Π³Π»Π°Π²Π° Π½Π°Π΄Π»Π΅ΠΆΠ°ΡΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ ΡΠ°ΡΠΊΡΡΠ²Π°Π΅Ρ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ Π΄Π²Π΅ ΡΠ΅ΠΌΡ:
ΠΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠΎΠΊΠ΅ΡΠΎΠ²
Π Java ΡΠΎΠΊΠ΅ΡΡ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°ΡΡ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌ ΡΠ²ΡΠ·ΠΈ ΠΌΠ΅ΠΆΠ΄Ρ Π΄Π²ΡΠΌΡ ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΠ°ΠΌΠΈ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΠΈΠΌΠΈ TCP. ΠΠ»ΠΈΠ΅Π½ΡΡΠΊΠ°Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° ΡΠΎΠ·Π΄Π°Π΅Ρ ΡΠΎΠΊΠ΅Ρ Π½Π° ΡΠ²ΠΎΠ΅ΠΌ ΠΊΠΎΠ½ΡΠ΅ ΡΠ²ΡΠ·ΠΈ ΠΈ ΠΏΡΡΠ°Π΅ΡΡΡ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠΈΡΡ ΡΡΠΎΡ ΡΠΎΠΊΠ΅Ρ ΠΊ ΡΠ΅ΡΠ²Π΅ΡΡ.
ΠΠΎΠ³Π΄Π° ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠ΅ ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½ΠΎ, ΡΠ΅ΡΠ²Π΅Ρ ΡΠΎΠ·Π΄Π°Π΅Ρ ΠΎΠ±ΡΠ΅ΠΊΡ ΡΠΎΠΊΠ΅ΡΠ° Π½Π° ΡΠ²ΠΎΠ΅ΠΌ ΠΊΠΎΠ½ΡΠ΅ ΡΠ²ΡΠ·ΠΈ. ΠΠ»ΠΈΠ΅Π½Ρ ΠΈ ΡΠ΅ΡΠ²Π΅Ρ ΡΠ΅ΠΏΠ΅ΡΡ ΠΌΠΎΠ³ΡΡ ΠΎΠ±ΡΠ°ΡΡΡΡ, Π·Π°ΠΏΠΈΡΡΠ²Π°Ρ ΠΈ ΡΡΠΈΡΡΠ²Π°Ρ Π΄Π°Π½Π½ΡΠ΅ Ρ ΡΠΎΠΊΠ΅ΡΠ°.
ΠΠ»Π°ΡΡ java.net.Socket ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΠΎΠ±ΠΎΠΉ ΡΠΎΠΊΠ΅Ρ, Π° ΠΊΠ»Π°ΡΡ java.net.ServerSocket ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌ ΡΠ΅ΡΠ²Π΅ΡΠ½ΠΎΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Π΄Π»Ρ ΠΏΡΠΎΡΠ»ΡΡΠΈΠ²Π°Π½ΠΈΡ ΠΊΠ»ΠΈΠ΅Π½ΡΠΎΠ² ΠΈ ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½ΠΈΡ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠΉ Ρ Π½ΠΈΠΌΠΈ.
ΠΡΠΈ ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½ΠΈΠΈ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ TCP ΠΌΠ΅ΠΆΠ΄Ρ Π΄Π²ΡΠΌΡ ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΠ°ΠΌΠΈ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΡΠΎΠΊΠ΅ΡΠΎΠ², Π²ΡΠΏΠΎΠ»Π½ΡΡΡΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ ΡΡΠ°ΠΏΡ:
ΠΠΎΡΠ»Π΅ ΡΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½Ρ, ΡΠ²ΡΠ·Ρ ΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡΡ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΠΏΠΎΡΠΎΠΊΠΎΠ² Π²Ρ ΠΎΠ΄Π½ΡΡ /Π²ΡΡ ΠΎΠ΄Π½ΡΡ Π΄Π°Π½Π½ΡΡ . ΠΠ°ΠΆΠ΄ΡΠΉ ΡΠΎΠΊΠ΅Ρ ΠΈΠΌΠ΅Π΅Ρ ΠΈ OutputStream (ΠΏΠΎΡΠΎΠΊ Π²ΡΡ ΠΎΠ΄Π½ΡΡ Π΄Π°Π½Π½ΡΡ ), ΠΈ InputStream (ΠΏΠΎΡΠΎΠΊ Π²Ρ ΠΎΠ΄Π½ΡΡ Π΄Π°Π½Π½ΡΡ ). OutputStream ΠΊΠ»ΠΈΠ΅Π½ΡΠ° ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ ΠΊ InputStream ΡΠ΅ΡΠ²Π΅ΡΠ°, Π° InputStream ΠΊΠ»ΠΈΠ΅Π½ΡΠ° ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ ΠΊ OutputStream ΡΠ΅ΡΠ²Π΅ΡΠ°.
TCP ΡΠ²Π»ΡΠ΅ΡΡΡ Π΄Π²ΡΡΡΠΎΡΠΎΠ½Π½ΠΈΠΌ ΠΏΡΠΎΡΠΎΠΊΠΎΠ»ΠΎΠΌ ΡΠ²ΡΠ·ΠΈ, ΠΏΠΎΡΡΠΎΠΌΡ Π΄Π°Π½Π½ΡΠ΅ ΠΌΠΎΠ³ΡΡ ΠΏΠ΅ΡΠ΅Π΄Π°Π²Π°ΡΡΡΡ ΠΏΠΎ ΠΎΠ±ΠΎΠΈΠΌ ΠΏΠΎΡΠΎΠΊΠ°ΠΌ ΠΎΠ΄Π½ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎ. ΠΠΈΠΆΠ΅ ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Ρ ΠΏΠΎΠ»Π΅Π·Π½ΡΠ΅ ΠΊΠ»Π°ΡΡΡ, ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΡΡΠΈΠ΅ ΠΏΠΎΠ»Π½ΡΠΉ Π½Π°Π±ΠΎΡ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ² Π²Π½Π΅Π΄ΡΠ΅Π½ΠΈΡ ΡΠΎΠΊΠ΅ΡΠΎΠ².
ΠΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΡ ΠΊΠ»Π°ΡΡΠ° ServerSocket
ΠΠ»Π°ΡΡ java.net.ServerSocket ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΡΠ΅ΡΠ²Π΅ΡΠ½ΡΠΌΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡΠΌΠΈ Π΄Π»Ρ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ ΠΏΠΎΡΡΠ° ΠΈ ΠΏΡΠΎΡΠ»ΡΡΠΈΠ²Π°Π½ΠΈΡ ΠΊΠ»ΠΈΠ΅Π½ΡΡΠΊΠΈΡ Π·Π°ΠΏΡΠΎΡΠΎΠ².
ΠΠ»Π°ΡΡ ServerSocket ΠΈΠΌΠ΅Π΅Ρ ΡΠ΅ΡΡΡΠ΅ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΠ°:
| β | ΠΠΎΠ½ΡΡΡΡΠΊΡΠΎΡ ΠΈ ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ |
| 1 | public ServerSocket(int port) throws IOException ΠΠΎΠΏΡΡΠΊΠΈ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΡΠ΅ΡΠ²Π΅ΡΠ½ΠΎΠ³ΠΎ ΡΠΎΠΊΠ΅ΡΠ°, ΡΠ²ΡΠ·Π°Π½Π½ΠΎΠ³ΠΎ Ρ ΡΠΊΠ°Π·Π°Π½Π½ΡΠΌ ΠΏΠΎΡΡΠΎΠΌ. ΠΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ, Π΅ΡΠ»ΠΈ ΠΏΠΎΡΡ ΡΠΆΠ΅ ΡΠ²ΡΠ·Π°Π½ Π΄ΡΡΠ³ΠΈΠΌ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌ. |
| 2 | public ServerSocket(int port, int backlog) throws IOException ΠΠ°ΠΊ ΠΈ Π² ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠ΅ΠΌ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΠ΅, ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ backlog ΡΠΊΠ°Π·ΡΠ²Π°Π΅Ρ, ΡΠΊΠΎΠ»ΡΠΊΠΎ Π²Ρ ΠΎΠ΄ΡΡΠΈΡ ΠΊΠ»ΠΈΠ΅Π½ΡΠΎΠ² Π½ΡΠΆΠ½ΠΎ ΡΠΎΡ ΡΠ°Π½ΠΈΡΡ Π² ΠΎΡΠ΅ΡΠ΅Π΄ΠΈ ΠΎΠΆΠΈΠ΄Π°Π½ΠΈΡ. |
| 3 | public ServerSocket(int port, int backlog, InetAddress address) throws IOException ΠΠ°ΠΊ ΠΈ Π² ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠ΅ΠΌ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΠ΅, ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ InetAddress ΡΠΊΠ°Π·ΡΠ²Π°Π΅Ρ Π»ΠΎΠΊΠ°Π»ΡΠ½ΡΠΉ IP-Π°Π΄ΡΠ΅Ρ Π΄Π»Ρ ΠΎΡΡΡΠ΅ΡΡΠ²Π»Π΅Π½ΠΈΡ ΠΏΡΠΈΠ²ΡΠ·ΠΊΠΈ. InetAddress ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π² ΡΠ΅ΡΠ²Π΅ΡΠ°Ρ , ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΠΎΠ³ΡΡ ΠΈΠΌΠ΅ΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ IP-Π°Π΄ΡΠ΅ΡΠΎΠ², ΡΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΡΠ΅ΡΠ²Π΅ΡΡ ΡΠΊΠ°Π·ΡΠ²Π°ΡΡ IP-Π°Π΄ΡΠ΅Ρ ΠΏΡΠΈΠ΅ΠΌΠ° Π·Π°ΠΏΡΠΎΡΠΎΠ² ΠΊΠ»ΠΈΠ΅Π½ΡΠΎΠ². |
| 4 | public ServerSocket() throws IOException Π‘ΠΎΠ·Π΄Π°Π΅Ρ Π½Π΅ΠΏΡΠΈΠ²ΡΠ·Π°Π½Π½ΡΠΉ ΡΠΎΠΊΠ΅Ρ ΡΠ΅ΡΠ²Π΅ΡΠ°. ΠΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ ΡΡΠΎΠ³ΠΎ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΠ° ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ ΠΌΠ΅ΡΠΎΠ΄ ΠΏΡΠΈΠ²ΡΠ·ΠΊΠΈ (), ΠΊΠΎΠ³Π΄Π° Π±ΡΠ΄Π΅ΡΠ΅ Π³ΠΎΡΠΎΠ²Ρ ΠΏΡΠΈΠ²ΡΠ·Π°ΡΡ ΡΠΎΠΊΠ΅Ρ ΡΠ΅ΡΠ²Π΅ΡΠ°. |
ΠΡΠ»ΠΈ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡ ServerSocket Π½Π΅ Π²ΡΠ΄Π°Π΅Ρ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅, ΡΡΠΎ ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ, ΡΡΠΎ Π²Π°ΡΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΡΡΠΏΠ΅ΡΠ½ΠΎ ΡΠ²ΡΠ·Π°Π½ΠΎ Ρ ΡΠΊΠ°Π·Π°Π½Π½ΡΠΌ ΠΏΠΎΡΡΠΎΠΌ ΠΈ Π³ΠΎΡΠΎΠ²ΠΎ ΠΊ ΠΊΠ»ΠΈΠ΅Π½ΡΡΠΊΠΈΠΌ Π·Π°ΠΏΡΠΎΡΠ°ΠΌ.
ΠΠ΅ΡΠΎΠ΄Ρ ΠΊΠ»Π°ΡΡΠ° ServerSocket
ΠΠΈΠΆΠ΅ ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Ρ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΠΈΠ· ΡΠ°ΡΠΏΡΠΎΡΡΡΠ°Π½Π΅Π½Π½ΡΡ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ² Π² Java ΠΊΠ»Π°ΡΡΠ° ServerSocket.
| β | ΠΠ΅ΡΠΎΠ΄Ρ ΠΈ ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ |
| 1 | public int getLocalPort() ΠΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΠΏΠΎΡΡ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΡΠΎΡΠ»ΡΡΠΈΠ²Π°Π΅Ρ ΡΠΎΠΊΠ΅Ρ ΡΠ΅ΡΠ²Π΅ΡΠ°. ΠΡΠΎΡ ΠΌΠ΅ΡΠΎΠ΄ ΠΏΠΎΠ»Π΅Π·Π΅Π½, Π΅ΡΠ»ΠΈ Π²Ρ ΠΏΠ΅ΡΠ΅Π΄Π°Π»ΠΈ 0 Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ Π½ΠΎΠΌΠ΅ΡΠ° ΠΏΠΎΡΡΠ° Π² ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΠ΅ ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΠ»ΠΈ ΡΠ΅ΡΠ²Π΅ΡΡ Π½Π°ΠΉΡΠΈ ΠΏΠΎΡΡ. |
| 2 | public Socket accept() throws IOException ΠΠΆΠΈΠ΄Π°Π΅Ρ Π²Ρ ΠΎΠ΄ΡΡΠ΅Π³ΠΎ ΠΊΠ»ΠΈΠ΅Π½ΡΠ°. ΠΡΠΎΡ ΠΌΠ΅ΡΠΎΠ΄ Π±Π»ΠΎΠΊΠΈΡΡΠ΅ΡΡΡ Π΄ΠΎ ΡΠ΅Ρ ΠΏΠΎΡ, ΠΏΠΎΠΊΠ° ΠΊΠ»ΠΈΠ΅Π½Ρ Π½Π΅ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠΈΡΡΡ ΠΊ ΡΠ΅ΡΠ²Π΅ΡΡ Π½Π° ΡΠΊΠ°Π·Π°Π½Π½ΠΎΠΌ ΠΏΠΎΡΡΡ ΠΈΠ»ΠΈ Π½Π΅ ΠΈΡΡΠ΅ΡΠ΅Ρ Π²ΡΠ΅ΠΌΡ ΠΎΠΆΠΈΠ΄Π°Π½ΠΈΡ ΡΠΎΠΊΠ΅ΡΠ°, ΠΏΡΠΈ ΡΡΠ»ΠΎΠ²ΠΈΠΈ, ΡΡΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ ΠΎΠΆΠΈΠ΄Π°Π½ΠΈΡ Π±ΡΠ»ΠΎ ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½ΠΎ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΌΠ΅ΡΠΎΠ΄Π° setSoTimeout(). Π ΠΏΡΠΎΡΠΈΠ²Π½ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ ΡΡΠΎΡ ΠΌΠ΅ΡΠΎΠ΄ Π±Π»ΠΎΠΊΠΈΡΡΠ΅ΡΡΡ Π½Π° Π½Π΅ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΠΉ ΡΡΠΎΠΊ. |
| 3 | public void setSoTimeout(int timeout) Π£ΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ ΠΎΠΆΠΈΠ΄Π°Π½ΠΈΡ ΠΊΠ»ΠΈΠ΅Π½ΡΠ° ΡΠΎΠΊΠ΅ΡΠΎΠΌ ΡΠ΅ΡΠ²Π΅ΡΠ° Π²ΠΎ Π²ΡΠ΅ΠΌΡ accept(). |
| 4 | public void bind (Ρ
ΠΎΡΡ SocketAddress, int backlog) ΠΡΠΈΠ²ΡΠ·ΡΠ²Π°Π΅Ρ ΡΠΎΠΊΠ΅Ρ ΠΊ ΡΠΊΠ°Π·Π°Π½Π½ΠΎΠΌΡ ΡΠ΅ΡΠ²Π΅ΡΡ ΠΈ ΠΏΠΎΡΡΡ Π² ΠΎΠ±ΡΠ΅ΠΊΡΠ΅ SocketAddress. ΠΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ ΡΡΠΎΡ ΠΌΠ΅ΡΠΎΠ΄, Π΅ΡΠ»ΠΈ Π²Ρ ΡΠΎΠ·Π΄Π°Π»ΠΈ ServerSocket Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΠ° Π±Π΅Π· Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ². |
ΠΠΎΠ³Π΄Π° ServerSocket Π²ΡΠ·ΡΠ²Π°Π΅Ρ accept(), ΠΌΠ΅ΡΠΎΠ΄ Π½Π΅ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΡΡΡ, ΠΏΠΎΠΊΠ° ΠΊΠ»ΠΈΠ΅Π½Ρ Π½Π΅ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠΈΡΡΡ. ΠΠΎΡΠ»Π΅ ΡΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ ΠΊΠ»ΠΈΠ΅Π½Ρ Π²ΡΠ΅-ΡΠ°ΠΊΠΈ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠΈΡΡΡ, ServerSocket ΡΠΎΠ·Π΄Π°Π΅Ρ Π½ΠΎΠ²ΡΠΉ ΡΠΎΠΊΠ΅Ρ Π΄Π»Ρ Π½Π΅ΡΠΊΠ°Π·Π°Π½Π½ΠΎΠ³ΠΎ ΠΏΠΎΡΡΠ° ΠΈ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΡΡΡΠ»ΠΊΡ Π½Π° ΡΡΠΎΡ Π½ΠΎΠ²ΡΠΉ ΡΠΎΠΊΠ΅Ρ. Π’Π΅ΠΏΠ΅ΡΡ ΠΌΠ΅ΠΆΠ΄Ρ ΠΊΠ»ΠΈΠ΅Π½ΡΠΎΠΌ ΠΈ ΡΠ΅ΡΠ²Π΅ΡΠΎΠΌ ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ TCP-ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠ΅, ΠΈ ΡΠ²ΡΠ·Ρ ΠΌΠΎΠΆΠ΅Ρ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡΡΡ.
ΠΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΡ ΠΊΠ»Π°ΡΡΠ° Socket
ΠΠ»Π°ΡΡ java.net.Socket ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΠΎΠ±ΠΎΠΉ ΡΠΎΠΊΠ΅Ρ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΊΠ»ΠΈΠ΅Π½Ρ ΠΈ ΡΠ΅ΡΠ²Π΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡ Π΄Π»Ρ ΡΠ²ΡΠ·ΠΈ Π΄ΡΡΠ³ Ρ Π΄ΡΡΠ³ΠΎΠΌ. ΠΠ»ΠΈΠ΅Π½Ρ ΠΏΠΎΠ»ΡΡΠ°Π΅Ρ ΠΎΠ±ΡΠ΅ΠΊΡ ΡΠΎΠΊΠ΅ΡΠ°, ΡΠΎΠ·Π΄Π°Π² Π΅Π³ΠΎ, ΡΠΎΠ³Π΄Π° ΠΊΠ°ΠΊ ΡΠ΅ΡΠ²Π΅Ρ ΠΏΠΎΠ»ΡΡΠ°Π΅Ρ ΠΎΠ±ΡΠ΅ΠΊΡ ΡΠΎΠΊΠ΅ΡΠ° ΠΈΠ· Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΠΌΠΎΠ³ΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΌΠ΅ΡΠΎΠ΄Π° accept().
ΠΠ»Π°ΡΡ Socket ΠΈΠΌΠ΅Π΅Ρ ΠΏΡΡΡ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΠΎΠ², ΠΊΠΎΡΠΎΡΡΠ΅ ΠΊΠ»ΠΈΠ΅Π½Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ Π΄Π»Ρ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ ΠΊ ΡΠ΅ΡΠ²Π΅ΡΡ.
| β | ΠΠΎΠ½ΡΡΡΡΠΊΡΠΎΡ ΠΈ ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ |
| 1 | public Socket(String host, int port) throws UnknownHostException, IOException. ΠΡΠΎΡ ΠΌΠ΅ΡΠΎΠ΄ ΠΏΡΠ΅Π΄ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅Ρ ΠΏΠΎΠΏΡΡΠΊΡ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ ΠΊ ΡΠΊΠ°Π·Π°Π½Π½ΠΎΠΌΡ ΡΠ΅ΡΠ²Π΅ΡΡ ΡΠ΅ΡΠ΅Π· ΡΠΊΠ°Π·Π°Π½Π½ΡΠΉ ΠΏΠΎΡΡ. ΠΡΠ»ΠΈ ΡΡΠΎΡ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡ Π½Π΅ Π²ΡΠ΄Π°Π΅Ρ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅, ΡΠΎ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠ΅ ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½ΠΎ ΡΡΠΏΠ΅ΡΠ½ΠΎ, ΠΈ ΠΊΠ»ΠΈΠ΅Π½Ρ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ ΠΊ ΡΠ΅ΡΠ²Π΅ΡΡ. |
| 2 | public Socket(InetAddress host, int port) throws IOException ΠΡΠΎΡ ΠΌΠ΅ΡΠΎΠ΄ ΠΈΠ΄Π΅Π½ΡΠΈΡΠ΅Π½ ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠ΅ΠΌΡ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΡ, Π·Π° ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ΠΌ ΡΠΎΠ³ΠΎ, ΡΡΠΎ Ρ ΠΎΡΡ ΠΎΠ±ΠΎΠ·Π½Π°ΡΠ°Π΅ΡΡΡ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠΌ InetAddress. |
| 3 | public Socket(String host, int port, InetAddress localAddress, int localPort) throws IOException. ΠΠΎΠ΄ΠΊΠ»ΡΡΠ°Π΅ΡΡΡ ΠΊ ΡΠΊΠ°Π·Π°Π½Π½ΠΎΠΌΡ Ρ ΠΎΡΡΡ ΠΈ ΠΏΠΎΡΡΡ, ΡΠΎΠ·Π΄Π°Π²Π°Ρ ΡΠΎΠΊΠ΅Ρ Π½Π° Π»ΠΎΠΊΠ°Π»ΡΠ½ΠΎΠΌ Ρ ΠΎΡΡΠ΅ ΠΏΠΎ ΡΠΊΠ°Π·Π°Π½Π½ΠΎΠΌΡ Π°Π΄ΡΠ΅ΡΡ ΠΈ ΠΏΠΎΡΡΡ. |
| 4 | public Socket(InetAddress host, int port, InetAddress localAddress, int localPort) throws IOException. ΠΡΠΎΡ ΠΌΠ΅ΡΠΎΠ΄ ΠΈΠ΄Π΅Π½ΡΠΈΡΠ΅Π½ ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠ΅ΠΌΡ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΡ, Π·Π° ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ΠΌ ΡΠΎΠ³ΠΎ, ΡΡΠΎ Ρ ΠΎΡΡ ΠΎΠ±ΠΎΠ·Π½Π°ΡΠ°Π΅ΡΡΡ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠΌ InetAddress Π²ΠΌΠ΅ΡΡΠΎ ΡΡΡΠΎΠΊΠΈ Π°Π΄ΡΠ΅ΡΠ°. |
| 5 | public Socket() Π‘ΠΎΠ·Π΄Π°Π΅Ρ Π½Π΅ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½Π½ΡΠΉ ΡΠΎΠΊΠ΅Ρ. ΠΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ ΠΌΠ΅ΡΠΎΠ΄ connect() Π΄Π»Ρ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ ΡΠ°ΠΊΠΎΠ³ΠΎ ΡΠΎΠΊΠ΅ΡΠ° ΠΊ ΡΠ΅ΡΠ²Π΅ΡΡ. |
ΠΡΠΈ Π²ΠΎΠ·Π²ΡΠ°ΡΠ΅ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΠ° Socket, ΠΎΠ½ Π½Π΅ ΠΏΡΠΎΡΡΠΎ ΡΠΎΠ·Π΄Π°Π΅Ρ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡ ΠΎΠ±ΡΠ΅ΠΊΡΠ° ΡΠΎΠΊΠ΅ΡΠ°, Π½ΠΎ ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ ΠΏΡΡΠ°Π΅ΡΡΡ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠΈΡΡΡΡ ΠΊ ΡΠΊΠ°Π·Π°Π½Π½ΠΎΠΌΡ ΡΠ΅ΡΠ²Π΅ΡΡ ΠΈ ΠΏΠΎΡΡΡ.
ΠΠ΅ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΠ΅ΡΠΎΠ΄Ρ, ΠΈΠ·ΡΡΠ°ΡΡΠΈΠ΅ ΠΊΠ»Π°ΡΡ ΡΠΎΠΊΠ΅ΡΠ°, ΠΏΠ΅ΡΠ΅ΡΠΈΡΠ»Π΅Π½Ρ Π·Π΄Π΅ΡΡ. ΠΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΡΡΠΎ ΠΈ ΠΊΠ»ΠΈΠ΅Π½Ρ, ΠΈ ΡΠ΅ΡΠ²Π΅Ρ ΠΈΠΌΠ΅ΡΡ ΠΎΠ±ΡΠ΅ΠΊΡ ΡΠΎΠΊΠ΅ΡΠ°, ΠΏΠΎΡΡΠΎΠΌΡ ΡΡΠΈ ΠΌΠ΅ΡΠΎΠ΄Ρ ΠΌΠΎΠ³ΡΡ Π²ΡΠ·ΡΠ²Π°ΡΡΡΡ ΠΊΠ°ΠΊ ΠΊΠ»ΠΈΠ΅Π½ΡΠΎΠΌ, ΡΠ°ΠΊ ΠΈ ΡΠ΅ΡΠ²Π΅ΡΠΎΠΌ.
ΠΠ΅ΡΠΎΠ΄Ρ ΠΊΠ»Π°ΡΡΠ° Socket
ΠΡΠΎΡ ΠΌΠ΅ΡΠΎΠ΄ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ°Π΅Ρ ΡΠΎΠΊΠ΅Ρ ΠΊ ΡΠΊΠ°Π·Π°Π½Π½ΠΎΠΌΡ Ρ ΠΎΡΡΡ. ΠΡΠΎΡ ΠΌΠ΅ΡΠΎΠ΄ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌ ΡΠΎΠ»ΡΠΊΠΎ ΠΏΡΠΈ ΡΠΎΠ·Π΄Π°Π½ΠΈΠΈ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΠ° ΡΠΎΠΊΠ΅ΡΠ° Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΠ° Π±Π΅Π· Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ².
ΠΡΠΎΡ ΠΌΠ΅ΡΠΎΠ΄ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ Π°Π΄ΡΠ΅Ρ Π΄ΡΡΠ³ΠΎΠ³ΠΎ ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΠ°, ΠΊ ΠΊΠΎΡΠΎΡΠΎΠΌΡ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ ΡΡΠΎΡ ΡΠΎΠΊΠ΅Ρ.
ΠΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΠΏΠΎΡΡ, ΠΊ ΠΊΠΎΡΠΎΡΠΎΠΌΡ ΠΏΡΠΈΠ²ΡΠ·Π°Π½ ΡΠΎΠΊΠ΅Ρ Π½Π° ΡΠ΄Π°Π»Π΅Π½Π½ΠΎΠΉ ΠΌΠ°ΡΠΈΠ½Π΅.
ΠΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΠΏΠΎΡΡ, ΠΊ ΠΊΠΎΡΠΎΡΠΎΠΌΡ ΠΏΡΠΈΠ²ΡΠ·Π°Π½ ΡΠΎΠΊΠ΅Ρ Π½Π° Π»ΠΎΠΊΠ°Π»ΡΠ½ΠΎΠΉ ΠΌΠ°ΡΠΈΠ½Π΅.
ΠΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ Π°Π΄ΡΠ΅Ρ ΡΠ΄Π°Π»Π΅Π½Π½ΠΎΠ³ΠΎ ΡΠΎΠΊΠ΅ΡΠ°.
ΠΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΠΏΠΎΡΠΎΠΊ Π²Ρ ΠΎΠ΄Π½ΡΡ Π΄Π°Π½Π½ΡΡ ΡΠΎΠΊΠ΅ΡΠ°. ΠΠΎΡΠΎΠΊ Π²Ρ ΠΎΠ΄Π½ΡΡ Π΄Π°Π½Π½ΡΡ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ ΠΊ ΠΏΠΎΡΠΎΠΊΡ Π²ΡΡ ΠΎΠ΄Π½ΡΡ Π΄Π°Π½Π½ΡΡ ΡΠ΄Π°Π»Π΅Π½Π½ΠΎΠ³ΠΎ ΡΠΎΠΊΠ΅ΡΠ°.
ΠΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΠΏΠΎΡΠΎΠΊ Π²ΡΡ ΠΎΠ΄Π½ΡΡ Π΄Π°Π½Π½ΡΡ ΡΠΎΠΊΠ΅ΡΠ°. ΠΠΎΡΠΎΠΊ Π²ΡΡ ΠΎΠ΄Π½ΡΡ Π΄Π°Π½Π½ΡΡ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ ΠΊ ΠΏΠΎΡΠΎΠΊΡ Π²Ρ ΠΎΠ΄Π½ΡΡ Π΄Π°Π½Π½ΡΡ ΡΠ΄Π°Π»Π΅Π½Π½ΠΎΠ³ΠΎ ΡΠΎΠΊΠ΅ΡΠ°.
ΠΠ°ΠΊΡΡΠ²Π°Π΅Ρ ΡΠΎΠΊΠ΅Ρ, ΡΡΠΎ Π΄Π΅Π»Π°Π΅Ρ Π΄Π°Π½Π½ΡΠΉ ΠΎΠ±ΡΠ΅ΠΊΡ ΡΠΎΠΊΠ΅ΡΠ° Π½Π΅ ΡΠΏΠΎΡΠΎΠ±Π½ΡΠΌ ΡΠ½ΠΎΠ²Π° ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ°ΡΡΡΡ ΠΊ Π»ΡΠ±ΠΎΠΌΡ ΡΠ΅ΡΠ²Π΅ΡΡ.
ΠΠ΅ΡΠΎΠ΄Ρ ΠΊΠ»Π°ΡΡΠ° InetAddress
ΠΡΠΎΡ ΠΊΠ»Π°ΡΡ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ Π°Π΄ΡΠ΅Ρ ΠΠ½ΡΠ΅ΡΠ½Π΅Ρ-ΠΏΡΠΎΡΠΎΠΊΠΎΠ»Π° (IP). Π‘Π»Π΅Π΄ΡΡΡΠΈΠ΅ ΠΏΠΎΠ»Π΅Π·Π½ΡΠ΅ ΠΌΠ΅ΡΠΎΠ΄Ρ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΠΎΠ½Π°Π΄ΠΎΠ±ΡΡΡΡ ΠΏΡΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΠΈ ΡΠΎΠΊΠ΅ΡΠΎΠ², ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½Ρ Π½ΠΈΠΆΠ΅:
| β | ΠΈ ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ |
| 1 | static InetAddress getByAddress(byte[] addr) ΠΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΠΎΠ±ΡΠ΅ΠΊΡ InetAddress Ρ ΡΡΠ΅ΡΠΎΠΌ Π½Π΅ΠΎΠ±ΡΠ°Π±ΠΎΡΠ°Π½Π½ΠΎΠ³ΠΎ IP-Π°Π΄ΡΠ΅ΡΠ°. |
| 2 | static InetAddress getByAddress(String host, byte[] addr) Π‘ΠΎΠ·Π΄Π°Π΅Ρ InetAddress Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»Π΅Π½Π½ΠΎΠ³ΠΎ ΠΈΠΌΠ΅Π½ΠΈ Ρ ΠΎΡΡΠ° ΠΈ IP-Π°Π΄ΡΠ΅ΡΠ°. |
| 3 | static InetAddress getByName(String host) ΠΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ IP-Π°Π΄ΡΠ΅Ρ Ρ ΠΎΡΡΠ°, ΡΡΠΈΡΡΠ²Π°Ρ ΠΈΠΌΡ Ρ ΠΎΡΡΠ°. |
| 4 | String getHostAddress() ΠΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΡΡΡΠΎΠΊΡ IP-Π°Π΄ΡΠ΅ΡΠ° Π² ΡΠ΅ΠΊΡΡΠΎΠ²ΠΎΠΉ ΡΠΎΡΠΌΠ΅. |
| 5 | String getHostName() ΠΠΎΠ»ΡΡΠ°Π΅Ρ ΠΈΠΌΡ Ρ ΠΎΡΡΠ° Π΄Π»Ρ Π΄Π°Π½Π½ΠΎΠ³ΠΎ IP-Π°Π΄ΡΠ΅ΡΠ°. |
| 6 | static InetAddress InetAddress getLocalHost() ΠΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ Π»ΠΎΠΊΠ°Π»ΡΠ½ΡΠΉ Ρ ΠΎΡΡ. |
| 7 | String toString() ΠΠΎΠ½Π²Π΅ΡΡΠΈΡΡΠ΅Ρ ΡΡΠΎΡ IP-Π°Π΄ΡΠ΅Ρ Π² Π°Π΄ΡΠ΅ΡΠ½ΡΡ ΡΡΡΠΎΠΊΡ. |
ΠΡΠΈΠΌΠ΅Ρ Socket Client
Π‘Π»Π΅Π΄ΡΡΡΠ°Ρ GreetingClient β ΡΡΠΎ ΠΊΠ»ΠΈΠ΅Π½ΡΡΠΊΠ°Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ°, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ°Π΅ΡΡΡ ΠΊ ΡΠ΅ΡΠ²Π΅ΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΠΎΠΊΠ΅ΡΠ°, ΠΎΡΠΏΡΠ°Π²Π»ΡΠ΅Ρ ΠΏΡΠΈΠ²Π΅ΡΡΡΠ²ΠΈΠ΅, Π° Π·Π°ΡΠ΅ΠΌ ΠΎΠΆΠΈΠ΄Π°Π΅Ρ ΠΎΡΠ²Π΅ΡΠ°.
ΠΡΠΈΠΌΠ΅Ρ Socket Server
Π‘Π»Π΅Π΄ΡΡΡΠ°Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° GreetingServer ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΏΡΠΈΠΌΠ΅ΡΠΎΠΌ ΡΠ΅ΡΠ²Π΅ΡΠ½ΠΎΠ³ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, ΠΊΠΎΡΠΎΡΠΎΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ ΠΊΠ»Π°ΡΡ ΡΠΎΠΊΠ΅ΡΠ° Π΄Π»Ρ ΠΏΡΠΎΡΠ»ΡΡΠΈΠ²Π°Π½ΠΈΡ ΠΊΠ»ΠΈΠ΅Π½ΡΠΎΠ² ΠΏΠΎ Π½ΠΎΠΌΠ΅ΡΡ ΠΏΠΎΡΡΠ°, ΡΠΊΠ°Π·Π°Π½Π½ΠΎΠΌΡ Π² Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠΈ.
Π‘ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΡΠΉΡΠ΅ ΠΊΠ»ΠΈΠ΅Π½Ρ ΠΈ ΡΠ΅ΡΠ²Π΅Ρ, Π° Π·Π°ΡΠ΅ΠΌ Π·Π°ΠΏΡΡΡΠΈΡΠ΅ ΡΠ΅ΡΠ²Π΅Ρ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ:
ΠΡΠΎΠ²Π΅ΡΡΡΠ΅ ΠΊΠ»ΠΈΠ΅Π½ΡΡΠΊΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ:
Π‘ΠΎΠΊΠ΅ΡΡΒΆ
Π‘ΠΎΠΊΠ΅ΡΡ (Π°Π½Π³Π». socket β ΡΠ°Π·ΡΡΠΌ) β Π½Π°Π·Π²Π°Π½ΠΈΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΠΎΠ³ΠΎ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ° Π΄Π»Ρ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠ΅Π½ΠΈΡ ΠΎΠ±ΠΌΠ΅Π½Π° Π΄Π°Π½Π½ΡΠΌΠΈ ΠΌΠ΅ΠΆΠ΄Ρ ΠΏΡΠΎΡΠ΅ΡΡΠ°ΠΌΠΈ. ΠΡΠΎΡΠ΅ΡΡΡ ΠΏΡΠΈ ΡΠ°ΠΊΠΎΠΌ ΠΎΠ±ΠΌΠ΅Π½Π΅ ΠΌΠΎΠ³ΡΡ ΠΈΡΠΏΠΎΠ»Π½ΡΡΡΡΡ ΠΊΠ°ΠΊ Π½Π° ΠΎΠ΄Π½ΠΎΠΉ ΠΠΠ, ΡΠ°ΠΊ ΠΈ Π½Π° ΡΠ°Π·Π»ΠΈΡΠ½ΡΡ ΠΠΠ, ΡΠ²ΡΠ·Π°Π½Π½ΡΡ ΠΌΠ΅ΠΆΠ΄Ρ ΡΠΎΠ±ΠΎΠΉ ΡΠ΅ΡΡΡ. Π‘ΠΎΠΊΠ΅Ρ β Π°Π±ΡΡΡΠ°ΠΊΡΠ½ΡΠΉ ΠΎΠ±ΡΠ΅ΠΊΡ, ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΡΡΠΈΠΉ ΠΊΠΎΠ½Π΅ΡΠ½ΡΡ ΡΠΎΡΠΊΡ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ.
ΠΡΠΈΠ½ΡΠΈΠΏΡ ΡΠΎΠΊΠ΅ΡΠΎΠ²ΒΆ
ΠΠ°ΠΆΠ΄ΡΠΉ ΠΏΡΠΎΡΠ΅ΡΡ ΠΌΠΎΠΆΠ΅Ρ ΡΠΎΠ·Π΄Π°ΡΡ ΡΠ»ΡΡΠ°ΡΡΠΈΠΉ ΡΠΎΠΊΠ΅Ρ (ΡΠ΅ΡΠ²Π΅ΡΠ½ΡΠΉ ΡΠΎΠΊΠ΅Ρ) ΠΈ ΠΏΡΠΈΠ²ΡΠ·Π°ΡΡ Π΅Π³ΠΎ ΠΊ ΠΊΠ°ΠΊΠΎΠΌΡ-Π½ΠΈΠ±ΡΠ΄Ρ ΠΏΠΎΡΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΎΠ½Π½ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΡ (Π² UNIX Π½Π΅ΠΏΡΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΡΠΎΠ²Π°Π½Π½ΡΠ΅ ΠΏΡΠΎΡΠ΅ΡΡΡ Π½Π΅ ΠΌΠΎΠ³ΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΏΠΎΡΡΡ ΠΌΠ΅Π½ΡΡΠ΅ 1024). Π‘Π»ΡΡΠ°ΡΡΠΈΠΉ ΠΏΡΠΎΡΠ΅ΡΡ ΠΎΠ±ΡΡΠ½ΠΎ Π½Π°Ρ ΠΎΠ΄ΠΈΡΡΡ Π² ΡΠΈΠΊΠ»Π΅ ΠΎΠΆΠΈΠ΄Π°Π½ΠΈΡ, ΡΠΎ Π΅ΡΡΡ ΠΏΡΠΎΡΡΠΏΠ°Π΅ΡΡΡ ΠΏΡΠΈ ΠΏΠΎΡΠ²Π»Π΅Π½ΠΈΠΈ Π½ΠΎΠ²ΠΎΠ³ΠΎ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ. ΠΡΠΈ ΡΡΠΎΠΌ ΡΠΎΡ ΡΠ°Π½ΡΠ΅ΡΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΠΏΡΠΎΠ²Π΅ΡΠΈΡΡ Π½Π°Π»ΠΈΡΠΈΠ΅ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠΉ Π½Π° Π΄Π°Π½Π½ΡΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ, ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ ΡΠ°ΠΉΠΌ-Π°ΡΡ Π΄Π»Ρ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ ΠΈ Ρ.Π΄.
ΠΠ°ΠΆΠ΄ΡΠΉ ΡΠΎΠΊΠ΅Ρ ΠΈΠΌΠ΅Π΅Ρ ΡΠ²ΠΎΠΉ Π°Π΄ΡΠ΅Ρ. ΠΠ‘ ΡΠ΅ΠΌΠ΅ΠΉΡΡΠ²Π° UNIX ΠΌΠΎΠ³ΡΡ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡ ΠΌΠ½ΠΎΠ³ΠΎ ΡΠΈΠΏΠΎΠ² Π°Π΄ΡΠ΅ΡΠΎΠ², Π½ΠΎ ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΡΠΌΠΈ ΡΠ²Π»ΡΡΡΡΡ INET-Π°Π΄ΡΠ΅Ρ ΠΈ UNIX-Π°Π΄ΡΠ΅Ρ. ΠΡΠ»ΠΈ ΠΏΡΠΈΠ²ΡΠ·Π°ΡΡ ΡΠΎΠΊΠ΅Ρ ΠΊ UNIX-Π°Π΄ΡΠ΅ΡΡ, ΡΠΎ Π±ΡΠ΄Π΅Ρ ΡΠΎΠ·Π΄Π°Π½ ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΡΠΉ ΡΠ°ΠΉΠ» (ΡΠ°ΠΉΠ» ΡΠΎΠΊΠ΅ΡΠ°) ΠΏΠΎ Π·Π°Π΄Π°Π½Π½ΠΎΠΌΡ ΠΏΡΡΠΈ, ΡΠ΅ΡΠ΅Π· ΠΊΠΎΡΠΎΡΡΠΉ ΡΠΌΠΎΠ³ΡΡ ΡΠΎΠΎΠ±ΡΠ°ΡΡΡΡ Π»ΡΠ±ΡΠ΅ Π»ΠΎΠΊΠ°Π»ΡΠ½ΡΠ΅ ΠΏΡΠΎΡΠ΅ΡΡΡ ΠΏΡΡΡΠΌ ΡΡΠ΅Π½ΠΈΡ/Π·Π°ΠΏΠΈΡΠΈ ΠΈΠ· Π½Π΅Π³ΠΎ (ΡΠΌ. ΠΠΎΠΌΠ΅Π½Π½ΡΠΉ ΡΠΎΠΊΠ΅Ρ Unix). Π‘ΠΎΠΊΠ΅ΡΡ ΡΠΈΠΏΠ° INET Π΄ΠΎΡΡΡΠΏΠ½Ρ ΠΈΠ· ΡΠ΅ΡΠΈ ΠΈ ΡΡΠ΅Π±ΡΡΡ Π²ΡΠ΄Π΅Π»Π΅Π½ΠΈΡ Π½ΠΎΠΌΠ΅ΡΠ° ΠΏΠΎΡΡΠ°.
ΠΠ±ΡΡΠ½ΠΎ ΠΊΠ»ΠΈΠ΅Π½Ρ ΡΠ²Π½ΠΎ ΠΏΠΎΠ΄ΡΠΎΠ΅Π΄ΠΈΠ½ΡΠ΅ΡΡΡ ΠΊ ΡΠ»ΡΡΠ°ΡΠ΅Π»Ρ, ΠΏΠΎΡΠ»Π΅ ΡΠ΅Π³ΠΎ Π»ΡΠ±ΠΎΠ΅ ΡΡΠ΅Π½ΠΈΠ΅ ΠΈΠ»ΠΈ Π·Π°ΠΏΠΈΡΡ ΡΠ΅ΡΠ΅Π· Π΅Π³ΠΎ ΡΠ°ΠΉΠ»ΠΎΠ²ΡΠΉ Π΄Π΅ΡΠΊΡΠΈΠΏΡΠΎΡ Π±ΡΠ΄ΡΡ ΠΏΠ΅ΡΠ΅Π΄Π°Π²Π°ΡΡ Π΄Π°Π½Π½ΡΠ΅ ΠΌΠ΅ΠΆΠ΄Ρ Π½ΠΈΠΌ ΠΈ ΡΠ΅ΡΠ²Π΅ΡΠΎΠΌ.
ΠΡΠ½ΠΎΠ²Π½ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈΒΆ
| ΠΠ±ΡΠΈΠ΅ | |
| Socket | Π‘ΠΎΠ·Π΄Π°ΡΡ Π½ΠΎΠ²ΡΠΉ ΡΠΎΠΊΠ΅Ρ ΠΈ Π²Π΅ΡΠ½ΡΡΡ ΡΠ°ΠΉΠ»ΠΎΠ²ΡΠΉ Π΄Π΅ΡΠΊΡΠΈΠΏΡΠΎΡ |
| Send | ΠΡΠΏΡΠ°Π²ΠΈΡΡ Π΄Π°Π½Π½ΡΠ΅ ΠΏΠΎ ΡΠ΅ΡΠΈ |
| Receive | ΠΠΎΠ»ΡΡΠΈΡΡ Π΄Π°Π½Π½ΡΠ΅ ΠΈΠ· ΡΠ΅ΡΠΈ |
| Close | ΠΠ°ΠΊΡΡΡΡ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠ΅ |
| Π‘Π΅ΡΠ²Π΅ΡΠ½ΡΠ΅ | |
| Bind | Π‘Π²ΡΠ·Π°ΡΡ ΡΠΎΠΊΠ΅Ρ Ρ IP-Π°Π΄ΡΠ΅ΡΠΎΠΌ ΠΈ ΠΏΠΎΡΡΠΎΠΌ |
| Listen | ΠΠ±ΡΡΠ²ΠΈΡΡ ΠΎ ΠΆΠ΅Π»Π°Π½ΠΈΠΈ ΠΏΡΠΈΠ½ΠΈΠΌΠ°ΡΡ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ. Π‘Π»ΡΡΠ°Π΅Ρ ΠΏΠΎΡΡ ΠΈ ΠΆΠ΄Π΅Ρ ΠΊΠΎΠ³Π΄Π° Π±ΡΠ΄Π΅Ρ ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½ΠΎ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠ΅ |
| Accept | ΠΡΠΈΠ½ΡΡΡ Π·Π°ΠΏΡΠΎΡ Π½Π° ΡΡΡΠ°Π½ΠΎΠ²ΠΊΡ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ |
| ΠΠ»ΠΈΠ΅Π½ΡΡΠΊΠΈΠ΅ | |
| Connect | Π£ΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠ΅ |
socket()ΒΆ
Π‘ΠΎΠ·Π΄Π°ΡΡ ΠΊΠΎΠ½Π΅ΡΠ½ΡΡ ΡΠΎΡΠΊΡ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ ΠΈ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΡΠ°ΠΉΠ»ΠΎΠ²ΡΠΉ Π΄Π΅ΡΠΊΡΠΈΠΏΡΠΎΡ. ΠΡΠΈΠ½ΠΈΠΌΠ°Π΅Ρ ΡΡΠΈ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠ°:
domain ΡΠΊΠ°Π·ΡΠ²Π°ΡΡΠΈΠΉ ΡΠ΅ΠΌΠ΅ΠΉΡΡΠ²ΠΎ ΠΏΡΠΎΡΠΎΠΊΠΎΠ»ΠΎΠ² ΡΠΎΠ·Π΄Π°Π²Π°Π΅ΠΌΠΎΠ³ΠΎ ΡΠΎΠΊΠ΅ΡΠ°
type
protocol
ΠΡΠΎΡΠΎΠΊΠΎΠ»Ρ ΠΎΠ±ΠΎΠ·Π½Π°ΡΠ°ΡΡΡΡ ΡΠΈΠΌΠ²ΠΎΠ»ΡΠ½ΡΠΌΠΈ ΠΊΠΎΠ½ΡΡΠ°Π½ΡΠ°ΠΌΠΈ Ρ ΠΏΡΠ΅ΡΠΈΠΊΡΠΎΠΌ IPPROTO_* (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, IPPROTO_TCP ΠΈΠ»ΠΈ IPPROTO_UDP). ΠΠΎΠΏΡΡΠΊΠ°Π΅ΡΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ protocol=0 (ΠΏΡΠΎΡΠΎΠΊΠΎΠ» Π½Π΅ ΡΠΊΠ°Π·Π°Π½), Π² ΡΡΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ Π΄Π»Ρ Π΄Π°Π½Π½ΠΎΠ³ΠΎ Π²ΠΈΠ΄Π° ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠΉ.
Π€ΡΠ½ΠΊΡΠΈΡ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ β1 Π² ΡΠ»ΡΡΠ°Π΅ ΠΎΡΠΈΠ±ΠΊΠΈ. ΠΠ½Π°ΡΠ΅, ΠΎΠ½Π° Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΡΠ΅Π»ΠΎΠ΅ ΡΠΈΡΠ»ΠΎ, ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΡΡΠ΅Π΅ ΠΏΡΠΈΡΠ²ΠΎΠ΅Π½Π½ΡΠΉ Π΄Π΅ΡΠΊΡΠΈΠΏΡΠΎΡ.
Π‘Π²ΡΠ·ΡΠ²Π°Π΅Ρ ΡΠΎΠΊΠ΅Ρ Ρ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΡΠΌ Π°Π΄ΡΠ΅ΡΠΎΠΌ. ΠΠΎΠ³Π΄Π° ΡΠΎΠΊΠ΅Ρ ΡΠΎΠ·Π΄Π°Π΅ΡΡΡ ΠΏΡΠΈ ΠΏΠΎΠΌΠΎΡΠΈ socket(), ΠΎΠ½ Π°ΡΡΠΎΡΠΈΠΈΡΡΠ΅ΡΡΡ Ρ Π½Π΅ΠΊΠΎΡΠΎΡΡΠΌ ΡΠ΅ΠΌΠ΅ΠΉΡΡΠ²ΠΎΠΌ Π°Π΄ΡΠ΅ΡΠΎΠ², Π½ΠΎ Π½Π΅ Ρ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΡΠΌ Π°Π΄ΡΠ΅ΡΠΎΠΌ. ΠΠΎ ΡΠΎΠ³ΠΎ ΠΊΠ°ΠΊ ΡΠΎΠΊΠ΅Ρ ΡΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠΈΠ½ΡΡΡ Π²Ρ ΠΎΠ΄ΡΡΠΈΠ΅ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ, ΠΎΠ½ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡΡΡ ΡΠ²ΡΠ·Π°Π½ Ρ Π°Π΄ΡΠ΅ΡΠΎΠΌ. bind() ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅Ρ ΡΡΠΈ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠ°:
ΠΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ 0 ΠΏΡΠΈ ΡΡΠΏΠ΅Ρ Π΅ ΠΈ β1 ΠΏΡΠΈ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΈΠΈ ΠΎΡΠΈΠ±ΠΊΠΈ.
ΠΠ²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ΅ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΠ΅ ΠΈΠΌΠ΅Π½ΠΈ Ρ ΠΎΡΡΠ°.
listen()ΒΆ
ΠΠΎΠ΄Π³ΠΎΡΠ°Π²Π»ΠΈΠ²Π°Π΅Ρ ΠΏΡΠΈΠ²ΡΠ·ΡΠ²Π°Π΅ΠΌΡΠΉ ΡΠΎΠΊΠ΅Ρ ΠΊ ΠΏΡΠΈΠ½ΡΡΠΈΡ Π²Ρ ΠΎΠ΄ΡΡΠΈΡ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠΉ. ΠΠ°Π½Π½Π°Ρ ΡΡΠ½ΠΊΡΠΈΡ ΠΏΡΠΈΠΌΠ΅Π½ΠΈΠΌΠ° ΡΠΎΠ»ΡΠΊΠΎ ΠΊ ΡΠΈΠΏΠ°ΠΌ ΡΠΎΠΊΠ΅ΡΠΎΠ² SOCK_STREAM ΠΈ SOCK_SEQPACKET. ΠΡΠΈΠ½ΠΈΠΌΠ°Π΅Ρ Π΄Π²Π° Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠ°:
ΠΠΎΡΠ»Π΅ ΠΏΡΠΈΠ½ΡΡΠΈΡ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ ΠΎΠ½ΠΎ Π²ΡΠ²ΠΎΠ΄ΠΈΡΡΡ ΠΈΠ· ΠΎΡΠ΅ΡΠ΅Π΄ΠΈ. Π ΡΠ»ΡΡΠ°Π΅ ΡΡΠΏΠ΅Ρ Π° Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΡΡΡ 0, Π² ΡΠ»ΡΡΠ°Π΅ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΈΡ ΠΎΡΠΈΠ±ΠΊΠΈ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΡΡΡ β1.
accept()ΒΆ
ΠΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π΄Π»Ρ ΠΏΡΠΈΠ½ΡΡΠΈΡ Π·Π°ΠΏΡΠΎΡΠ° Π½Π° ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ ΠΎΡ ΡΠ΄Π°Π»Π΅Π½Π½ΠΎΠ³ΠΎ Ρ ΠΎΡΡΠ°. ΠΡΠΈΠ½ΠΈΠΌΠ°Π΅Ρ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΡ:
Π€ΡΠ½ΠΊΡΠΈΡ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ Π΄Π΅ΡΠΊΡΠΈΠΏΡΠΎΡ ΡΠΎΠΊΠ΅ΡΠ°, ΡΠ²ΡΠ·Π°Π½Π½ΡΠΉ Ρ ΠΏΡΠΈΠ½ΡΡΡΠΌ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠ΅ΠΌ, ΠΈΠ»ΠΈ β1 Π² ΡΠ»ΡΡΠ°Π΅ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΈΡ ΠΎΡΠΈΠ±ΠΊΠΈ.
connect()ΒΆ
Π£ΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅Ρ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠ΅ Ρ ΡΠ΅ΡΠ²Π΅ΡΠΎΠΌ.
ΠΠ΅ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠΈΠΏΡ ΡΠΎΠΊΠ΅ΡΠΎΠ² ΡΠ°Π±ΠΎΡΠ°ΡΡ Π±Π΅Π· ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½ΠΈΡ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ, ΡΡΠΎ Π² ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΌ ΠΊΠ°ΡΠ°Π΅ΡΡΡ UDP-ΡΠΎΠΊΠ΅ΡΠΎΠ². ΠΠ»Ρ Π½ΠΈΡ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠ΅ ΠΏΡΠΈΠΎΠ±ΡΠ΅ΡΠ°Π΅Ρ ΠΎΡΠΎΠ±ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅: ΡΠ΅Π»Ρ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ Π΄Π»Ρ ΠΏΠΎΡΡΠ»ΠΊΠΈ ΠΈ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ Π΄Π°Π½Π½ΡΡ ΠΏΡΠΈΡΠ²Π°ΠΈΠ²Π°Π΅ΡΡΡ ΠΏΠ΅ΡΠ΅Π΄Π°Π½Π½ΠΎΠΌΡ Π°Π΄ΡΠ΅ΡΡ, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠ°ΠΊΠΈΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΊΠ°ΠΊ send() ΠΈ recv() Π½Π° ΡΠΎΠΊΠ΅ΡΠ°Ρ Π±Π΅Π· ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½ΠΈΡ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ.
ΠΠ°Π³ΡΡΠΆΠ΅Π½Π½ΡΠΉ ΡΠ΅ΡΠ²Π΅Ρ ΠΌΠΎΠΆΠ΅Ρ ΠΎΡΠ²Π΅ΡΠ³Π½ΡΡΡ ΠΏΠΎΠΏΡΡΠΊΡ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ, ΠΏΠΎΡΡΠΎΠΌΡ Π² Π½Π΅ΠΊΠΎΡΠΎΡΡΡ Π²ΠΈΠ΄Π°Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΡΠ΅Π΄ΡΡΠΌΠΎΡΡΠ΅ΡΡ ΠΏΠΎΠ²ΡΠΎΡΠ½ΡΠ΅ ΠΏΠΎΠΏΡΡΠΊΠΈ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ.
ΠΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΡΠ΅Π»ΠΎΠ΅ ΡΠΈΡΠ»ΠΎ, ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΡΡΠ΅Π΅ ΠΊΠΎΠ΄ ΠΎΡΠΈΠ±ΠΊΠΈ: 0 ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ ΡΡΠΏΠ΅ΡΠ½ΠΎΠ΅ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅, Π° β1 ΡΠ²ΠΈΠ΄Π΅ΡΠ΅Π»ΡΡΡΠ²ΡΠ΅Ρ ΠΎΠ± ΠΎΡΠΈΠ±ΠΊΠ΅.
ΠΠ΅ΡΠ΅Π΄Π°ΡΠ° Π΄Π°Π½Π½ΡΡ ΒΆ
ΠΠ»Ρ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΠΈ Π΄Π°Π½Π½ΡΡ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΠΌΠΈ ΡΡΠ½ΠΊΡΠΈΡΠΌΠΈ ΡΡΠ΅Π½ΠΈΡ/Π·Π°ΠΏΠΈΡΠΈ ΡΠ°ΠΉΠ»ΠΎΠ² read ΠΈ write, Π½ΠΎ Π΅ΡΡΡ ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ Π΄Π»Ρ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΠΈ Π΄Π°Π½Π½ΡΡ ΡΠ΅ΡΠ΅Π· ΡΠΎΠΊΠ΅ΡΡ:
ΠΡΠΆΠ½ΠΎ ΠΎΠ±ΡΠ°ΡΠΈΡΡ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΡΡΠΎ ΠΏΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ ΠΏΡΠΎΡΠΎΠΊΠΎΠ»Π° TCP (ΡΠΎΠΊΠ΅ΡΡ ΡΠΈΠΏΠ° SOCK_STREAM) Π΅ΡΡΡ Π²Π΅ΡΠΎΡΡΠ½ΠΎΡΡΡ ΠΏΠΎΠ»ΡΡΠΈΡΡ ΠΌΠ΅Π½ΡΡΠ΅ Π΄Π°Π½Π½ΡΡ , ΡΠ΅ΠΌ Π±ΡΠ»ΠΎ ΠΏΠ΅ΡΠ΅Π΄Π°Π½ΠΎ, ΡΠ°ΠΊ ΠΊΠ°ΠΊ Π΅ΡΡ Π½Π΅ Π²ΡΠ΅ Π΄Π°Π½Π½ΡΠ΅ Π±ΡΠ»ΠΈ ΠΏΠ΅ΡΠ΅Π΄Π°Π½Ρ, ΠΏΠΎΡΡΠΎΠΌΡ Π½ΡΠΆΠ½ΠΎ Π»ΠΈΠ±ΠΎ Π΄ΠΎΠΆΠ΄Π°ΡΡΡΡ, ΠΊΠΎΠ³Π΄Π° ΡΡΠ½ΠΊΡΠΈΡ recv Π²ΠΎΠ·Π²ΡΠ°ΡΠΈΡ 0 Π±Π°ΠΉΡ, Π»ΠΈΠ±ΠΎ Π²ΡΡΡΠ°Π²ΠΈΡΡ ΡΠ»Π°Π³ MSG_WAITALL Π΄Π»Ρ ΡΡΠ½ΠΊΡΠΈΠΈ recv, ΡΡΠΎ Π·Π°ΡΡΠ°Π²ΠΈΡ Π΅Ρ Π΄ΠΎΠΆΠ΄Π°ΡΡΡΡ ΠΎΠΊΠΎΠ½ΡΠ°Π½ΠΈΡ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΠΈ. ΠΠ»Ρ ΠΎΡΡΠ°Π»ΡΠ½ΡΡ ΡΠΈΠΏΠΎΠ² ΡΠΎΠΊΠ΅ΡΠΎΠ² ΡΠ»Π°Π³ MSG_WAITALL Π½ΠΈΡΠ΅Π³ΠΎ Π½Π΅ ΠΌΠ΅Π½ΡΠ΅Ρ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π² UDP Π²Π΅ΡΡ ΠΏΠ°ΠΊΠ΅Ρ = ΡΠ΅Π»ΠΎΠ΅ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅).
Π ΡΡΡΠΊΠΈΠ΅ ΠΠ»ΠΎΠ³ΠΈ
ΠΡΠ½ΠΎΠ²Ρ ΡΠ΅ΡΠΈ
1, ΠΏΠ΅ΡΠ΅ΠΏΠΈΡΠΊΠ° ΠΌΠ΅ΠΆΠ΄Ρ ΠΌΠΎΠ΄Π΅Π»ΡΡ ΠΈΠ΅ΡΠ°ΡΡ ΠΈΠΈ OSI ΠΈ ΠΌΠΎΠ΄Π΅Π»ΡΡ ΠΈΠ΅ΡΠ°ΡΡ ΠΈΠΈ TCP / IP
2, ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠ°Ρ ΡΠ²ΡΠ·Ρ ΠΌΠ΅ΠΆΠ΄Ρ ΡΠ΅ΠΌΠΈΡΠ»ΠΎΠΉΠ½ΠΎΠΉ ΠΌΠΎΠ΄Π΅Π»ΡΡ ΠΈ ΡΠΎΠ³Π»Π°ΡΠ΅Π½ΠΈΠ΅ΠΌ
3, IP-Π°Π΄ΡΠ΅Ρ ΠΈ Π½ΠΎΠΌΠ΅Ρ ΠΏΠΎΡΡΠ°
1. IP-Π°Π΄ΡΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π΄Π»Ρ ΡΠ½ΠΈΠΊΠ°Π»ΡΠ½ΠΎΠΉ ΡΠ²ΡΠ·ΠΈ ΡΠ²ΡΠ·ΠΈ Π² ΡΠ΅ΡΠΈ. ΠΡΠ° ΡΡΠ±ΡΠ΅ΠΊΡΠ° ΡΠ²ΡΠ·ΠΈ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Ρ ΠΎΡΡΠΎΠΌ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΏΡΠΈΠ½ΡΠ΅Ρ ΠΈΠ»ΠΈ ΠΏΠΎΡΡ ΠΌΠ°ΡΡΡΡΡΠΈΠ·Π°ΡΠΎΡΠ°. Π ΡΠ΅ΡΠ΅Π²ΠΎΠΌ ΠΏΠ°ΠΊΠ΅ΡΠ΅ Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ IP-ΠΏΡΠΎΡΠΎΠΊΠΎΠ»Π° IP-Π°Π΄ΡΠ΅ΡΠ° Π΄ΠΎΠ»ΠΆΠ½Ρ Π±ΡΡΡ ΠΏΠΎΠΌΠ΅ΡΠ΅Π½Ρ IP-Π°Π΄ΡΠ΅ΡΠ°. IP-Π°Π΄ΡΠ΅Ρ ΠΏΠΎΡ ΠΎΠΆ Π½Π° Π·Π°ΠΏΠΈΡΡ Π±ΡΠΊΠ²Ρ, Π²Ρ Π΄ΠΎΠ»ΠΆΠ½Ρ ΡΠΊΠ°Π·Π°ΡΡ Π°Π΄ΡΠ΅Ρ ΠΏΠΎΠ»ΡΡΠ°ΡΠ΅Π»Ρ. ΠΠ΄ΠΈΠ½ ΠΈΡΡΠΎΡΠ½ΠΈΠΊ IP ΠΈ Target IP Π²ΠΊΠ»ΡΡΠ΅Π½Ρ Π² ΠΊΠ°ΠΆΠ΄ΡΠΉ ΠΏΠ΅ΡΠ΅Π΄Π°Π²Π°Π΅ΠΌΡΠΉ ΠΏΠ°ΠΊΠ΅Ρ.
2, IP-Π°Π΄ΡΠ΅Ρ ΠΎΠ΄Π½ΠΎΠ·Π½Π°ΡΠ½ΠΎ ΠΎΡΠΌΠ΅ΡΠ΅Π½ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠΌ ΡΠ²ΡΠ·ΠΈ, Π½ΠΎ ΠΎΠ±ΡΠ΅ΠΊΡ ΡΠ²ΡΠ·ΠΈ ΠΌΠΎΠΆΠ΅Ρ ΠΈΠΌΠ΅ΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ ΡΠ²ΡΠ·ΠΈ Π΄Π»Ρ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠ΅Π½ΠΈΡ ΡΠ΅ΡΠ΅Π²ΡΡ ΡΡΠ»ΡΠ³ ΠΎΠ΄Π½ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎ. Π ΡΡΠΎ Π²ΡΠ΅ΠΌΡ Π²Ρ Π΄ΠΎΠ»ΠΆΠ½Ρ ΡΠ°Π·Π»ΠΈΡΠΈΡΡ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΡΠ²ΡΠ·ΠΈ ΡΠ΅ΡΠ΅Π· ΠΏΠΎΡΡ. ΠΠ΄Π½Π° ΡΠ²ΡΠ·Ρ ΡΠ²ΡΠ·ΠΈ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ ΠΈΠΌΠ΅ΡΡ Π΄Π²Π΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΡΠ²ΡΠ·ΠΈ Π΄Π»Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈ ΡΠΎΠ³ΠΎ ΠΆΠ΅ Π½ΠΎΠΌΠ΅ΡΠ° ΠΏΠΎΡΡΠ°.
IP-Π°Π΄ΡΠ΅Ρ ΠΈ Π½ΠΎΠΌΠ΅Ρ ΠΏΠΎΡΡΠ° ΠΏΠΎΡ ΠΎΠΆΠΈ Π½Π° Π΄Π΅Π»ΠΎΠ²ΡΡ ΠΏΠΎΠ΅Π·Π΄ΠΊΡ Π² ΠΎΡΠ΅Π»Ρ. IP-Π°Π΄ΡΠ΅Ρ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΠΎΠ±ΠΎΠΉ ΠΎΡΠ΅Π»Ρ Π² ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΎΠΌ ΠΌΠ΅ΡΡΠ΅, Π° Π½ΠΎΠΌΠ΅Ρ ΠΏΠΎΡΡΠ° ΠΏΠΎΠΊΠ°Π·ΡΠ²Π°Π΅Ρ ΡΡΠΎΡ ΡΠ΅Π»ΠΎΠ²Π΅ΠΊ Π² Π½ΠΎΠΌΠ΅ΡΠ΅ Π½ΠΎΠΌΠ΅ΡΠ° ΠΎΡΠ΅Π»Ρ.
4, TCP ΠΈ UDP
ΠΠΎΡΠΊΠΎΠ»ΡΠΊΡ Π΅ΡΡΡ ΠΏΡΠΎΡΠΎΠΊΠΎΠ» TCP, ΠΊΠΎΡΠΎΡΡΠΉ Π³Π°ΡΠ°Π½ΡΠΈΡΡΠ΅Ρ Π½Π°Π΄Π΅ΠΆΠ½ΡΡ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡ, ΠΏΠΎΡΠ΅ΠΌΡ ΠΎΠ½ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡΡΡ Π½Π΅ Π½Π°Π΄Π΅ΠΆΠ½ΡΠΌ ΠΏΠ΅ΡΠ΅Π½ΠΎΡΠΎΠΌ UDP-ΠΏΡΠΎΡΠΎΠΊΠΎΠ»ΠΎΠΌ? ΠΡΡΡ Π΄Π²Π΅ ΠΏΡΠΈΡΠΈΠ½Ρ:
1. ΠΠ°Π΄Π΅ΠΆΠ½Π°Ρ ΡΡΠ°Π½ΡΠΌΠΈΡΡΠΈΡ ΡΠΎΡΡΠΎΠΈΡ Π² ΡΠΎΠΌ, ΡΡΠΎΠ±Ρ ΠΎΠΏΠ»Π°ΡΠΈΡΡ ΡΠ΅Π½Ρ, ΡΠ΅ΡΡ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎΡΡΠΈ Π΄Π°Π½Π½ΡΡ Π½Π΅ΠΈΠ·Π±Π΅ΠΆΠ½ΠΎ Π·Π°ΠΉΠΌΠ΅Ρ Π²ΡΠ΅ΠΌΡ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΠ° ΠΈ ΠΏΡΠΎΠΏΡΡΠΊΠ½ΡΡ ΡΠΏΠΎΡΠΎΠ±Π½ΠΎΡΡΡ ΡΠ΅ΡΠΈ. Π‘Π»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎ, ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎΡΡΡ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΠΈ TCP Π½Π΅ ΡΠ°ΠΊ Π²ΡΡΠΎΠΊΠΎ, ΠΊΠ°ΠΊ UDP.
2, ΠΌΠ½ΠΎΠ³ΠΈΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°ΡΡ ΡΡΡΠΎΠ³ΡΡ Π½Π°Π΄Π΅ΠΆΠ½ΠΎΡΡΡ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΠΈ, ΡΠ°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ ΡΠΈΡΡΠ΅ΠΌΡ Π²ΠΈΠ΄Π΅ΠΎΠΊΠΎΠ½ΡΠ΅ΡΠ΅Π½ΡΡΠ²ΡΠ·ΠΈ, Π½Π΅ ΡΡΠ΅Π±ΡΡΡ Π°Π±ΡΠΎΠ»ΡΡΠ½ΠΎ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΡΠΌΠΈ Π²ΠΈΠ΄Π΅ΠΎΡΡΡΡΠΎΠΉΡΡΠ²Π°ΠΌΠΈ Π²ΠΈΠ΄Π΅ΠΎΡΡΡΡΠΎΠΉΡΡΠ²Π°, Π΅ΡΠ»ΠΈ ΠΎΠ½ΠΈ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ ΡΠΎΠ³Π»Π°ΡΠΎΠ²Π°Π½Π½ΡΠΌΠΈ. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, Π² ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΠΈ Ρ ΡΡΠΈΠΌΠΈ ΡΡΠ΅Π½Π°ΡΠΈΡΠΌΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ UDP Π±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΠΈΡ.
5, URL-Π°Π΄ΡΠ΅Ρ ΠΎΠ½Π»Π°ΠΉΠ½-ΡΠ΅ΡΡΡΡΠΎΠ²
1. ΠΠ±ΡΠ΅ΠΊΡ URL ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΠΎΠ±ΠΎΠΉ Π΅Π΄ΠΈΠ½ΡΠΉ Π»ΠΎΠΊΠ°ΡΠΎΡ ΡΠ΅ΡΡΡΡΠΎΠ², ΠΊΠΎΡΠΎΡΡΠΉ ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Π΅ΠΌ Π½Π° ΠΠ½ΡΠ΅ΡΠ½Π΅Ρ Β«Π Π΅ΡΡΡΡΡΒ». ΠΡΠΎ ΠΈΠΌΡ ΠΈΠΌΠ΅Π½ΠΈ ΠΏΡΠΎΡΠΎΠΊΠΎΠ»Π°, Ρ ΠΎΡΡ, ΠΏΠΎΡΡ ΠΈ ΡΠ΅ΡΡΡΡ, ΠΊΠΎΡΠΎΡΡΠΉ ΡΠ΄ΠΎΠ²Π»Π΅ΡΠ²ΠΎΡΠ΅Π½ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ ΡΠΎΡΠΌΠ°ΡΠΎΠΌ:
2. ΠΠ΅ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΠ΅ΡΠΎΠ΄Ρ ΠΎΠ±ΡΠ΅ΠΊΡΠ° URL ΠΌΠΎΠ³ΡΡ ΠΏΠΎΠ»ΡΡΠΈΡΡ Π΄ΠΎΡΡΡΠΏ ΠΊ ΡΠ΅ΡΡΡΡΡ, ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠ΅ΠΌΡ URL:
String GetFile (): ΠΠΎΠ»ΡΡΠΈΡΡ ΠΈΠΌΡ ΡΠ΅ΡΡΡΡΠ° URL
String GetHost (): ΠΏΠΎΠ»ΡΡΠΈΡΠ΅ ΠΈΠΌΡ Ρ ΠΎΡΡΠ°
String GetPath (): ΠΏΠΎΠ»ΡΡΠΈΡΡ ΡΠ°ΡΡΡ ΠΏΡΡΠΈ
INT GetPort (): ΠΠΎΠ»ΡΡΠΈΡΡ Π½ΠΎΠΌΠ΅ΡΠ° ΠΏΠΎΡΡΠΎΠ²
ΠΠ°Π²Π°ΠΉΡΠ΅ ΠΏΠΎΡΠΌΠΎΡΡΠΈΠΌ Π½Π° Π΄Π²Π° ΡΠ°ΠΌΡΡ Π²Π°ΠΆΠ½ΡΡ ΠΌΠ΅ΡΠΎΠ΄Π° URL: openConnection()γ openStream()
6γInetAddress
Java ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ ΠΊΠ»Π°ΡΡ INETADDRESS ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ IP-Π°Π΄ΡΠ΅Ρ.
ΠΠ΅ΡΠ°Π»ΠΈ ΡΠΎΠΊΠ΅ΡΠ°
Π Π°Π·ΡΠ΅ΠΌ ΡΠ°ΠΊΠΆΠ΅ ΠΈΠ·Π²Π΅ΡΡΠ΅Π½ ΠΊΠ°ΠΊ ΡΠΎΠΊΠ΅Ρ, ΠΊΠΎΡΠΎΡΡΠΉ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΊΠΎΠ½Π΅ΡΠ½ΠΎΠΉ ΡΠΎΡΠΊΠΎΠΉ, ΠΊΠΎΡΠΎΡΠ°Ρ ΡΠΎΠ΅Π΄ΠΈΠ½ΡΠ΅Ρ Π΄Π²ΡΡΡΠΎΡΠΎΠ½Π½ΡΡ ΡΠ²ΡΠ·Ρ ΠΌΠ΅ΠΆΠ΄Ρ Π΄Π²ΡΠΌΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ°ΠΌΠΈ Π² ΡΠ΅ΡΠΈ.
ΠΠΎ-ΠΏΠ΅ΡΠ²ΡΡ , ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ ΡΠΎΠΊΠ΅Ρ Π΄Π»Ρ ΡΠ²ΡΠ·ΠΈ ΠΎΠ±ΡΠ΅Π½ΠΈΡ ΡΠ΅ΡΠΈ
Π‘Π΅ΡΠ²Π΅Ρ: Π‘Π΅ΡΠ²Π΅ΡΠ½Π°Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° ΡΠ²ΡΠ·ΡΠ²Π°Π΅Ρ ΡΠ°Π·ΡΠ΅ΠΌ ΠΊ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠΌΡ ΠΏΠΎΡΡΡ ΠΈ ΠΆΠ΄Π΅Ρ ΠΈ ΡΠ»ΡΡΠ°Π΅Ρ Π½Π° Π·Π°ΠΏΡΠΎΡΠ΅ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ ΠΊΠ»ΠΈΠ΅Π½ΡΠ° ΡΠ΅ΡΠ΅Π· ΡΡΠΎΡ ΡΠΎΠΊΠ΅Ρ.
ΠΠ»ΠΈΠ΅Π½Ρ: ΠΊΠ»ΠΈΠ΅Π½ΡΡΠΊΠ°Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° Π²ΡΠ΄Π°Π΅Ρ Π·Π°ΠΏΡΠΎΡ Π½Π° ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠ΅ Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ ΠΈΠΌΠ΅Π½ΠΈ Ρ ΠΎΡΡΠ° ΠΈ Π½ΠΎΠΌΠ΅ΡΠ° ΠΏΠΎΡΡΠ°, Π² ΠΊΠΎΡΠΎΡΠΎΠΌ Π½Π°Ρ ΠΎΠ΄ΠΈΡΡΡ Π²Π°Ρ ΡΠ΅ΡΠ²Π΅Ρ.
ΠΡΠΈΠΌΠ΅Ρ ΡΠ²ΡΠ·ΠΈ ΡΠΎΠΊΠ΅ΡΠ°
ΠΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΡΠ²ΡΠ·ΠΈ Ρ ΠΎΡΡΠ° A ΠΈ Host B Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°ΡΡ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠ΅ ΡΠ΅ΡΠ΅Π· ΡΠΎΠΊΠ΅Ρ, Π° ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ ΡΠΎΠΊΠ΅ΡΠ° Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±ΡΡΡ ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½ΠΎ Π±Π°Π·ΠΎΠ²ΡΠΌ ΠΏΡΠΎΡΠΎΠΊΠΎΠ»ΠΎΠΌ TCP / IP Π΄Π»Ρ ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½ΠΈΡ TCP-ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠΉ. Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ TCP ΡΡΠ΅Π±ΡΠ΅Ρ Π±Π°Π·ΠΎΠ²ΠΎΠ³ΠΎ ΠΏΡΠΎΡΠΎΠΊΠΎΠ»Π° IP-Π°Π΄ΡΠ΅ΡΠ° Π΄Π»Ρ ΡΠ΅ΡΠ΅Π½ΠΈΡ Ρ ΠΎΡΡΠ° Π² ΡΠ΅ΡΠΈ. IP-Π°Π΄ΡΠ΅ΡΠ° ΠΌΠΎΠ³ΡΡ ΠΏΠΎΠΌΠΎΡΡ Π½Π°ΠΌ ΡΠΎΠ»ΡΠΊΠΎ Π½Π°ΠΉΡΠΈ ΡΠ΅Π»Π΅Π²ΡΠ΅ Ρ ΠΎΡΡΡ, Π½ΠΎ Π΅ΡΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π½Π° Ρ ΠΎΡΡΠ΅, ΠΊΠ°ΠΊ ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ Π½Π°ΠΉΡΠΈ Π½ΡΠΆΠ½ΡΡ Π½Π°ΠΌ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, Π² ΡΡΠΎ Π²ΡΠ΅ΠΌΡ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΠΊΠ°Π·Π°ΡΡ Π΅Π³ΠΎ ΡΠ΅ΡΠ΅Π· Π½ΠΎΠΌΠ΅Ρ ΠΏΠΎΡΡΠ°. ΠΡΡΡ
ΠΠΎ-Π²ΡΠΎΡΡΡ , ΠΏΡΠΎΡΡΠΎΠΉ ΡΠ΅ΡΠ²Π΅Ρ, ΡΠΈΠΌΡΠ»ΡΡΠΈΡ ΠΊΠ»ΠΈΠ΅Π½ΡΠ°
ΠΠ΄ΡΠ°Π²ΡΡΠ²ΡΠΉΡΠ΅, Π²Ρ ΠΏΠΎΠ»ΡΡΠΈΠ»ΠΈ ΡΠ΅ΡΡΠΈΠ²Π°Π»Ρ Ching Ming Blessing Ρ ΡΠ΅ΡΠ²Π΅ΡΠ°
1. ΠΡΡΠ΅ΡΠΊΠ°Π·Π°Π½Π½ΠΎΠ΅ ΡΠΎΡ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΠΎΠ±ΠΎΠΉ ΠΏΡΠΎΡΡΠΎΠΉ ΡΠ΅ΡΠ²Π΅Ρ ΠΈ ΠΏΡΠΎΡΠ΅ΡΡ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΠΊΠ»ΠΈΠ΅Π½ΡΠ°.
2, ΠΌΡ ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΠΎ ΠΏΡΠ΅Π΄ΡΡΠ°Π²ΠΈΠΌ ΡΡΠΎΡ ΠΏΡΠΎΡΠ΅ΡΡ, Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΡΡ:
3. ΠΠΎ-ΠΏΠ΅ΡΠ²ΡΡ , Π½Π° ΡΡΠΎΡΠΎΠ½Π΅ ΡΠ΅ΡΠ²Π΅ΡΠ° ΡΠΊΠ°ΠΆΠΈΡΠ΅ Π½ΠΎΠΌΠ΅Ρ ΠΏΠΎΡΡΠ° Π΄Π»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΠΎΠ±ΡΠ΅ΠΊΡΠ° ΡΠ΅ΡΠ²Π΅ΡΠ°, ΠΏΠΎΠ»ΡΡΠΈΡΠ΅ ΡΠΎΠΊΠ΅Ρ ΡΠ΅ΡΠ΅Π· ΠΌΠ΅ΡΠΎΠ΄ Accpet Serversocket, ΡΡΠΎΡ ΠΌΠ΅ΡΠΎΠ΄:ΠΡΠΎΡΠ»ΡΡΠΈΠ²Π°Π½ΠΈΠ΅ ΠΈ ΠΏΡΠΈΠ½ΡΡΠΈΠ΅ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ ΡΡΠΎΠ³ΠΎ ΡΠΎΠΊΠ΅ΡΠ°, ΡΡΠΎΡ ΠΌΠ΅ΡΠΎΠ΄ Π·Π°Π±Π»ΠΎΠΊΠΈΡΠΎΠ²Π°Π½ Π΄ΠΎ ΡΠ΅Ρ ΠΏΠΎΡ, ΠΏΠΎΠΊΠ° ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠ΅ Π½Π΅ Π²ΠΊΠ»ΡΡΠ΅Π½ΠΎ.ΠΡΠΎ ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ, ΡΡΠΎ Π΅ΡΠ»ΠΈ Π½Π΅Ρ Π·Π°ΠΏΡΠΎΡΠ° ΠΊΠ»ΠΈΠ΅Π½ΡΡΠΊΠΎΠ³ΠΎ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ, ΡΠ΅ΡΠ²ΠΈΡ Π±ΡΠ΄Π΅Ρ Π·Π°Π±Π»ΠΎΠΊΠΈΡΠΎΠ²Π°Π½ Π·Π΄Π΅ΡΡ.
4, ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ ΠΊΠΎΠ΄ ΡΠΎΡΡΠΎΠΈΡ Π² ΡΠΎΠΌ, ΡΡΠΎΠ±Ρ ΠΏΠΎΠ»ΡΡΠΈΡΡ Π²Ρ ΠΎΠ΄Π½ΠΎΠΉ ΠΈ Π²ΡΡ ΠΎΠ΄Π½ΠΎΠΉ ΠΏΠΎΡΠΎΠΊ ΡΠ΅ΡΠ΅Π· ΡΠΎΠ·Π΅ΡΠΊΡ ΡΠΎΠΊΠ΅ΡΠ°, ΠΏΠΎΠΊΠ° ΡΡΠΎ Π½Π΅ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ΅ Π²Π²ΠΎΠ΄Π° / ΠΎ.
5. ΠΠ° ΠΊΠ»ΠΈΠ΅Π½ΡΠ΅, ΡΠ΅ΡΠ΅Π· Π½ΠΎΠΌΠ΅Ρ ΠΏΠΎΡΡΠ° ΡΠΊΠ°Π·Π°Π½Π½ΠΎΠ³ΠΎ ΠΈΠΌΠ΅Π½ΠΈ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΠΈ ΡΠ΅ΡΠ²Π΅ΡΠ° ΠΈ ΡΠ΅ΡΠ²Π΅ΡΠ°, ΠΏΡΠΎΡΠ»ΡΡΠΈΠ²Π°ΡΡΠ΅Π³ΠΎ Π½ΠΎΠΌΠ΅Ρ ΡΠΎΠΊΠ΅ΡΠ°, Π²Ρ ΠΏΠΎΠ»ΡΡΠ°Π΅ΡΠ΅ ΡΠ°Π·ΡΠ΅ΠΌ ΡΠΎΠΊΠ΅ΡΠ°, Π½Π° ΡΡΠΎΡ ΡΠ°Π· ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠ΅ ΡΠΆΠ΅ ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½ΠΎ, Π° Π·Π°ΡΠ΅ΠΌ ΡΠ²ΡΠ·ΡΠ²Π°Π΅ΡΡΡ Ρ Π²ΡΡ ΠΎΠ΄Π½ΡΠΌ ΠΏΠΎΡΠΎΠΊΠΎΠΌ.
Π’ΡΠΈ, ΠΏΠΎΠ»ΠΎΠ²ΠΈΠ½Π° Π·Π°ΠΊΡΡΡΠΈΡ ΡΠΎΠ·Π΅ΡΠΊΠΈ
Π Π΄Π΅ΠΌΠΎΡΡΠ΅ΡΠ΅ Π΄Π΅ΠΌΠΎΠ½ΡΡΡΠ°ΡΠΈΡ ΠΌΡ Π½Π°Ρ ΠΎΠ΄ΠΈΠΌΡΡ Π² ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΠΈ Ρ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡΠ½ΡΠΌ Π±Π»ΠΎΠΊΠΎΠΌ Π΄Π°Π½Π½ΡΡ , ΠΊΠΎΡΠΎΡΡΠΉ ΡΠ²ΡΠ·ΡΠ²Π°Π΅ΡΡΡ, ΡΡΠΎΡΠΎΠ½Π° ΡΠ΅ΡΠ²Π΅ΡΠ° ΡΠ°ΠΊΠΆΠ΅ ΠΏΡΠΎΠ³ΡΠ΅ΡΡΠΈΡΡΠ΅Ρ. ΠΠΎ Π² Π±ΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²Π΅ ΡΡΠ΅Π½ Π±Π»ΠΎΠΊΠ° ΠΏΠ΅ΡΠ΅Π΄Π°ΡΠΈ Π΄Π°Π½Π½ΡΡ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΌΠ½ΠΎΠ³ΠΎΡΡΡΠΎΡΠ½ΠΎΠΉ. Π ΡΡΠΎ Π²ΡΠ΅ΠΌΡ, ΠΊΠ°ΠΊ Π²ΡΠ²ΠΎΠ΄ Π²ΡΠ²ΠΎΠ΄Π° Socket Express Express Add Repeate Data Leafe?
Π ΠΏΡΠΎΡΠ΅ΡΡΠ΅ ΠΎΠ±ΡΡΠ΅Π½ΠΈΡ IO, Π΅ΡΠ»ΠΈ Π²ΡΠ²ΠΎΠ΄ Π±ΡΠ» Π·Π°Π²Π΅ΡΡΠ΅Π½, ΠΎΠ½ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ ΠΏΡΡΠ΅ΠΌ Π²ΡΠΊΠ»ΡΡΠ΅Π½ΠΈΡ Π²ΡΡ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΏΠΎΡΠΎΠΊΠ°, Π½ΠΎ Π² ΡΠΎΠ·Π΅ΡΠΊΠ΅ ΡΡΠΎ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ ΡΠΎΠ·Π΅ΡΠΊΠ° Π²ΡΠΊΠ»ΡΡΠ°Π΅ΡΡΡ, ΠΎΠ½ Π±ΠΎΠ»ΡΡΠ΅ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ ΡΠΈΡΠ°ΡΡ Π΄Π°Π½Π½ΡΠ΅ ΠΈΠ· ΡΠΎΠ·Π΅ΡΠΊΠΈ ΠΡΠΊΠ°Π· Π§ΡΠΎΠ±Ρ ΡΠ΅ΡΠΈΡΡ ΡΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ, Java ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ Π΄Π²Π° ΠΏΠΎΠ»ΡΠ·Π°ΠΊΡΡΡΡΡ ΠΌΠ΅ΡΠΎΠ΄Π°:
1. ShutDownInPUT (): ΠΠ°ΠΊΡΠΎΠΉΡΠ΅ Π²Ρ ΠΎΠ΄Π½ΠΎΠΉ ΠΏΠΎΡΠΎΠΊ ΡΠΎΠΊΠ΅ΡΠ°, ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° ΡΠ°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ Π²ΡΠ²ΠΎΠ΄ΠΈΡΡ Π΄Π°Π½Π½ΡΠ΅ ΡΠ΅ΡΠ΅Π· Π²ΡΡ ΠΎΠ΄Π½ΠΎΠΉ ΠΏΠΎΡΠΎΠΊ ΡΠΎΠΊΠ΅ΡΠ°.
2, ShutDownOutput (): Π²ΠΊΠ»ΡΡΠ°Π΅Ρ Π²ΡΡ ΠΎΠ΄Π½ΠΎΠΉ ΠΏΠΎΡΠΎΠΊ ΡΠΎΠΊΠ΅ΡΠ°, ΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° ΡΠ°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠΎΡΠΈΡΠ°ΡΡ Π΄Π°Π½Π½ΡΠ΅ ΠΏΠΎ Π²Ρ ΠΎΠ΄Π½ΡΠΌ ΠΏΠΎΡΠΎΠΊΠΎΠΌ ΡΠΎΠ·Π΅ΡΠΊΠΈ.
ΠΡΠ»ΠΈ ΠΌΡ Π²ΡΠ·ΡΠ²Π°Π΅ΠΌ ΠΌΠ΅ΡΠΎΠ΄Ρ ShutWornput ΠΈ ShutWordutput Π΄Π»Ρ ΡΠΎΠ³ΠΎ ΠΆΠ΅ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΠ° ΡΠΎΠΊΠ΅ΡΠ°, ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡ ΡΠΎΠΊΠ΅ΡΠ° Π²ΡΠ΅ Π΅ΡΠ΅ Π½Π΅ Π²ΡΠΊΠ»ΡΡΠ΅Π½, ΠΏΡΠΎΡΡΠΎ ΡΠ°Π·ΡΠ΅ΠΌ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ Π½ΠΈ Π²ΡΠ²ΠΎΠ΄ΠΈΡΡ Π΄Π°Π½Π½ΡΠ΅, Π»ΠΈΠ±ΠΎ Π΄Π°Π½Π½ΡΠ΅ Ρ ΡΡΠ΅Π½ΠΈΠ΅ΠΌ.
ΠΠ°ΠΊ Π²ΠΈΠ΄Π½ΠΎ Π² ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ΅ Server-Side, ΠΏΠΎΡΠ»Π΅ Π²ΡΠ²ΠΎΠ΄Π° Π΄Π²ΡΡ ΡΡΡΡΠ½ Π²ΡΠ²ΠΎΠ΄ΠΈΡΡΡ ΠΌΠ΅ΡΠΎΠ΄ ShutDownOutput, ΡΡΠΎ ΡΠΊΠ°Π·ΡΠ²Π°Π΅Ρ Π½Π° ΡΠΎ, ΡΡΠΎ Π²ΡΠ²ΠΎΠ΄ ΠΎΠΊΠΎΠ½ΡΠ΅Π½. Π’ΠΎΠ³Π΄Π° Ρ ΡΡΠ°Π·Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΠ», Π±ΡΠ» Π»ΠΈ ΡΠΎΠ·Π΅ΡΠΊΠ° Π²ΡΠΊΠ»ΡΡΠ΅Π½Π°, ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ Π±ΡΠ» Π»ΠΎΠΆΠ½ΡΠΌ, ΡΡΠΎ ΡΠΊΠ°Π·ΡΠ²Π°Π΅Ρ Π½Π° ΡΠΎ, ΡΡΠΎ ΡΠΎΠ·Π΅ΡΠΊΠ° Π½Π΅ Π±ΡΠ»Π° Π·Π°ΠΊΡΡΡΠ°.
ΠΠ΄Π½Π°ΠΊΠΎ ΠΏΠΎΡΠ»Π΅ Π²ΡΠ·ΠΎΠ²Π° Π΄Π²ΡΡ ΠΏΠΎΠ»ΡΠ·Π°ΡΠΈΡΠ½ΡΡ ΡΠΏΠΎΡΠΎΠ±ΠΎΠ² Π²ΡΠΊΠ»ΡΡΠΈΡΡ Π²ΡΡ ΠΎΠ΄Π½ΠΎΠΉ Π²Ρ ΠΎΠ΄Π½ΠΎΠΉ ΠΏΠΎΡΠΎΠΊ, ΡΠΎΠΊΠ΅Ρ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ ΠΎΡΠΊΡΡΡΡ Π²ΡΡ ΠΎΠ΄Π½ΠΎΠΉ ΠΏΠΎΡΠΎΠΊ ΠΈΠ»ΠΈ ΡΠ½ΠΎΠ²Π° Π²Ρ ΠΎΠ΄Π½ΠΎΠΉ ΠΏΠΎΡΠΎΠΊ. Π‘Π»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎ, ΡΡΠ° ΡΡΠ΅Π½Π° Π½Π΅ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΠΈΡ Π΄Π»Ρ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΡ ΠΏΠΎΡΡΠΎΡΠ½Π½ΠΎΠ³ΠΎ ΠΎΠ±ΡΠ΅Π½ΠΈΡ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΏΡΠΎΡΠΎΠΊΠΎΠ» HTTP: ΠΏΠΎΡΠ»Π΅ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ ΠΊΠ»ΠΈΠ΅Π½ΡΠ° Π½Π° ΡΠ΅ΡΠ²Π΅ΡΠ΅ Π½Π°ΡΠ½ΠΈΡΠ΅ ΠΎΡΠΏΡΠ°Π²Π»ΡΡΡ Π΄Π°Π½Π½ΡΠ΅, Π½Π΅Ρ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΠΈ ΠΎΡΠΏΡΠ°Π²Π»ΡΡΡ Π΄Π°Π½Π½ΡΠ΅ ΠΏΠΎΡΠ»Π΅ ΠΎΡΠΏΡΠ°Π²ΠΊΠΈ, ΡΠΎΠ»ΡΠΊΠΎ Π½ΡΠΆΠ½ΠΎ ΡΠΎΠ»ΡΠΊΠΎ ΠΏΡΠΎΡΠΈΡΠ°ΡΡ ΡΠ΅ΡΠ²Π΅Ρ ΠΡΠ²Π΅ΡΠ°Π΅Ρ Π½Π° Π΄Π°Π½Π½ΡΠ΅. ΠΠΎΡΠ»Π΅ ΠΏΡΠΎΡΡΠ΅Π½ΠΈΡ Π΄Π°Π½Π½ΡΡ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠ΅ ΡΠΎΠΊΠ΅ΡΠ° ΡΠ°ΠΊΠΆΠ΅ Π·Π°ΠΊΡΡΠ²Π°Π΅ΡΡΡ.
Π-ΡΠ΅ΡΠ²Π΅ΡΡΡΡ , ΡΠ΅ΡΠ΅Π²ΠΎΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ ΠΏΡΠΎΡΠΎΠΊΠΎΠ»Π° UDP
ΠΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠΎΠ·Π΅ΡΠΊΠΈ ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠ΅Π³ΠΎ Π²Π²Π΅Π΄Π΅Π½ΠΈΡ ΠΎΡΠ½ΠΎΠ²Π°Π½ΠΎ Π½Π° ΠΏΡΠΎΡΠΎΠΊΠΎΠ»Π΅ TCP, ΠΈ ΡΠ΅ΠΏΠ΅ΡΡ ΠΏΡΠΎΡΠΎΠΊΠΎΠ» UDP ΡΠ΅ΠΏΠ΅ΡΡ Π·Π°ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½, Π° ΡΠ°Π·Π»ΠΈΡΠΈΡ ΠΌΠ΅ΠΆΠ΄Ρ TCP ΠΈ UDP ΡΠΆΠ΅ Π²Π²Π΅Π΄Π΅Π½Ρ Π² ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠ΅ΠΉ Π³Π»Π°Π²Π΅.
1. ΠΠΎ-ΠΏΠ΅ΡΠ²ΡΡ , Π² ΡΠ΅ΡΠ΅Π²ΠΎΠΌ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΠΈ Π½Π΅Ρ ΡΠ΅ΡΠ²Π΅ΡΠ° ΠΈ ΠΊΠ»ΠΈΠ΅Π½ΡΠ° Π² ΡΠ΅ΡΠ΅Π²ΠΎΠΌ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΠΈ UDP. ΠΠ΅Ρ Π²ΠΈΡΡΡΠ°Π»ΡΠ½ΠΎΠΉ ΡΠ²ΡΠ·ΠΈ ΠΌΠ΅ΠΆΠ΄Ρ Π΄Π²ΡΠΌΡ ΡΠΎΠ·Π΅ΡΠΊΠ°ΠΌΠΈ, ΠΏΡΠΎΡΡΠΎ ΠΏΠΎΠ»ΡΡΠ°ΡΡ ΠΈ ΠΎΡΠΏΡΠ°Π²Π»ΡΡΡ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ Π΄Π°Π½Π½ΡΡ .
2, Π² ΡΡΠΎΠΌ Π΅ΡΡΡ Π΄Π²Π° Π²Π°ΠΆΠ½ΡΡ ΠΊΠ»Π°ΡΡΠ°: Datagramsocket ΠΈ DataGrampacket. ΠΠ΅ΡΠ²ΡΠΉ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π΄Π»Ρ ΠΎΡΠΏΡΠ°Π²ΠΊΠΈ ΠΈ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ ΡΠΎΠ·Π΅ΡΠΊΠΈ ΠΏΠ°ΠΊΠ΅ΡΠ°, ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΠΉ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΠΎΠ±ΠΎΠΉ ΠΏΠ°ΠΊΠ΅Ρ, ΠΊΠ°ΠΆΠ΄ΠΎΠ΅ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ ΠΌΠ°ΡΡΡΡΡΠΈΡΡΠ΅Ρ ΠΈΠ· ΠΎΠ΄Π½ΠΎΠΉ ΠΌΠ°ΡΠΈΠ½Ρ Π² ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΠΈ Ρ Π²ΠΊΠ»ΡΡΠ΅Π½Π½ΠΎΠΉ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠ΅ΠΉ Π² ΠΏΠ°ΠΊΠ΅ΡΠ΅.
3, Π΄Π²Π° ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΠ° Datagramsocket:
Datagramsocket (): Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Π΄Π°Π½Π½ΡΡ ΠΎΡΠ΅Π΄Π°Π΅Ρ ΠΈ ΡΠ²ΡΠ·ΡΠ²Π°Π΅Ρ ΠΈΡ Ρ Π»ΡΠ±ΡΠΌΠΈ Π΄ΠΎΡΡΡΠΏΠ½ΡΠΌΠΈ ΠΏΠΎΡΡΠ°ΠΌΠΈ Π½Π° Π»ΠΎΠΊΠ°Π»ΡΠ½ΠΎΠΌ Ρ ΠΎΡΡΠ΅.
DatagramSocket(INT PORT): Π‘ΠΎΠ·Π΄Π°ΠΉΡΠ΅ ΡΠ°ΡΡΠ΅Ρ Π΄Π°Π½Π½ΡΡ ΠΈ ΡΠ²ΡΠΆΠΈΡΠ΅ΡΡ Ρ ΡΠΊΠ°Π·Π°Π½Π½ΡΠΌ ΠΏΠΎΡΡΠΎΠΌ Π½Π° Π»ΠΎΠΊΠ°Π»ΡΠ½ΠΎΠΌ Ρ ΠΎΡΡΠ΅.
Π Π½Π°ΡΠ΅ΠΉ Π΄Π΅ΠΌΠΎΠ½ΡΡΡΠ°ΡΠΈΠΈ ΠΊΠ»Π°ΡΡ UDPSERVERTEST ΠΎΡΠΏΡΠ°Π²Π»ΡΠ΅Ρ Π΄Π΅ΠΉΡΠ°Π³ΡΠ°ΠΌΠΌΡ Π² ΠΊΠ»Π°ΡΡΠ΅ UDPSTESTEST, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ Π½Π΅ΠΉΡΡΠ°Π»ΡΠ½ΡΠΉ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡ ΡΠΎΠ·Π΅ΡΠΊΠΈ, Π° DataGram ΠΏΠΎΠ»ΡΡΠ΅Π½ ΠΏΠ΅ΡΠ²ΡΠΌ Π² ΠΊΠ»Π°ΡΡΠ΅ UDPClientTest, ΠΈ Π²Ρ Π΄ΠΎΠ»ΠΆΠ½Ρ ΡΠ»ΡΡΠ°ΡΡ ΠΏΠΎΡΡ, ΡΠ°ΠΊ ΡΡΠΎ ΡΡΠΎ ΡΠΎΠΊΠ΅Ρ. ΠΡΡΡ Π‘ΠΏΡΠ°Π²ΠΎΡΠ½ΠΎΠ΅ ΡΡΡΡΠΎΠΉΡΡΠ²ΠΎ.
4γDatagagrampacket: Π΄Π²Π° Π²ΠΈΠ΄Π° ΠΏΡΠΈΠ΅ΠΌΠ° ΠΈ ΠΎΡΠΏΡΠ°Π²ΠΊΠΈ ΠΏΡΠΈ ΡΠΎΠ·Π΄Π°Π½ΠΈΠΈ
DatagramPacket(BYTE [] BUF, INT ΠΠ»ΠΈΠ½Π°): ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π΄Π»Ρ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ Π΄Π»ΠΈΠ½Ρ length ΠΠ°ΠΊΠ΅Ρ.
DatagramPacket(byte[] buf, int length, InetAddressΠΠ΄ΡΠ΅Ρ, INT PORT): ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π΄Π»Ρ Π΄ΠΎΡΡΠ°Π²ΠΊΠΈ Π΄Π»ΠΈΠ½Ρ length ΠΠ°ΠΊΠ΅Ρ ΠΎΡΠΏΡΠ°Π²Π»ΡΠ΅ΡΡΡ Π½Π° ΡΠΊΠ°Π·Π°Π½Π½ΡΠΉ Π½ΠΎΠΌΠ΅Ρ ΠΏΠΎΡΡΠ° Π½Π° ΡΠΊΠ°Π·Π°Π½Π½ΠΎΠΌ Ρ ΠΎΡΡΠ΅.
1. Π ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΉ Π²ΡΡΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ΅ ΠΏΠ΅ΡΠ²ΡΠΉ ΡΠ°Π³ ΡΠΎΡΡΠΎΠΈΡ Π² ΡΠΎΠΌ, ΡΡΠΎΠ±Ρ ΡΠΎΠ·Π΄Π°ΡΡ ΡΠ°Π·ΡΠ΅ΠΌ UDP Π½Π° ΡΡΠΎΡΠΎΠ½Π΅ ΡΠ΅ΡΠ²Π΅ΡΠ° (Π²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎ ΠΎΡΠ»ΠΈΡΠΈΡΡ ΡΡΠΈ Π΄Π²Π° ΠΊΠ»Π°ΡΡΠ°).ΠΠ΅Π· ΡΠΊΠ°Π·Π°Π½Π½ΠΎΠ³ΠΎ ΠΏΠΎΡΡΠ° ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ Π²ΡΠ΄Π΅Π»Π΅Π½Π½ΡΠΉ ΠΏΠΎΡΡ. ΠΠ°ΡΠ΅ΠΌ ΠΏΠΎΡΡΡΠΎΠ΅Π½ ΠΏΠ°ΠΊΠ΅Ρ, Π° Π½ΠΎΠΌΠ΅Ρ IP ΠΈ ΠΏΠΎΡΡΠ° ΡΠ΅Π»Π΅Π²ΠΎΠΉ ΠΌΠ°ΡΠΈΠ½Ρ ΡΠΊΠ°Π·Π°Π½Ρ Π² ΠΏΠ°ΠΊΠ΅ΡΠ΅.
2. Π ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΊΠ»ΠΈΠ΅Π½ΡΠ° ΡΠΎΠ·Π΄Π°ΠΉΡΠ΅ ΡΠ°Π·ΡΠ΅ΠΌ UDP ΠΈ ΡΠ²ΡΠΆΠΈΡΠ΅ ΠΏΠΎΡΡ. ΠΡΠ»ΠΈ Π²Ρ Ρ ΠΎΡΠΈΡΠ΅ ΠΏΠΎΠ»ΡΡΠΈΡΡ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅, ΠΎΡΠΏΡΠ°Π²Π»Π΅Π½Π½ΠΎΠ΅ Π½Π° ΡΠ΅ΡΠ²Π΅ΡΠ΅, ΠΏΠΎΡΡ ΡΠ²ΡΠ·ΠΊΠΈ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΎΠ²Π°ΡΡ ΠΏΠΎΡΡΡ, ΡΠΊΠ°Π·Π°Π½Π½ΠΎΠΌΡ Π² ΠΏΠ°ΠΊΠ΅ΡΠ΅, ΠΎΡΠΏΡΠ°Π²Π»Π΅Π½Π½ΠΎΠΌ ΡΠ΅ΡΠ²Π΅ΡΡ.
3. ΠΠΎΡΠ»Π΅ ΡΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ ΠΊΠ»ΠΈΠ΅Π½Ρ ΡΠ°ΡΠΏΠ΅ΡΠ°ΡΠ°Π΅Ρ ΠΊΠΎΠ½ΡΠ΅Π½Ρ Π² ΠΏΠ°ΠΊΠ΅ΡΠ΅, Π²Ρ Ρ ΠΎΡΠΈΡΠ΅ Π²Π΅ΡΠ½ΡΡΡ ΠΊΠΎΠ½ΡΠ΅Π½Ρ. Π ΡΡΠΎ Π²ΡΠ΅ΠΌΡ Π½ΠΎΠΌΠ΅ΡΠ° IP ΠΈ ΠΏΠΎΡΡ ΡΠ΅ΡΠ²Π΅ΡΠ° ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ ΠΏΠΎΠ»ΡΡΠ΅Π½Ρ ΠΈΠ· ΡΠ°Π½Π΅Π΅ ΠΎΡΠΏΡΠ°Π²Π»Π΅Π½Π½ΡΡ ΠΏΠ°ΠΊΠ΅ΡΠΎΠ².
DatagramPacket packet2 = new DatagramPacket(str2.getBytes(), str2.length(), packet.getAddress(), packet.getPort());
4. ΠΠΎΠ³Π΄Π° ΡΠ΅ΡΠ²Π΅Ρ ΠΏΠΎΠ»ΡΡΠ°Π΅Ρ ΠΏΠ°ΠΊΠ΅Ρ, Π΅Π³ΠΎ Π±ΠΎΠ»ΡΡΠ΅ Π½Π΅ Π½ΡΠΆΠ½ΠΎ ΡΠ²ΡΠ·ΡΠ²Π°ΡΡΡΡ Ρ ΠΊΠ»ΠΈΠ΅Π½ΡΠΎΠΌ Π΄Π»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΡΠΎΠΊΠ΅ΡΠ°, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΠΏΠΎΡΡ, ΡΠΊΠ°Π·Π°Π½Π½ΡΠΉ Π² ΠΏΠΎΡΡΡ, Π² Π½Π°ΡΡΠΎΡΡΠ΅Π΅ Π²ΡΠ΅ΠΌΡ ΠΏΡΠΎΡΠ»ΡΡΠΈΠ²Π°Π΅ΡΡΡ Π² ΠΏΠΎΡΡ, ΡΠΊΠ°Π·Π°Π½Π½ΠΎΠΌ Π² ΠΏΠ°ΠΊΠ΅ΡΠ΅.
ΠΠ΄Π΅ ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅Ρ Π΄Π΅ΠΉΡΠ°Π³ΡΠ°ΠΌΡΠ΅ΠΊΠ΅ΡDatagramPacketP) ΠΌΠ΅ΡΠΎΠ΄ Π±ΡΠ» Π·Π°Π±Π»ΠΎΠΊΠΈΡΠΎΠ²Π°Π½ Π΄ΠΎ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ ΠΏΠ°ΠΊΠ΅ΡΠ°.






