Платформа программирования J2ME для портативных устройств

       

Методы интерфейса 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.



Содержание раздела