Π§ΠΈΡ‚Π°ΠΉΡ‚Π΅ ΠΊΠ½ΠΈΠ³ΠΈ ΠΎΠ½Π»Π°ΠΉΠ½ Π½Π° Bookidrom.ru! БСсплатныС ΠΊΠ½ΠΈΠ³ΠΈ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΊΠ»ΠΈΠΊΠ΅

Π§ΠΈΡ‚Π°Ρ‚ΡŒ ΠΎΠ½Π»Π°ΠΉΠ½ Β«ΠŸΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ° J2MeΒ». Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Π° 41

Автор Автор нСизвСстСн

Π£Π½ΠΈΠ²Π΅Ρ€ΡΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΠΈΠ½Ρ‚Π΅Ρ€Π½Π΅Ρ‚-ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ» ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ Π΄Π΅ΠΉΡ‚Π°Π³Ρ€Π°ΠΌΠΌ (Internet Universal Datagram Protocol (UDP)) являСтся ΠΎΠ΄Π½ΠΈΠΌ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹ΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠΌ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Π° ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ Π΄Π΅ΠΉΡ‚Π°Π³Ρ€Π°ΠΌΠΌ. Π’ Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ это ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ», ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅ΠΌΡ‹ΠΉ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌΠΈ рСализациями MIDP. Он встроСн нСпосрСдствСнно ΠΏΠΎΠ²Π΅Ρ€Ρ… ΠΈΠ½Ρ‚Π΅Ρ€Π½Π΅Ρ‚-ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Π° (Internet Protocol (IP)) сСтСвого уровня. ΠŸΠΎΠΌΠ½ΠΈΡ‚Π΅, Ρ‡Ρ‚ΠΎ Π² соотвСтствии со спСцификациСй MIDP, HTTP 1.1 являСтся СдинствСнным ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»ΠΎΠΌ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Ρ‚ΡŒ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ, всС ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Π΅ β€” Π½Π΅ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ. Π Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΏΠΎΠΌΠ½ΠΈΡ‚ΡŒ ΠΎΠ± этом ΠΏΡ€ΠΈ ΡƒΡ‡Π΅Ρ‚Π΅ портативности ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ.

ИспользованиС ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Π° UDP Π΄Π°Π΅Ρ‚ прилоТСниям MIDP Π΄Ρ€ΡƒΠ³ΠΎΠΉ стандартный ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ для взаимодСйствия с Ρ‡Π΅Ρ‚ΠΊΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΌΠΈ сСтСвыми слуТбами. Π’ Π³Π»Π°Π²Π΅ 11 Π²Ρ‹ ΡƒΠ·Π½Π°Π΅Ρ‚Π΅ ΠΎ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΎΠ±ΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΡΡ‚Π²Π°Ρ…, ΠΏΡ€ΠΈ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… использованиС ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»ΠΎΠ² ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ Π΄Π΅ΠΉΡ‚Π°Π³Ρ€Π°ΠΌΠΌ являСтся Π±ΠΎΠ»Π΅Π΅ ΠΏΡ€Π΅Π΄ΠΏΠΎΡ‡Ρ‚ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ, Ρ‡Π΅ΠΌ высокоуровнСвых ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»ΠΎΠ².

Π’ UDP ΠΎΡ‚ΡΡƒΡ‚ΡΡ‚Π²ΡƒΡŽΡ‚ ΠΌΠ½ΠΎΠ³ΠΈΠ΅ свойства, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΠΌΠ΅ΡŽΡ‚ΡΡ Π² транспортных ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Π°Ρ…, ΠΊΠ°ΠΊ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π² TCP, Ρ‚Π°ΠΊΠΈΠ΅, ΠΊΠ°ΠΊ согласованиС Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ΠΎΠ² соСдинСний, повторная сборка ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ², сквозной ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒ ΠΏΠΎΡ‚ΠΎΠΊΠ°, ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΎΠΊΠ½Π°ΠΌΠΈ, устранСниС ошибок, Ρ€Π°Π·Π±ΠΈΠ΅Π½ΠΈΠ΅ Π½Π° части ΠΈ гарантированная доставка. Он отказываСтся ΠΎΡ‚ этих свойств Π² ΠΏΠΎΠ»ΡŒΠ·Ρƒ ΠΎΡ‡Π΅Π½ΡŒ эффСктивной быстрой пСрСсылки. ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ MIDP ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π΄Π΅ΠΉΡ‚Π°Π³Ρ€Π°ΠΌΠΌΠ½Ρ‹Π΅ соСдинСния, ΠΊΠΎΠ³Π΄Π° ΠΈΠΌ Π½ΡƒΠΆΠ½Ρ‹ быстрыС соСдинСния Π±Π΅Π· ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄Π° ΠΈΠ· состояния Π² состояниС ΠΈ ΠΊΠΎΠ³Π΄Π° Π½Π΅ трСбуСтся гарантированная пСрСсылка.

Π’ Ρ‚Π°Π±Π»ΠΈΡ†Π΅ 8.9 пСрСчислСны ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ интСрфСйса DatagramConnection. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π²ΠΈΠ΄Π΅Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ это ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ простой интСрфСйс. Π­Ρ‚Π° простота ΠΎΡ‚Ρ€Π°ΠΆΠ°Π΅Ρ‚ Π½ΠΈΠ·ΠΊΠΎΡƒΡ€ΠΎΠ²Π½Π΅Π²ΡƒΡŽ ΠΏΡ€ΠΈΡ€ΠΎΠ΄Ρƒ Π±Π°Π·ΠΎΠ²ΠΎΠ³ΠΎ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Π° Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ. Π‘Ρ€Π°Π²Π½ΠΈΡ‚Π΅ это с интСрфСйсом HttpConnection, Ρ‡ΡŒΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΠΎΡ‚Ρ€Π°ΠΆΠ°ΡŽΡ‚ ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π±ΠΎΠ»Π΅Π΅ ΡΠ»ΠΎΠΆΠ½ΡƒΡŽ ΠΏΡ€ΠΈΡ€ΠΎΠ΄Ρƒ сообщСний ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Π° HTTP ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ поля сообщСний Ρ‚ΠΈΠΏΠ° MIME для опрСдСлСния сСмантики сообщСния. Π’ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»ΠΎΠ² уровня ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ, HTTP, ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Ρ‹ Π΄Π΅ΠΉΡ‚Π°Π³Ρ€Π°ΠΌΠΌ Π½Π΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‚ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΡ‚Ρ€Π°ΠΆΠ°ΡŽΡ‚ ΠΏΡ€ΠΈΡ€ΠΎΠ΄Ρƒ ΠΏΠΎΠ»Π΅Π·Π½ΠΎΠΉ Π½Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ ΠΎΠ½ΠΈ Ρ‚Ρ€Π°Π½ΡΠΏΠΎΡ€Ρ‚ΠΈΡ€ΡƒΡŽΡ‚.


Π’Π°Π±Π»ΠΈΡ†Π° 8.9. ΠœΠ΅Ρ‚ΠΎΠ΄Ρ‹ интСрфСйса DatagramConnection


НазваниС ΠΌΠ΅Ρ‚ΠΎΠ΄Π° DatagramConnection β€” ОписаниС

int getMaximumLength() β€” Π’Ρ‹Π΄Π°Π΅Ρ‚ максимально Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΡƒΡŽ Π΄Π»ΠΈΠ½Ρƒ Π΄Π΅ΠΉΡ‚Π°Π³Ρ€Π°ΠΌΠΌΡ‹, ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ Π±Π°Π·ΠΎΠ²Ρ‹ΠΌ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»ΠΎΠΌ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ

int getNominalLength() β€” Π’Ρ‹Π΄Π°Π΅Ρ‚ Π½ΠΎΠΌΠΈΠ½Π°Π»ΡŒΠ½ΡƒΡŽ Π΄Π»ΠΈΠ½Ρƒ Π΄Π΅ΠΉΡ‚Π°Π³Ρ€Π°ΠΌΠΌΡ‹

Datagram newDatagram(byte [] buf, int size) β€” Π‘ΠΎΠ·Π΄Π°Π΅Ρ‚ Π½ΠΎΠ²Ρ‹ΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Π΄Π΅ΠΉΡ‚Π°Π³Ρ€Π°ΠΌΠΌΡ‹, получая Π΄Π°Π½Π½Ρ‹Π΅ ΠΈΠ· ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠ³ΠΎ массива

Datagram newDatagram(byte[] buf, int size, String addr) β€” Π‘ΠΎΠ·Π΄Π°Π΅Ρ‚ Π½ΠΎΠ²Ρ‹ΠΉ ΠΎΠ±ΡŒΠ΅ΠΊΡ‚ Π΄Π΅ΠΉΡ‚Π°Π³Ρ€Π°ΠΌΠΌΡ‹ с ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹ΠΌΠΈ массивом Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ с ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹ΠΌ адрСсом назначСния

Datagram newDatagramfint size() β€” Π‘ΠΎΠ·Π΄Π°Π΅Ρ‚ Π½ΠΎΠ²Ρ‹ΠΉ ΠΎΠ±ΡŒΠ΅ΠΊΡ‚ Π΄Π΅ΠΉΡ‚Π°Π³Ρ€Π°ΠΌΠΌΡ‹

Datagram newDatagram (int size, String addr) β€” Π‘ΠΎΠ·Π΄Π°Π΅Ρ‚ Π½ΠΎΠ²Ρ‹ΠΉ ΠΎΠ±ΡŒΠ΅ΠΊΡ‚ Π΄Π΅ΠΉΡ‚Π°Π³Ρ€Π°ΠΌΠΌΡ‹ с ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹ΠΌ адрСсом

void receive (Datagram dgram) β€” ΠŸΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ Π΄Π΅ΠΉΡ‚Π°Π³Ρ€Π°ΠΌΠΌΡƒ ΠΈ Π·Π°Π±ΠΈΡ€Π°Π΅Ρ‚ Π΅Π΅ Π΄Π°Π½Π½Ρ‹Π΅ для заполнСния Π΄Π°Π½Π½ΠΎΠ³ΠΎ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π° Π΄Π΅ΠΉΡ‚Π°Π³Ρ€Π°ΠΌΠΌΡ‹

void send (Datagram dgram) β€” ΠŸΠΎΡΡ‹Π»Π°Π΅Ρ‚ ΡƒΠΊΠ°Π·Π°Π½Π½ΡƒΡŽ Π΄Π΅ΠΉΡ‚Π°Π³Ρ€Π°ΠΌΠΌΡƒ


Π§Ρ‚ΠΎΠ±Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π΄Π΅ΠΉΡ‚Π°Π³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ΅ соСдинСниС, ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅-ΠΊΠ»ΠΈΠ΅Π½Ρ‚ выполняСт ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ шаги:

1. ΠžΠ½ΠΎ создаСт ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ DatagramConnection.

2. ΠŸΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Datagram ΠΈΠ· ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° DatagramConnection.

3. Π—Π°Ρ‚Π΅ΠΌ ΠΎΠ½ΠΎ заполняСт ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Datagram Π΄Π°Π½Π½Ρ‹ΠΌΠΈ, ΡΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‰ΠΈΠΌΠΈ ΠΏΠΎΠ»Π΅Π·Π½ΡƒΡŽ Π½Π°Π³Ρ€ΡƒΠ·ΠΊΡƒ, которая Π±ΡƒΠ΄Π΅Ρ‚ послана ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°ΡŽΡ‰Π΅ΠΌΡƒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρƒ.

4. Π—Π°ΠΏΡ€Π°ΡˆΠΈΠ²Π°Π΅Ρ‚ соСдинСниС ΠΎ посылкС Π΄Π΅ΠΉΡ‚Π°Π³Ρ€Π°ΠΌΠΌΡ‹.

5. Π—Π°ΠΏΡ€Π°ΡˆΠΈΠ²Π°Π΅Ρ‚ соСдинСниС ΠΎ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠΈ ΠΎΡ‚Π²Π΅Ρ‚Π½ΠΎΠΉ Π΄Π΅ΠΉΡ‚Π°Π³Ρ€Π°ΠΌΠΌΡ‹.

Π§Ρ‚ΠΎΠ±Ρ‹ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Π΄Π΅ΠΉΡ‚Π°Π³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ΅ соСдинСниС, Π²Π°ΠΌ всС Ρ€Π°Π²Π½ΠΎ Π½ΡƒΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ класс Connector. Π’Ρ‹ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚Π΅, Ρ‡Ρ‚ΠΎ ΠΆΠ΅Π»Π°Π΅Ρ‚Π΅ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Π΄Π΅ΠΉΡ‚Π°Π³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ΅ соСдинСниС, поставляя ΡΡ‚Ρ€ΠΎΠΊΠΎΠ²ΡƒΡŽ Π΄Π΅ΠΉΡ‚Π°Π³Ρ€Π°ΠΌΠΌΡƒ Π² ΠΏΠΎΠ»Π΅ схСмы URI, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π²Ρ‹ ΠΏΠ΅Ρ€Π΅Π΄Π°Π΅Ρ‚Π΅ ΠΎΠ΄Π½ΠΎΠΉ ΠΈΠ»ΠΈ Ρ‚Ρ€Π΅ΠΌ Ρ„ΠΎΡ€ΠΌΠ°ΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° Connector.open(). ΠŸΠΎΠ»Π½Ρ‹ΠΉ синтаксис Π΄Π΅ΠΉΡ‚Π°Π³Ρ€Π°ΠΌΠΌΠ½Ρ‹Ρ… адрСсов ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ:


address:= <ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»>://<адрСсат>

protocol:= Β«datagramΒ»

target:= [<хост>]:<ΠΏΠΎΡ€Ρ‚>

host:= Π—Π½Π°Ρ‡ΠΈΠΌΠΎΠ΅ DNS-имя хоста ΠΈΠ»ΠΈ Π΅Π³ΠΎ Π½ΠΎΠΌΠ΅Ρ€>

port:= Π—Π½Π°Ρ‡ΠΈΠΌΡƒΠΉ систСмный Π½ΠΎΠΌΠ΅Ρ€ ΠΏΠΎΡ€Ρ‚Π°>


Π£ΠΊΠ°Π·Π°Π½ΠΈΠ΅ ΠΏΠΎΠ»Π΅ΠΉ хоста Π½Π΅ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ. Если Π²Ρ‹ пропускаСтС ΠΏΠΎΠ»Π΅ хоста, соСдинСниС прСдставляСт соСдинСниС сСрвСра β€” рСализация допускаСт, Ρ‡Ρ‚ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚, Π·Π°ΠΏΡ€Π°ΡˆΠΈΠ²Π°ΡŽΡ‰ΠΈΠΉ соСдинСниС, являСтся сСрвСром. Π‘Π΅Ρ€Π²Π΅Ρ€Ρ‹ Π½Π΅ ΠΈΠ½ΠΈΡ†ΠΈΠΈΡ€ΡƒΡŽΡ‚ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡Ρƒ сообщСний, Ρ‚Π°ΠΊ Ρ‡Ρ‚ΠΎ для указания мСста назначСния имя хоста Π½Π΅ трСбуСтся. Π‘ΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠ΅ сСрвСра ΠΎΠΆΠΈΠ΄Π°Π΅Ρ‚ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π° для посылки Π΅ΠΌΡƒ Π΄Π΅ΠΉΡ‚Π°Π³Ρ€Π°ΠΌΠΌΡ‹. Π‘Π΅Ρ€Π²Π΅Ρ€ ΠΈΠ·Π²Π»Π΅ΠΊΠ°Π΅Ρ‚ адрСс ΠΏΠΎΡΡ‹Π»Π°ΡŽΡ‰Π΅Π³ΠΎ ΠΈΠ· Π΄Π΅ΠΉΡ‚Π°Π³Ρ€Π°ΠΌΠΌΡ‹, ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½ΠΎΠΉ ΠΈΠΌ, ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ Π΅Π³ΠΎ для ΠΎΡ‚Π²Π΅Ρ‚Π°. ΠŸΡ€ΠΈΠΌΠ΅Ρ€ указания соСдинСния сСрвСра:

datagram:/7:513

Если ΠΏΠΎΠ»Π΅ хоста ΡƒΠΊΠ°Π·Π°Π½ΠΎ, соСдинСниС открываСтся ΠΊΠ°ΠΊ соСдинСниС ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°. РСализация ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ Π·Π°ΠΏΡ€Π°ΡˆΠΈΠ²Π°ΡŽΡ‰ΠΈΠΉ являСтся ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΎΠΌ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΈΠ½ΠΈΡ†ΠΈΠΈΡ€ΡƒΠ΅Ρ‚ соСдинСниС, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΎΠ½ ΠΆΠ΅Π»Π°Π΅Ρ‚ ΠΏΠΎΡΠ»Π°Ρ‚ΡŒ Π΄Π΅ΠΉΡ‚Π°Π³Ρ€Π°ΠΌΠΌΡƒ адрСсованному ΡƒΠ·Π»Ρƒ. ΠŸΡ€ΠΈΠΌΠ΅Ρ€ соСдинСния ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°, ΡƒΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‰Π΅Π³ΠΎ извСстный ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€:

datagram://server.foo.com:513

Когда соСдинСниС установлСно, вашС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π΅Π³ΠΎ для ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠΈ ΠΈ получСния Π΄Π΅ΠΉΡ‚Π°Π³Ρ€Π°ΠΌΠΌ. Π˜Π½Ρ‚Π΅Ρ€Ρ„Π΅ΠΉΡ javax.microedition.io.Datagram опрСдСляСт Π΄Π΅ΠΉΡ‚Π°Π³Ρ€Π°ΠΌΠΌΡ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΡΠ²Π»ΡΡŽΡ‚ΡΡ частями сообщСния, посланными ΠΈ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½Ρ‹ΠΌΠΈ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Π°ΠΌΠΈ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ Π΄Π΅ΠΉΡ‚Π°Π³Ρ€Π°ΠΌΠΌ. ΠžΠ±ΡŠΠ΅ΠΊΡ‚ DatagramConnection посылаСт ΠΈ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ Datagram. ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹, ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹Π΅ Π² Ρ‚Π°Π±Π»ΠΈΡ†Π΅ 8.9, содСрТат нСсколько ссылок Π½Π° Ρ‚ΠΈΠΏ Datagram.

Π’ Ρ‚Π°Π±Π»ΠΈΡ†Π΅ 8.10 пСрСчислСны ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ интСрфСйса Datagram. ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ ΠΎΠ½ΠΈ ΠΎΡ‚Ρ€Π°ΠΆΠ°ΡŽΡ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ понятия:

β€” Π°Π΄Ρ€Π΅Ρ β€” прСдставляСт адрСс ΠΏΠΎΡΡ‹Π»Π°ΡŽΡ‰Π΅Π³ΠΎ ΠΈΠ»ΠΈ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°ΡŽΡ‰Π΅Π³ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°;

β€” ΠΏΠΎΠ»Π΅Π·Π½Π°Ρ Π½Π°Π³Ρ€ΡƒΠ·ΠΊΠ° β€” Π΄Π΅ΠΉΡ‚Π°Π³Ρ€Π°ΠΌΠΌΠ° рассматриваСт Π΄Π°Π½Π½Ρ‹Π΅ ΠΊΠ°ΠΊ ΠΎΠ΄ΠΈΠ½ Π½Π΅ΠΏΡ€ΠΎΠ·Ρ€Π°Ρ‡Π½Ρ‹ΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Π±Π΅Π· ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ†ΠΈΠΈ Π΅Π³ΠΎ Ρ„ΠΎΡ€ΠΌΡ‹, структуры ΠΈΠ»ΠΈ Ρ‚ΠΈΠΏΠ°.

Π­Ρ‚ΠΎ минимальная информация, трСбуСмая всСми ΠΏΠ°ΠΊΠ΅Ρ‚Π°ΠΌΠΈ. ВсС Π΄Π΅ΠΉΡ‚Π°Π³Ρ€Π°ΠΌΠΌΡ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΡƒΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°Ρ‚ΡŒ эту ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ пСрСсылка ΠΏΡ€ΠΎΡˆΠ»Π° ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎ.

Π’ интСрфСйсС Datagram отсутствуСт информация ΠΎ синтаксисС ΠΈΠ»ΠΈ сСмантикС ΠΏΠΎΠ»Π΅Π·Π½ΠΎΠΉ Π½Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ. ΠŸΡ€ΠΈΡ‡ΠΈΠ½Π° этого Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ всСго лишь Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Π΄Π΅ΠΉΡ‚Π°Π³Ρ€Π°ΠΌΠΌΡ‹ Π½Π΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‚ синтаксиса ΠΈΠ»ΠΈ сСмантики Π΄Π°Π½Π½Ρ‹Ρ…, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΠ½ΠΈ пСрСносят. Π”Π΅ΠΉΡ‚Π°Π³Ρ€Π°ΠΌΠΌΡ‹ просто Ρ€Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°ΡŽΡ‚ свою ΠΏΠΎΠ»Π΅Π·Π½ΡƒΡŽ Π½Π°Π³Ρ€ΡƒΠ·ΠΊΡƒ ΠΊΠ°ΠΊ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ Π±Π°ΠΉΡ‚ΠΎΠ². ПолСзная Π½Π°Π³Ρ€ΡƒΠ·ΠΊΠ° Π΄Π΅ΠΉΡ‚Π°Π³Ρ€Π°ΠΌΠΌΡ‹ опрСдСляСтся просто ΠΊΠ°ΠΊ byte [].

Π”Π΅ΠΉΡ‚Π°Π³Ρ€Π°ΠΌΠΌΠ° ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ Π»ΡŽΠ±ΡƒΡŽ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ. ДСйтаграммная слуТба опрСдСляСт Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ ΠΈ содСрТимоС Π΅Π΅ Π΄Π΅ΠΉΡ‚Π°Π³Ρ€Π°ΠΌΠΌ. ΠŸΠΎΡΡ‹Π»Π°ΡŽΡ‰Π΅Π΅ ΠΈ ΠΏΠΎΠ»ΡƒΡ‡Π°ΡŽΡ‰Π΅Π΅ устройства Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ Π΄Π΅ΠΉΡ‚Π°Π³Ρ€Π°ΠΌΠΌΡ‹ Ρ‚Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ½ΠΈ ΠΏΡ€ΠΈΠ΄Π΅Ρ€ΠΆΠΈΠ²Π°Π»ΠΈΡΡŒ этих ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠΉ. Π’ΠΎ Π΅ΡΡ‚ΡŒ byte [] Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ написан ΠΏΠΎΡΡ‹Π»Π°ΡŽΡ‰ΠΈΠΌ ΠΈ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ ΠΏΡ€ΠΎΠ°Π½Π°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°ΡŽΡ‰ΠΈΠΌ устройством.

Π˜Π½Ρ‚Π΅Ρ€Ρ„Π΅ΠΉΡ Datagram происходит ΠΈΠ· интСрфСйсов Datalnput ΠΈ DataOutput Π² ΠΏΠ°ΠΊΠ΅Ρ‚Π΅ java.io. Π’Π°ΠΊΠΎΠ΅ происхоТдСниС Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€ΡƒΠ΅Ρ‚ Π½Π°Π»ΠΈΡ‡ΠΈΠ΅ ΡƒΠ΄ΠΎΠ±Π½ΠΎΠ³ΠΎ интСрфСйса для чтСния Π΄Π²ΠΎΠΈΡ‡Π½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ… ΠΈΠ· Π΄Π΅ΠΉΡ‚Π°Π³Ρ€Π°ΠΌΠΌΡ‹ ΠΈ записи Π² Π½Π΅Π΅. На рисункС 8.4 ΠΏΠΎΠΊΠ°Π·Π°Π½Π° иСрархия происхоТдСния интСрфСйса Datagram. Π’ Ρ‚Π°Π±Π»ΠΈΡ†Π΅ 8.11 пСрСчислСны ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ интСрфСйса Datalnput, Π° Π² Ρ‚Π°Π±Π»ΠΈΡ†Π΅ 8.12 пСрСчислСны ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ интСрфСйса DataOutput. Π­Ρ‚ΠΈ интСрфСйсы ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ‡Π½Ρ‹ интСрфСйсам ΠΏΠ°ΠΊΠ΅Ρ‚Π° java.io J2SE.



Рисунок 8.4. Π”Π΅ΠΉΡ‚Π°Π³Ρ€Π°ΠΌΠΌΠ° опрСдСляСт ΠΎΠ±Ρ‰ΠΈΠ΅ Π΄Π°Π½Π½Ρ‹Π΅. ΠœΠ΅Ρ‚ΠΎΠ΄Ρ‹ Π² этой ΠΈΠ΅Ρ€Π°Ρ€Ρ…ΠΈΠΈ интСрфСйсов ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½ΠΈΠ·ΡˆΡƒΡŽ Π°Π±ΡΡ‚Ρ€Π°ΠΊΡ†ΠΈΡŽ, которая Π΄Π°Π΅Ρ‚ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΌΠ°Π½ΠΈΠΏΡƒΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ встроСнными Ρ‚ΠΈΠΏΠ°ΠΌΠΈ Π΄Π°Π½Π½Ρ‹Ρ…. Для ΠΏΠΎΠ»Π΅ΠΉ, опрСдСляСмых ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»ΠΎΠΌ, абстракции Π½Π΅ сущСствуСт


Π’Π°Π±Π»ΠΈΡ†Π° 8.10. ΠœΠ΅Ρ‚ΠΎΠ΄Ρ‹ интСрфСйса Datagram


НазваниС ΠΌΠ΅Ρ‚ΠΎΠ΄Π° интСрфСйса Datagram β€” ОписаниС

String getAddress() β€” Π’Ρ‹Π΄Π°Π΅Ρ‚ адрСс Π² Π΄Π°Π½Π½ΠΎΠΉ Π΄Π΅ΠΉΡ‚Π°Π³Ρ€Π°ΠΌΠΌΠ΅

byte [] getData() β€” Π’Ρ‹Π΄Π°Π΅Ρ‚ Π±ΡƒΡ„Π΅Ρ€, содСрТащий ΠΏΠΎΠ»Π΅Π·Π½ΡƒΡŽ Π½Π°Π³Ρ€ΡƒΠ·ΠΊΡƒ Π΄Π΅ΠΉΡ‚Π°Π³Ρ€Π°ΠΌΠΌ

int getLength() β€” Π’Ρ‹Π΄Π°Π΅Ρ‚ Π΄Π»ΠΈΠ½Ρƒ ΠΏΠΎΠ»Π΅Π·Π½ΠΎΠΉ Π½Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ Π΄Π΅ΠΉΡ‚Π°Π³Ρ€Π°ΠΌΠΌΡ‹

int getOffset() β€” Π’Ρ‹Π΄Π°Π΅Ρ‚ смСщСниС указатСля для чтСния/записи Π² Π±ΡƒΡ„Π΅Ρ€Π΅ ΠΏΠΎΠ»Π΅Π·Π½ΠΎΠΉ Π½Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ

void reset() β€” ВосстанавливаСт ΠΏΠΎΠ·ΠΈΡ†ΠΈΡŽ указатСля для чтСния/записи Π² Π±ΡƒΡ„Π΅Ρ€Π΅ ΠΏΠΎΠ»Π΅Π·Π½ΠΎΠΉ Π½Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ

void setAddress (Datagram reference) β€” УстанавливаСт, Ρ‡Ρ‚ΠΎ адрСс Π΄Π°Π½Π½ΠΎΠΉ Π΄Π΅ΠΉΡ‚Π°Π³Ρ€Π°ΠΌΠΌΡ‹ являСтся адрСсом ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠΉ Π΄Π΅ΠΉΡ‚Π°Π³Ρ€Π°ΠΌΠΌΡ‹

void setAddress (String addr) β€” УстанавливаСт адрСс, ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅ΠΌΡ‹ΠΉ строкой

void setData (byte[] buffer, int offset, int len) β€” УстанавливаСт ΠΏΠΎΠ»Π΅Π·Π½ΡƒΡŽ Π½Π°Π³Ρ€ΡƒΠ·ΠΊΡƒ Π΄Π°Π½Π½ΠΎΠΉ Π΄Π΅ΠΉΡ‚Π°Π³Ρ€Π°ΠΌΠΌΡ‹

void setLength (int len) β€” УстанавливаСт Π΄Π»ΠΈΠ½Ρƒ ΠΏΠΎΠ»Π΅Π·Π½ΠΎΠΉ Π½Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ Π΄Π΅ΠΉΡ‚Π°Π³Ρ€Π°ΠΌΠΌΡ‹


Π’ Π΄ΠΎΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊ согласованию Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π°, ΠΏΠΎΡΡ‹Π»Π°ΡŽΡ‰Π΅Π΅ ΠΈ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°ΡŽΡ‰Π΅Π΅ устройства Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ способны ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡ‚ΡŒ мСстонахоТдСниС Π΄Ρ€ΡƒΠ³ Π΄Ρ€ΡƒΠ³Π°. КаТдая слуТба ΠΈΠΌΠ΅Π΅Ρ‚ связь со стандартным ΠΏΠΎΡ€Ρ‚ΠΎΠΌ. Π­Ρ‚Π° связь Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€ΡƒΠ΅Ρ‚, Ρ‡Ρ‚ΠΎ ΠΊΠ»ΠΈΠ΅Π½Ρ‚ Π·Π½Π°Π΅Ρ‚, ΠΊΠ°ΠΊ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ соСдинСниС с сСрвСром, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ прСдоставляСт ΠΆΠ΅Π»Π°Π΅ΠΌΡƒΡŽ слуТбу.


Π’Π°Π±Π»ΠΈΡ†Π° 8.11. ΠœΠ΅Ρ‚ΠΎΠ΄Ρ‹ интСрфСйса Datalnput


НазваниС ΠΌΠ΅Ρ‚ΠΎΠ΄Π° Datalnput β€” ОписаниС

boolean readBoolean() β€” Π‘Ρ‡ΠΈΡ‚Ρ‹Π²Π°Π΅Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Boolean ΠΈΠ· Π²Ρ…ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΏΠΎΡ‚ΠΎΠΊΠ°

byte readByte() β€” Π‘Ρ‡ΠΈΡ‚Ρ‹Π²Π°Π΅Ρ‚ ΠΎΠ΄ΠΈΠ½ Π±Π°ΠΉΡ‚ ΠΈΠ· Π²Ρ…ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΏΠΎΡ‚ΠΎΠΊΠ°

char readChar() β€” Π‘Ρ‡ΠΈΡ‚Ρ‹Π²Π°Π΅Ρ‚ символ ΠΈΠ· Π²Ρ…ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΏΠΎΡ‚ΠΎΠΊΠ°