ΠΊΠ°ΠΊΠΈΠ΅ Π²ΠΈΠ΄Ρ‹ сокСтов Π΅ΡΡ‚ΡŒ Π² 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 ΠΈΠΌΠ΅Π΅Ρ‚ Ρ‡Π΅Ρ‚Ρ‹Ρ€Π΅ конструктора:

β„–ΠšΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ‚ΠΎΡ€ ΠΈ описаниС
1public ServerSocket(int port) throws IOException
ΠŸΠΎΠΏΡ‹Ρ‚ΠΊΠΈ создания сСрвСрного сокСта, связанного с ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹ΠΌ ΠΏΠΎΡ€Ρ‚ΠΎΠΌ. Π˜ΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ происходит, Ссли ΠΏΠΎΡ€Ρ‚ ΡƒΠΆΠ΅ связан Π΄Ρ€ΡƒΠ³ΠΈΠΌ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌ.
2public ServerSocket(int port, int backlog) throws IOException
Как ΠΈ Π² ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅ΠΌ конструкторС, ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ backlog ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚, сколько входящих ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΎΠ² Π½ΡƒΠΆΠ½ΠΎ ΡΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ Π² ΠΎΡ‡Π΅Ρ€Π΅Π΄ΠΈ оТидания.
3public ServerSocket(int port, int backlog, InetAddress address) throws IOException
Как ΠΈ Π² ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅ΠΌ конструкторС, ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ InetAddress ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΉ IP-адрСс для осущСствлСния привязки. InetAddress ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π² сСрвСрах, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ нСсколько IP-адрСсов, Ρ‡Ρ‚ΠΎ позволяСт сСрвСру ΡƒΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ IP-адрСс ΠΏΡ€ΠΈΠ΅ΠΌΠ° запросов ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΎΠ².
4public ServerSocket() throws IOException
Π‘ΠΎΠ·Π΄Π°Π΅Ρ‚ нСпривязанный сокСт сСрвСра. ΠŸΡ€ΠΈ использовании этого конструктора ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄ привязки (), ΠΊΠΎΠ³Π΄Π° Π±ΡƒΠ΄Π΅Ρ‚Π΅ Π³ΠΎΡ‚ΠΎΠ²Ρ‹ ΠΏΡ€ΠΈΠ²ΡΠ·Π°Ρ‚ΡŒ сокСт сСрвСра.

Если конструктор ServerSocket Π½Π΅ Π²Ρ‹Π΄Π°Π΅Ρ‚ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅, это ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ вашС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎ связано с ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹ΠΌ ΠΏΠΎΡ€Ρ‚ΠΎΠΌ ΠΈ Π³ΠΎΡ‚ΠΎΠ²ΠΎ ΠΊ клиСнтским запросам.

ΠœΠ΅Ρ‚ΠΎΠ΄Ρ‹ класса ServerSocket

НиТС ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Ρ‹ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΠ· распространСнных ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² Π² Java класса ServerSocket.

β„–ΠœΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΠΈ описаниС
1public int getLocalPort()
Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ΠΏΠΎΡ€Ρ‚, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΡ€ΠΎΡΠ»ΡƒΡˆΠΈΠ²Π°Π΅Ρ‚ сокСт сСрвСра. Π­Ρ‚ΠΎΡ‚ ΠΌΠ΅Ρ‚ΠΎΠ΄ ΠΏΠΎΠ»Π΅Π·Π΅Π½, Ссли Π²Ρ‹ ΠΏΠ΅Ρ€Π΅Π΄Π°Π»ΠΈ 0 Π² качСствС Π½ΠΎΠΌΠ΅Ρ€Π° ΠΏΠΎΡ€Ρ‚Π° Π² конструкторС ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΠ»ΠΈ сСрвСру Π½Π°ΠΉΡ‚ΠΈ ΠΏΠΎΡ€Ρ‚.
2public Socket accept() throws IOException
ΠžΠΆΠΈΠ΄Π°Π΅Ρ‚ входящСго ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°. Π­Ρ‚ΠΎΡ‚ ΠΌΠ΅Ρ‚ΠΎΠ΄ блокируСтся Π΄ΠΎ Ρ‚Π΅Ρ… ΠΏΠΎΡ€, ΠΏΠΎΠΊΠ° ΠΊΠ»ΠΈΠ΅Π½Ρ‚ Π½Π΅ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡΡ ΠΊ сСрвСру Π½Π° ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠΌ ΠΏΠΎΡ€Ρ‚Ρƒ ΠΈΠ»ΠΈ Π½Π΅ истСчСт врСмя оТидания сокСта, ΠΏΡ€ΠΈ условии, Ρ‡Ρ‚ΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ оТидания Π±Ρ‹Π»ΠΎ установлСно с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° setSoTimeout(). Π’ ΠΏΡ€ΠΎΡ‚ΠΈΠ²Π½ΠΎΠΌ случаС этот ΠΌΠ΅Ρ‚ΠΎΠ΄ блокируСтся Π½Π° Π½Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΉ срок.
3public void setSoTimeout(int timeout)
УстанавливаСт Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ оТидания ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π° сокСтом сСрвСра Π²ΠΎ врСмя accept().
4public void bind (хост SocketAddress, int backlog)
ΠŸΡ€ΠΈΠ²ΡΠ·Ρ‹Π²Π°Π΅Ρ‚ сокСт ΠΊ ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠΌΡƒ сСрвСру ΠΈ ΠΏΠΎΡ€Ρ‚Ρƒ Π² ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π΅ SocketAddress. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ этот ΠΌΠ΅Ρ‚ΠΎΠ΄, Ссли Π²Ρ‹ создали ServerSocket с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ конструктора Π±Π΅Π· Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ².

Когда ServerSocket Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ accept(), ΠΌΠ΅Ρ‚ΠΎΠ΄ Π½Π΅ возвращаСтся, ΠΏΠΎΠΊΠ° ΠΊΠ»ΠΈΠ΅Π½Ρ‚ Π½Π΅ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡΡ. ПослС Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ ΠΊΠ»ΠΈΠ΅Π½Ρ‚ всС-Ρ‚Π°ΠΊΠΈ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡΡ, ServerSocket создаСт Π½ΠΎΠ²Ρ‹ΠΉ сокСт для Π½Π΅ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠ³ΠΎ ΠΏΠΎΡ€Ρ‚Π° ΠΈ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ссылку Π½Π° этот Π½ΠΎΠ²Ρ‹ΠΉ сокСт. Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΎΠΌ ΠΈ сСрвСром сущСствуСт TCP-соСдинСниС, ΠΈ связь ΠΌΠΎΠΆΠ΅Ρ‚ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒΡΡ.

ΠšΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ‚ΠΎΡ€Ρ‹ класса Socket

Класс java.net.Socket прСдставляСт собой сокСт, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΊΠ»ΠΈΠ΅Π½Ρ‚ ΠΈ сСрвСр ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ для связи Π΄Ρ€ΡƒΠ³ с Π΄Ρ€ΡƒΠ³ΠΎΠΌ. ΠšΠ»ΠΈΠ΅Π½Ρ‚ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ сокСта, создав Π΅Π³ΠΎ, Ρ‚ΠΎΠ³Π΄Π° ΠΊΠ°ΠΊ сСрвСр ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ сокСта ΠΈΠ· Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌΠΎΠ³ΠΎ значСния ΠΌΠ΅Ρ‚ΠΎΠ΄Π° accept().

Класс Socket ΠΈΠΌΠ΅Π΅Ρ‚ ΠΏΡΡ‚ΡŒ конструкторов, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΊΠ»ΠΈΠ΅Π½Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ для ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ ΠΊ сСрвСру.

β„–ΠšΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ‚ΠΎΡ€ ΠΈ описаниС
1public Socket(String host, int port) throws UnknownHostException, IOException.
Π­Ρ‚ΠΎΡ‚ ΠΌΠ΅Ρ‚ΠΎΠ΄ ΠΏΡ€Π΅Π΄ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΡƒ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ ΠΊ ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠΌΡƒ сСрвСру Ρ‡Π΅Ρ€Π΅Π· ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹ΠΉ ΠΏΠΎΡ€Ρ‚. Если этот конструктор Π½Π΅ Π²Ρ‹Π΄Π°Π΅Ρ‚ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅, Ρ‚ΠΎ соСдинСниС установлСно ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎ, ΠΈ ΠΊΠ»ΠΈΠ΅Π½Ρ‚ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ ΠΊ сСрвСру.
2public Socket(InetAddress host, int port) throws IOException
Π­Ρ‚ΠΎΡ‚ ΠΌΠ΅Ρ‚ΠΎΠ΄ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ‡Π΅Π½ ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅ΠΌΡƒ конструктору, Π·Π° ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ хост обозначаСтся ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠΌ InetAddress.
3public Socket(String host, int port, InetAddress localAddress, int localPort) throws IOException.
ΠŸΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ ΠΊ ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠΌΡƒ хосту ΠΈ ΠΏΠΎΡ€Ρ‚Ρƒ, создавая сокСт Π½Π° локальном хостС ΠΏΠΎ ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠΌΡƒ адрСсу ΠΈ ΠΏΠΎΡ€Ρ‚Ρƒ.
4public Socket(InetAddress host, int port, InetAddress localAddress, int localPort) throws IOException.
Π­Ρ‚ΠΎΡ‚ ΠΌΠ΅Ρ‚ΠΎΠ΄ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ‡Π΅Π½ ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅ΠΌΡƒ конструктору, Π·Π° ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ хост обозначаСтся ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠΌ InetAddress вмСсто строки адрСса.
5public Socket()
Π‘ΠΎΠ·Π΄Π°Π΅Ρ‚ Π½Π΅ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½Π½Ρ‹ΠΉ сокСт. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄ connect() для ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ Ρ‚Π°ΠΊΠΎΠ³ΠΎ сокСта ΠΊ сСрвСру.

ΠŸΡ€ΠΈ Π²ΠΎΠ·Π²Ρ€Π°Ρ‚Π΅ конструктора Socket, ΠΎΠ½ Π½Π΅ просто создаСт экзСмпляр ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° сокСта, Π½ΠΎ фактичСски пытаСтся ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒΡΡ ΠΊ ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠΌΡƒ сСрвСру ΠΈ ΠΏΠΎΡ€Ρ‚Ρƒ.

НСкоторыС ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹, ΠΈΠ·ΡƒΡ‡Π°ΡŽΡ‰ΠΈΠ΅ класс сокСта, пСрСчислСны здСсь. ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ ΠΈ ΠΊΠ»ΠΈΠ΅Π½Ρ‚, ΠΈ сСрвСр ΠΈΠΌΠ΅ΡŽΡ‚ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ сокСта, поэтому эти ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΠΌΠΎΠ³ΡƒΡ‚ Π²Ρ‹Π·Ρ‹Π²Π°Ρ‚ΡŒΡΡ ΠΊΠ°ΠΊ ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΎΠΌ, Ρ‚Π°ΠΊ ΠΈ сСрвСром.

ΠœΠ΅Ρ‚ΠΎΠ΄Ρ‹ класса Socket

β„–ΠœΠ΅Ρ‚ΠΎΠ΄ ΠΈ описаниС1public void connect(SocketAddress host, int timeout) throws IOException
Π­Ρ‚ΠΎΡ‚ ΠΌΠ΅Ρ‚ΠΎΠ΄ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ сокСт ΠΊ ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠΌΡƒ хосту. Π­Ρ‚ΠΎΡ‚ ΠΌΠ΅Ρ‚ΠΎΠ΄ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΡ€ΠΈ создании экзСмпляра сокСта с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ конструктора Π±Π΅Π· Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ².2public InetAddress getInetAddress()
Π­Ρ‚ΠΎΡ‚ ΠΌΠ΅Ρ‚ΠΎΠ΄ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ адрСс Π΄Ρ€ΡƒΠ³ΠΎΠ³ΠΎ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π°, ΠΊ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌΡƒ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ этот сокСт.3public int getPort()
Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ΠΏΠΎΡ€Ρ‚, ΠΊ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌΡƒ привязан сокСт Π½Π° ΡƒΠ΄Π°Π»Π΅Π½Π½ΠΎΠΉ машинС.4public int getLocalPort()
Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ΠΏΠΎΡ€Ρ‚, ΠΊ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌΡƒ привязан сокСт Π½Π° локальной машинС.5public SocketAddress getRemoteSocketAddress()
Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ адрСс ΡƒΠ΄Π°Π»Π΅Π½Π½ΠΎΠ³ΠΎ сокСта.6public InputStream getInputStream() throws IOException
Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ΠΏΠΎΡ‚ΠΎΠΊ Π²Ρ…ΠΎΠ΄Π½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ… сокСта. ΠŸΠΎΡ‚ΠΎΠΊ Π²Ρ…ΠΎΠ΄Π½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ… ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ ΠΊ ΠΏΠΎΡ‚ΠΎΠΊΡƒ Π²Ρ‹Ρ…ΠΎΠ΄Π½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ… ΡƒΠ΄Π°Π»Π΅Π½Π½ΠΎΠ³ΠΎ сокСта.7public OutputStream getOutputStream() throws IOException
Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ΠΏΠΎΡ‚ΠΎΠΊ Π²Ρ‹Ρ…ΠΎΠ΄Π½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ… сокСта. ΠŸΠΎΡ‚ΠΎΠΊ Π²Ρ‹Ρ…ΠΎΠ΄Π½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ… ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ ΠΊ ΠΏΠΎΡ‚ΠΎΠΊΡƒ Π²Ρ…ΠΎΠ΄Π½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ… ΡƒΠ΄Π°Π»Π΅Π½Π½ΠΎΠ³ΠΎ сокСта.8public void close() throws IOException
Π—Π°ΠΊΡ€Ρ‹Π²Π°Π΅Ρ‚ сокСт, Ρ‡Ρ‚ΠΎ Π΄Π΅Π»Π°Π΅Ρ‚ Π΄Π°Π½Π½Ρ‹ΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ сокСта Π½Π΅ способным снова ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒΡΡ ΠΊ Π»ΡŽΠ±ΠΎΠΌΡƒ сСрвСру.

ΠœΠ΅Ρ‚ΠΎΠ΄Ρ‹ класса InetAddress

Π­Ρ‚ΠΎΡ‚ класс прСдставляСт адрСс Π˜Π½Ρ‚Π΅Ρ€Π½Π΅Ρ‚-ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Π° (IP). Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ ΠΏΠΎΠ»Π΅Π·Π½Ρ‹Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ понадобятся ΠΏΡ€ΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ сокСтов, прСдставлСны Π½ΠΈΠΆΠ΅:

β„–ΠΈ описаниС
1static InetAddress getByAddress(byte[] addr)
Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ InetAddress с ΡƒΡ‡Π΅Ρ‚ΠΎΠΌ Π½Π΅ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Π½Π½ΠΎΠ³ΠΎ IP-адрСса.
2static InetAddress getByAddress(String host, byte[] addr)
Π‘ΠΎΠ·Π΄Π°Π΅Ρ‚ InetAddress Π½Π° основС прСдоставлСнного ΠΈΠΌΠ΅Π½ΠΈ хоста ΠΈ IP-адрСса.
3static InetAddress getByName(String host)
ΠžΠΏΡ€Π΅Π΄Π΅Π»ΡΠ΅Ρ‚ IP-адрСс хоста, учитывая имя хоста.
4String getHostAddress()
Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ строку IP-адрСса Π² тСкстовой Ρ„ΠΎΡ€ΠΌΠ΅.
5String getHostName()
ΠŸΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ имя хоста для Π΄Π°Π½Π½ΠΎΠ³ΠΎ IP-адрСса.
6static InetAddress InetAddress getLocalHost()
Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΉ хост.
7String 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

ΠΊΠ°ΠΊΠΈΠ΅ Π²ΠΈΠ΄Ρ‹ сокСтов Π΅ΡΡ‚ΡŒ Π² java с ΠΊΠ°ΠΊΠΈΠΌ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»ΠΎΠΌ ΠΎΠ½ΠΈ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ ΠΊΠ°ΠΊΠΈΠ΅ Π²ΠΈΠ΄Ρ‹ сокСтов Π΅ΡΡ‚ΡŒ Π² java с ΠΊΠ°ΠΊΠΈΠΌ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»ΠΎΠΌ ΠΎΠ½ΠΈ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ ΠΊΠ°ΠΊΠΈΠ΅ Π²ΠΈΠ΄Ρ‹ сокСтов Π΅ΡΡ‚ΡŒ Π² java с ΠΊΠ°ΠΊΠΈΠΌ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»ΠΎΠΌ ΠΎΠ½ΠΈ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ ΠΊΠ°ΠΊΠΈΠ΅ Π²ΠΈΠ΄Ρ‹ сокСтов Π΅ΡΡ‚ΡŒ Π² java с ΠΊΠ°ΠΊΠΈΠΌ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»ΠΎΠΌ ΠΎΠ½ΠΈ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚. Π€ΠΎΡ‚ΠΎ ΠΊΠ°ΠΊΠΈΠ΅ Π²ΠΈΠ΄Ρ‹ сокСтов Π΅ΡΡ‚ΡŒ Π² java с ΠΊΠ°ΠΊΠΈΠΌ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»ΠΎΠΌ ΠΎΠ½ΠΈ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚

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-адрСс.

Π”Π΅Ρ‚Π°Π»ΠΈ сокСта

РазъСм Ρ‚Π°ΠΊΠΆΠ΅ извСстСн ΠΊΠ°ΠΊ сокСт, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ являСтся ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎΠΉ Ρ‚ΠΎΡ‡ΠΊΠΎΠΉ, которая соСдиняСт Π΄Π²ΡƒΡΡ‚ΠΎΡ€ΠΎΠ½Π½ΡŽΡŽ связь ΠΌΠ΅ΠΆΠ΄Ρƒ двумя ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°ΠΌΠΈ Π² сСти.

Π’ΠΎ-ΠΏΠ΅Ρ€Π²Ρ‹Ρ…, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ сокСт для связи общСния сСти

Π‘Π΅Ρ€Π²Π΅Ρ€: БСрвСрная ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° связываСт Ρ€Π°Π·ΡŠΠ΅ΠΌ ΠΊ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠΌΡƒ ΠΏΠΎΡ€Ρ‚Ρƒ ΠΈ ΠΆΠ΄Π΅Ρ‚ ΠΈ ΡΠ»ΡƒΡˆΠ°Π΅Ρ‚ Π½Π° запросС ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π° Ρ‡Π΅Ρ€Π΅Π· этот сокСт.

ΠšΠ»ΠΈΠ΅Π½Ρ‚: клиСнтская ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π²Ρ‹Π΄Π°Π΅Ρ‚ запрос Π½Π° соСдинСниС Π½Π° основС ΠΈΠΌΠ΅Π½ΠΈ хоста ΠΈ Π½ΠΎΠΌΠ΅Ρ€Π° ΠΏΠΎΡ€Ρ‚Π°, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ находится ваш сСрвСр.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ связи сокСта

ΠΊΠ°ΠΊΠΈΠ΅ Π²ΠΈΠ΄Ρ‹ сокСтов Π΅ΡΡ‚ΡŒ Π² java с ΠΊΠ°ΠΊΠΈΠΌ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»ΠΎΠΌ ΠΎΠ½ΠΈ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ ΠΊΠ°ΠΊΠΈΠ΅ Π²ΠΈΠ΄Ρ‹ сокСтов Π΅ΡΡ‚ΡŒ Π² java с ΠΊΠ°ΠΊΠΈΠΌ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»ΠΎΠΌ ΠΎΠ½ΠΈ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ ΠΊΠ°ΠΊΠΈΠ΅ Π²ΠΈΠ΄Ρ‹ сокСтов Π΅ΡΡ‚ΡŒ Π² java с ΠΊΠ°ΠΊΠΈΠΌ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»ΠΎΠΌ ΠΎΠ½ΠΈ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ ΠΊΠ°ΠΊΠΈΠ΅ Π²ΠΈΠ΄Ρ‹ сокСтов Π΅ΡΡ‚ΡŒ Π² java с ΠΊΠ°ΠΊΠΈΠΌ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»ΠΎΠΌ ΠΎΠ½ΠΈ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚. Π€ΠΎΡ‚ΠΎ ΠΊΠ°ΠΊΠΈΠ΅ Π²ΠΈΠ΄Ρ‹ сокСтов Π΅ΡΡ‚ΡŒ Π² java с ΠΊΠ°ΠΊΠΈΠΌ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»ΠΎΠΌ ΠΎΠ½ΠΈ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚

ΠŸΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ связи хоста A ΠΈ Host B Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΡƒΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°Ρ‚ΡŒ соСдинСниС Ρ‡Π΅Ρ€Π΅Π· сокСт, Π° установлСниС сокСта Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ установлСно Π±Π°Π·ΠΎΠ²Ρ‹ΠΌ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»ΠΎΠΌ TCP / IP для установлСния TCP-соСдинСний. Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ соСдинСния TCP Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ Π±Π°Π·ΠΎΠ²ΠΎΠ³ΠΎ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Π° IP-адрСса для Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ хоста Π² сСти. IP-адрСса ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΠΎΠΌΠΎΡ‡ΡŒ Π½Π°ΠΌ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½Π°ΠΉΡ‚ΠΈ Ρ†Π΅Π»Π΅Π²Ρ‹Π΅ хосты, Π½ΠΎ Π΅ΡΡ‚ΡŒ нСсколько ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π½Π° хостС, ΠΊΠ°ΠΊ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ Π½Π°ΠΉΡ‚ΠΈ Π½ΡƒΠΆΠ½ΡƒΡŽ Π½Π°ΠΌ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, Π² это врСмя Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ Π΅Π³ΠΎ Ρ‡Π΅Ρ€Π΅Π· Π½ΠΎΠΌΠ΅Ρ€ ΠΏΠΎΡ€Ρ‚Π°. Π‘Ρ‹Ρ‚ΡŒ

Π’ΠΎ-Π²Ρ‚ΠΎΡ€Ρ‹Ρ…, простой сСрвСр, симуляция ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°

ЗдравствуйтС, Π²Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ»ΠΈ Ρ„Π΅ΡΡ‚ΠΈΠ²Π°Π»ΡŒ Ching Ming Blessing с сСрвСра

1. Π’Ρ‹ΡˆΠ΅ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠ΅ ΡˆΠΎΡƒ прСдставляСт собой простой сСрвСр ΠΈ процСсс создания ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°.

2, ΠΌΡ‹ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ прСдставим этот процСсс, взаимодСйствуя:

ΠΊΠ°ΠΊΠΈΠ΅ Π²ΠΈΠ΄Ρ‹ сокСтов Π΅ΡΡ‚ΡŒ Π² java с ΠΊΠ°ΠΊΠΈΠΌ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»ΠΎΠΌ ΠΎΠ½ΠΈ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ ΠΊΠ°ΠΊΠΈΠ΅ Π²ΠΈΠ΄Ρ‹ сокСтов Π΅ΡΡ‚ΡŒ Π² java с ΠΊΠ°ΠΊΠΈΠΌ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»ΠΎΠΌ ΠΎΠ½ΠΈ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ ΠΊΠ°ΠΊΠΈΠ΅ Π²ΠΈΠ΄Ρ‹ сокСтов Π΅ΡΡ‚ΡŒ Π² java с ΠΊΠ°ΠΊΠΈΠΌ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»ΠΎΠΌ ΠΎΠ½ΠΈ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ ΠΊΠ°ΠΊΠΈΠ΅ Π²ΠΈΠ΄Ρ‹ сокСтов Π΅ΡΡ‚ΡŒ Π² java с ΠΊΠ°ΠΊΠΈΠΌ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»ΠΎΠΌ ΠΎΠ½ΠΈ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚. Π€ΠΎΡ‚ΠΎ ΠΊΠ°ΠΊΠΈΠ΅ Π²ΠΈΠ΄Ρ‹ сокСтов Π΅ΡΡ‚ΡŒ Π² java с ΠΊΠ°ΠΊΠΈΠΌ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»ΠΎΠΌ ΠΎΠ½ΠΈ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚

3. Π’ΠΎ-ΠΏΠ΅Ρ€Π²Ρ‹Ρ…, Π½Π° сторонС сСрвСра ΡƒΠΊΠ°ΠΆΠΈΡ‚Π΅ Π½ΠΎΠΌΠ΅Ρ€ ΠΏΠΎΡ€Ρ‚Π° для создания ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° сСрвСса, ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚Π΅ сокСт Ρ‡Π΅Ρ€Π΅Π· ΠΌΠ΅Ρ‚ΠΎΠ΄ Accpet Serversocket, этот ΠΌΠ΅Ρ‚ΠΎΠ΄:ΠŸΡ€ΠΎΡΠ»ΡƒΡˆΠΈΠ²Π°Π½ΠΈΠ΅ ΠΈ принятиС соСдинСния этого сокСта, этот ΠΌΠ΅Ρ‚ΠΎΠ΄ Π·Π°Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²Π°Π½ Π΄ΠΎ Ρ‚Π΅Ρ… ΠΏΠΎΡ€, ΠΏΠΎΠΊΠ° соСдинСниС Π½Π΅ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΎ.Π­Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ Ссли Π½Π΅Ρ‚ запроса клиСнтского ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ, сСрвис Π±ΡƒΠ΄Π΅Ρ‚ Π·Π°Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²Π°Π½ здСсь.

4, ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΊΠΎΠ΄ состоит Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Π²Ρ…ΠΎΠ΄Π½ΠΎΠΉ ΠΈ Π²Ρ‹Ρ…ΠΎΠ΄Π½ΠΎΠΉ ΠΏΠΎΡ‚ΠΎΠΊ Ρ‡Π΅Ρ€Π΅Π· Ρ€ΠΎΠ·Π΅Ρ‚ΠΊΡƒ сокСта, ΠΏΠΎΠΊΠ° это Π½Π΅ содСрТимоС Π²Π²ΠΎΠ΄Π° / ΠΎ.

5. На ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π΅, Ρ‡Π΅Ρ€Π΅Π· Π½ΠΎΠΌΠ΅Ρ€ ΠΏΠΎΡ€Ρ‚Π° ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠ³ΠΎ ΠΈΠΌΠ΅Π½ΠΈ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ ΠΈ сСрвСра ΠΈ сСрвСра, ΠΏΡ€ΠΎΡΠ»ΡƒΡˆΠΈΠ²Π°ΡŽΡ‰Π΅Π³ΠΎ Π½ΠΎΠΌΠ΅Ρ€ сокСта, Π²Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚Π΅ Ρ€Π°Π·ΡŠΠ΅ΠΌ сокСта, Π½Π° этот Ρ€Π°Π· соСдинСниС ΡƒΠΆΠ΅ установлСно, Π° Π·Π°Ρ‚Π΅ΠΌ связываСтся с Π²Ρ‹Ρ…ΠΎΠ΄Π½Ρ‹ΠΌ ΠΏΠΎΡ‚ΠΎΠΊΠΎΠΌ.

Π’Ρ€ΠΈ, ΠΏΠΎΠ»ΠΎΠ²ΠΈΠ½Π° закрытия Ρ€ΠΎΠ·Π΅Ρ‚ΠΊΠΈ

Π’ дСмостСрС дСмонстрация ΠΌΡ‹ находимся Π² соотвСтствии с ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΌ Π±Π»ΠΎΠΊΠΎΠΌ Π΄Π°Π½Π½Ρ‹Ρ…, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ связываСтся, сторона сСрвСра Ρ‚Π°ΠΊΠΆΠ΅ прогрСссируСт. Но Π² Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π΅ сцСн Π±Π»ΠΎΠΊΠ° ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ Π΄Π°Π½Π½Ρ‹Ρ… являСтся многострочной. Π’ это врСмя, ΠΊΠ°ΠΊ Π²Ρ‹Π²ΠΎΠ΄ Π²Ρ‹Π²ΠΎΠ΄Π° Socket Express Express Add Repeate Data Leafe?

Π’ процСссС обучСния IO, Ссли Π²Ρ‹Π²ΠΎΠ΄ Π±Ρ‹Π» Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½, ΠΎΠ½ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ ΠΏΡƒΡ‚Π΅ΠΌ Π²Ρ‹ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ Π²Ρ‹Ρ…ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΏΠΎΡ‚ΠΎΠΊΠ°, Π½ΠΎ Π² Ρ€ΠΎΠ·Π΅Ρ‚ΠΊΠ΅ это Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ Ρ€ΠΎΠ·Π΅Ρ‚ΠΊΠ° Π²Ρ‹ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ, ΠΎΠ½ большС Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Ρ‡ΠΈΡ‚Π°Ρ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅ ΠΈΠ· Ρ€ΠΎΠ·Π΅Ρ‚ΠΊΠΈ ΠžΡ‚ΠΊΠ°Π· Π§Ρ‚ΠΎΠ±Ρ‹ Ρ€Π΅ΡˆΠΈΡ‚ΡŒ эту ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ, Java прСдоставляСт Π΄Π²Π° ΠΏΠΎΠ»ΡƒΠ·Π°ΠΊΡ€Ρ‹Ρ‚Ρ‹Ρ… ΠΌΠ΅Ρ‚ΠΎΠ΄Π°:

1. ShutDownInPUT (): Π—Π°ΠΊΡ€ΠΎΠΉΡ‚Π΅ Π²Ρ…ΠΎΠ΄Π½ΠΎΠΉ ΠΏΠΎΡ‚ΠΎΠΊ сокСта, ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅ Ρ‡Π΅Ρ€Π΅Π· Π²Ρ‹Ρ…ΠΎΠ΄Π½ΠΎΠΉ ΠΏΠΎΡ‚ΠΎΠΊ сокСта.

2, ShutDownOutput (): Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ Π²Ρ‹Ρ…ΠΎΠ΄Π½ΠΎΠΉ ΠΏΠΎΡ‚ΠΎΠΊ сокСта, ΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€ΠΎΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅ ΠΏΠΎ Π²Ρ…ΠΎΠ΄Π½Ρ‹ΠΌ ΠΏΠΎΡ‚ΠΎΠΊΠΎΠΌ Ρ€ΠΎΠ·Π΅Ρ‚ΠΊΠΈ.

Если ΠΌΡ‹ Π²Ρ‹Π·Ρ‹Π²Π°Π΅ΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ ShutWornput ΠΈ ShutWordutput для Ρ‚ΠΎΠ³ΠΎ ΠΆΠ΅ экзСмпляра сокСта, экзСмпляр сокСта всС Π΅Ρ‰Π΅ Π½Π΅ Π²Ρ‹ΠΊΠ»ΡŽΡ‡Π΅Π½, просто Ρ€Π°Π·ΡŠΠ΅ΠΌ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π½ΠΈ Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅, Π»ΠΈΠ±ΠΎ Π΄Π°Π½Π½Ρ‹Π΅ с Ρ‡Ρ‚Π΅Π½ΠΈΠ΅ΠΌ.

ΠΊΠ°ΠΊΠΈΠ΅ Π²ΠΈΠ΄Ρ‹ сокСтов Π΅ΡΡ‚ΡŒ Π² java с ΠΊΠ°ΠΊΠΈΠΌ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»ΠΎΠΌ ΠΎΠ½ΠΈ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ ΠΊΠ°ΠΊΠΈΠ΅ Π²ΠΈΠ΄Ρ‹ сокСтов Π΅ΡΡ‚ΡŒ Π² java с ΠΊΠ°ΠΊΠΈΠΌ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»ΠΎΠΌ ΠΎΠ½ΠΈ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ ΠΊΠ°ΠΊΠΈΠ΅ Π²ΠΈΠ΄Ρ‹ сокСтов Π΅ΡΡ‚ΡŒ Π² java с ΠΊΠ°ΠΊΠΈΠΌ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»ΠΎΠΌ ΠΎΠ½ΠΈ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ ΠΊΠ°ΠΊΠΈΠ΅ Π²ΠΈΠ΄Ρ‹ сокСтов Π΅ΡΡ‚ΡŒ Π² java с ΠΊΠ°ΠΊΠΈΠΌ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»ΠΎΠΌ ΠΎΠ½ΠΈ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚. Π€ΠΎΡ‚ΠΎ ΠΊΠ°ΠΊΠΈΠ΅ Π²ΠΈΠ΄Ρ‹ сокСтов Π΅ΡΡ‚ΡŒ Π² java с ΠΊΠ°ΠΊΠΈΠΌ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»ΠΎΠΌ ΠΎΠ½ΠΈ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚

ΠΊΠ°ΠΊΠΈΠ΅ Π²ΠΈΠ΄Ρ‹ сокСтов Π΅ΡΡ‚ΡŒ Π² java с ΠΊΠ°ΠΊΠΈΠΌ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»ΠΎΠΌ ΠΎΠ½ΠΈ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ ΠΊΠ°ΠΊΠΈΠ΅ Π²ΠΈΠ΄Ρ‹ сокСтов Π΅ΡΡ‚ΡŒ Π² java с ΠΊΠ°ΠΊΠΈΠΌ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»ΠΎΠΌ ΠΎΠ½ΠΈ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ ΠΊΠ°ΠΊΠΈΠ΅ Π²ΠΈΠ΄Ρ‹ сокСтов Π΅ΡΡ‚ΡŒ Π² java с ΠΊΠ°ΠΊΠΈΠΌ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»ΠΎΠΌ ΠΎΠ½ΠΈ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ ΠΊΠ°ΠΊΠΈΠ΅ Π²ΠΈΠ΄Ρ‹ сокСтов Π΅ΡΡ‚ΡŒ Π² java с ΠΊΠ°ΠΊΠΈΠΌ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»ΠΎΠΌ ΠΎΠ½ΠΈ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚. Π€ΠΎΡ‚ΠΎ ΠΊΠ°ΠΊΠΈΠ΅ Π²ΠΈΠ΄Ρ‹ сокСтов Π΅ΡΡ‚ΡŒ Π² java с ΠΊΠ°ΠΊΠΈΠΌ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»ΠΎΠΌ ΠΎΠ½ΠΈ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚

Как Π²ΠΈΠ΄Π½ΠΎ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ 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 ΠŸΠ°ΠΊΠ΅Ρ‚ отправляСтся Π½Π° ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹ΠΉ Π½ΠΎΠΌΠ΅Ρ€ ΠΏΠΎΡ€Ρ‚Π° Π½Π° ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠΌ хостС.

ΠΊΠ°ΠΊΠΈΠ΅ Π²ΠΈΠ΄Ρ‹ сокСтов Π΅ΡΡ‚ΡŒ Π² java с ΠΊΠ°ΠΊΠΈΠΌ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»ΠΎΠΌ ΠΎΠ½ΠΈ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ ΠΊΠ°ΠΊΠΈΠ΅ Π²ΠΈΠ΄Ρ‹ сокСтов Π΅ΡΡ‚ΡŒ Π² java с ΠΊΠ°ΠΊΠΈΠΌ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»ΠΎΠΌ ΠΎΠ½ΠΈ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ ΠΊΠ°ΠΊΠΈΠ΅ Π²ΠΈΠ΄Ρ‹ сокСтов Π΅ΡΡ‚ΡŒ Π² java с ΠΊΠ°ΠΊΠΈΠΌ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»ΠΎΠΌ ΠΎΠ½ΠΈ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ ΠΊΠ°ΠΊΠΈΠ΅ Π²ΠΈΠ΄Ρ‹ сокСтов Π΅ΡΡ‚ΡŒ Π² java с ΠΊΠ°ΠΊΠΈΠΌ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»ΠΎΠΌ ΠΎΠ½ΠΈ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚. Π€ΠΎΡ‚ΠΎ ΠΊΠ°ΠΊΠΈΠ΅ Π²ΠΈΠ΄Ρ‹ сокСтов Π΅ΡΡ‚ΡŒ Π² java с ΠΊΠ°ΠΊΠΈΠΌ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»ΠΎΠΌ ΠΎΠ½ΠΈ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚

ΠΊΠ°ΠΊΠΈΠ΅ Π²ΠΈΠ΄Ρ‹ сокСтов Π΅ΡΡ‚ΡŒ Π² java с ΠΊΠ°ΠΊΠΈΠΌ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»ΠΎΠΌ ΠΎΠ½ΠΈ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ ΠΊΠ°ΠΊΠΈΠ΅ Π²ΠΈΠ΄Ρ‹ сокСтов Π΅ΡΡ‚ΡŒ Π² java с ΠΊΠ°ΠΊΠΈΠΌ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»ΠΎΠΌ ΠΎΠ½ΠΈ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ ΠΊΠ°ΠΊΠΈΠ΅ Π²ΠΈΠ΄Ρ‹ сокСтов Π΅ΡΡ‚ΡŒ Π² java с ΠΊΠ°ΠΊΠΈΠΌ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»ΠΎΠΌ ΠΎΠ½ΠΈ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ ΠΊΠ°ΠΊΠΈΠ΅ Π²ΠΈΠ΄Ρ‹ сокСтов Π΅ΡΡ‚ΡŒ Π² java с ΠΊΠ°ΠΊΠΈΠΌ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»ΠΎΠΌ ΠΎΠ½ΠΈ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚. Π€ΠΎΡ‚ΠΎ ΠΊΠ°ΠΊΠΈΠ΅ Π²ΠΈΠ΄Ρ‹ сокСтов Π΅ΡΡ‚ΡŒ Π² java с ΠΊΠ°ΠΊΠΈΠΌ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»ΠΎΠΌ ΠΎΠ½ΠΈ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚

1. Π’ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΉ Π²Ρ‹ΡˆΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ шаг состоит Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Ρ€Π°Π·ΡŠΠ΅ΠΌ UDP Π½Π° сторонС сСрвСра (Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΡ‚ΡŒ эти Π΄Π²Π° класса).Π‘Π΅Π· ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠ³ΠΎ ΠΏΠΎΡ€Ρ‚Π° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ Π²Ρ‹Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΉ ΠΏΠΎΡ€Ρ‚. Π—Π°Ρ‚Π΅ΠΌ построСн ΠΏΠ°ΠΊΠ΅Ρ‚, Π° Π½ΠΎΠΌΠ΅Ρ€ IP ΠΈ ΠΏΠΎΡ€Ρ‚Π° Ρ†Π΅Π»Π΅Π²ΠΎΠΉ ΠΌΠ°ΡˆΠΈΠ½Ρ‹ ΡƒΠΊΠ°Π·Π°Π½Ρ‹ Π² ΠΏΠ°ΠΊΠ΅Ρ‚Π΅.

2. Π’ качСствС ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π° создайтС Ρ€Π°Π·ΡŠΠ΅ΠΌ UDP ΠΈ свяТитС ΠΏΠΎΡ€Ρ‚. Если Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ сообщСниС, ΠΎΡ‚ΠΏΡ€Π°Π²Π»Π΅Π½Π½ΠΎΠ΅ Π½Π° сСрвСрС, ΠΏΠΎΡ€Ρ‚ связки Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠΎΡ€Ρ‚Ρƒ, ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠΌΡƒ Π² ΠΏΠ°ΠΊΠ΅Ρ‚Π΅, ΠΎΡ‚ΠΏΡ€Π°Π²Π»Π΅Π½Π½ΠΎΠΌ сСрвСру.

3. ПослС Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ ΠΊΠ»ΠΈΠ΅Π½Ρ‚ распСчатаСт ΠΊΠΎΠ½Ρ‚Π΅Π½Ρ‚ Π² ΠΏΠ°ΠΊΠ΅Ρ‚Π΅, Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒ ΠΊΠΎΠ½Ρ‚Π΅Π½Ρ‚. Π’ это врСмя Π½ΠΎΠΌΠ΅Ρ€Π° IP ΠΈ ΠΏΠΎΡ€Ρ‚ сСрвСра ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Ρ‹ ΠΈΠ· Ρ€Π°Π½Π΅Π΅ ΠΎΡ‚ΠΏΡ€Π°Π²Π»Π΅Π½Π½Ρ‹Ρ… ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ².

DatagramPacket packet2 = new DatagramPacket(str2.getBytes(), str2.length(), packet.getAddress(), packet.getPort());

4. Когда сСрвСр ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ ΠΏΠ°ΠΊΠ΅Ρ‚, Π΅Π³ΠΎ большС Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ ΡΠ²ΡΠ·Ρ‹Π²Π°Ρ‚ΡŒΡΡ с ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΎΠΌ для создания сокСта, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΏΠΎΡ€Ρ‚, ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹ΠΉ Π² ΠΏΠΎΡ€Ρ‚Ρƒ, Π² настоящСС врСмя ΠΏΡ€ΠΎΡΠ»ΡƒΡˆΠΈΠ²Π°Π΅Ρ‚ΡΡ Π² ΠΏΠΎΡ€Ρ‚, ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠΌ Π² ΠΏΠ°ΠΊΠ΅Ρ‚Π΅.

Π“Π΄Π΅ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ дСйтаграмсСкСсDatagramPacketP) ΠΌΠ΅Ρ‚ΠΎΠ΄ Π±Ρ‹Π» Π·Π°Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²Π°Π½ Π΄ΠΎ получСния ΠΏΠ°ΠΊΠ΅Ρ‚Π°.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

Leave a Reply

Your email address will not be published. Required fields are marked *