Интерфейс DatagramConnection предоставляет единственный метод для отправки пакетов датаграммы. Я говорю о методе send, который очень просто использовать. На самом деле все, что необходимо для отправки пакета, – это лишь одна строка кода:
dc.send(dg);
Посмотрим, как используется этот код в программе. Для этого рассмотрим следующий листинг, в котором сначала создается объект Datagram, а затем пересылается пакет через датаграммное соединение:
// Преобразовать строку в массив байтов
byte[] bytes = message.getBytes;
// Отправить сообщение
Datagram dg = null;
dg = dc.newDatagram(bytes, bytes.length);
dc.send(dg);Вы уже видели все строки этого кода по отдельности, но здесь они объединены в один фрагмент. Это действительно все, что необходимо, чтобы сформировать пакет игровых данных и отправить через датаграммное соединение с сетью.
Получение пакетов датаграммы
Получение пакета датаграммы похоже на отправление пакета, оно выполняется методом интерфейса DatagramConnection. Этот метод называется receive, в качестве параметра он принимает объект Datagram, точно так же, как send. Ниже приведен пример использования метода receive для получения датаграммы:dc.receive(dg);
Конечно, при этом пакет датаграммы должен быть определенного размера. Ниже приведен код, формирующий и принимающий пакеты датаграммы:
// Попытка получения пакета
Datagram dg = dc.newDatagram(64);
dc.recieve(dg);
// Убедиться, что датаграмма содержит информацию
if (dg.getLength > 0) {
String data = new String(dg.getData, 0, dg.getLength);
}Важно отметить, что в этом коде полученная датаграмма проверяется методом getLength. Такая проверка важна, поскольку необходимо знать, есть ли данные в датаграмме. Если данные есть, то датаграмма конвертируется в строку и сохраняется в переменной data. Затем эти данные можно обработать специальным кодом.
Создание примера Lighthouse
За много лет до появления мобильных телефонов, радиопередатчиков и приемников мореплаватели использовали более примитивное средство коммуникации. Я говорю о маяках, которые обычно устанавливались на самых высоких частях берега, на их верхушке зажигался свет, направлявший корабли. Несмотря на то что сейчас маяки используют современные средства связи, свет остается источником визуальной коммуникации. Поскольку мобильные телефоны – это современная форма связи, я думаю, что пример с маяком может послужить хорошим примером для создания сетевого мидлета.
Одним из способов коммуникации маяков с экипажами корабля была азбука Морзе – очень удобный способ передачи слов и букв последовательностями «точек» и «тире». Точка – это короткий визуальный или звуковой сигнал, например, вспышка света или металлический звук. Тире по длительности приблизительно равно трем точкам, что соответствует более длительному звуку или вспышке света. Последовательность точек и тире задает отдельные слова. Ниже приведены коды азбуки Морзе.A – . – J – . – – – S – . . . 1 – . – – – -
B – – . . . K – – . – T – – 2 – . . – – -
C – . – . L – . – . – U – . . – 3 – . . . – -
D – – . . M – – – V – . . . – 4 – . . . . -
E – . N – – . W – . – – 5 – . . . . .
F – . O – – . X – – . . – 6 – – . . . .
G – – – . P – . – – . Y – . – . – 7 – – . . .
H – . . . . Q – – – . – Z – – – . . 8 – – – – . .
I – . . R – . – . 0 – – – – – – 9 – – – – – .Используя эти коды, вы можете составлять слова и предложения. После каждой буквы следует небольшая пауза, а в конце предложения – более продолжительная. Ниже приведен код слова «hello» в азбуке Морзе:
. . . . . . – . . . – . . – – -