void writeByte (byte [] b)
— Записывает все байты в выходной потокvoid write (byte[] b, int off, int len)
— Записывает указанное число байтов в выходной поток, начиная от смещенияvoid write (int b)
— Записывает младший байт в выходной потокvoid writeBoolean (boolean v)
— Записывает значение booleanvoid writeByte (int v)
— Записывает младший байт intvoid writeChar (int c)
— Записывает два младших байта в выходной потокvoid writeChars (String s)
— Записывает каждый символ в уникоде в выходной потокvoid writelnt(int v)
— Записывает int (четыре байта) в выходной потокvoid writeLong (long v)
— Записывает значение long (четыре байта) в выходной потокvoid writeShort (int v)
— Записывает int как два байта в выходной потокvoid writeUTF(String s)
— Записывает каждый символ в формате Java LJTF, которому предшествуют два байта, показывающие длину в байтахНапример, если приложение MIDP хочет взаимодействовать со стандартным демоном синхронизирующего сетевого протокола Unix (Unix Network Time Protocol (NTP)), оно должно создать соединение, которое использует стандартный номер порта демона NTP, то есть 123. Приложение-клиент MIDP должно задать формат полезной нагрузки ответных дейтаграмм, придерживаясь определения NTP. Оно также должно быть способно анализировать ответ, возвращенный сервером.
MIDP кое в чем отличается от платформы J2SE в своей поддержке дейтаграммных соединений. J2SE имеет пакет java.net. Например, ее класс, DatagramPacket определяет дейтаграмму. Класс DatagramSocket реализует протокол передачи дейтаграмм с помощью соединений сокета.
Эти классы не существуют в CLDC/MIDP. В действительности пакет java.net недоступен в CLDC/MIDP. С другой стороны, CDC содержит пакет java.net, который содержит эти классы.
В листинге 8.5 демонстрируются вышеописанные понятия. Код, описанный в этом листинге, является дейтаграммным клиентом, который соединяется с определенной дейтаграммной службой. Важными шагами, выполняемыми программой, являются следующие:
Она получает новый объект DatagramConnection. Получает объект Datagram из DatagramConnection. Заполняет Datagram должным образом отформатированной семантической информацией, которая составляет запрос (как разработчик, удостоверьтесь, что длина дейтаграммы не превышает максимальной длины, позволенной протоколом). Получает ответную Datagram от DatagramConnection. Этот вызов блокирует обработку до тех пор, пока дейтаграмма не будет получена или время вызова не истечет. Обрабатывает данные в дейтаграмме. Повторяет цикл для следующих взаимодействий.
Программа, описанная в листинге 8.5, на самом деле не осуществляет этап 3. Его выполнение требует создания должным образом отформатированного сообщения, как ожидается службой, с которой соединяется клиент. Также «обработка», указанная в шаге 5, включает лишь вывод ответа сервера в стандартный результат. В настоящих приложениях клиент использовал бы дейтаграммную информацию для локальной обработки.
import javax.microedition.midlet.MIDlet;
import javax.microedition.Icdui.Display;
import javax.microedition.Icdui.Command;
import javax.microedition.Icdui.CommandListenerj;
import javax.microedition.Icdui.Displayable;
import javax.microedition.Icdui.TextBox;
import javax.microedition.Icdui.TextFie Id;
import javax.microedition.io.Connector;
import javax.microedition.io.Datagram;
import javax.microedition.io.DatagramConnection;
import Java.io.lOException; ft,