Читаем Создание игр для мобильных телефонов полностью

public LHClient(LHCanvas c) {

canvas = c;

connected = false;

}

Метод start() класса LHClient точно такой же, как и аналогичный метод класса LHServer, поэтому давайте перейдем к методу run(). В листинге 14.3 приведен код метода run() класса LHClient. Листинг 14.3. Метод run() класса LHClient отвечает на сообщения, полученные от сервера

public void run() {

try {

// соединиться с серверным устройством

canvas.setStatus("Connecting to peer server..."); //Клиент отображает начальное соединение, что говорит о том, что он пытается соединиться с сервером

dc = null;

while (dc == null)

dc = (DatagramConnection)Connector.open("datagram://localhost:5555"); //Номер порта клиента должен совпадать с номером порта сервера

while (true) {

// попытаться отправить сообщение //Если соединение не установлено, отправить клиентское сообщение об установлении соединения серверу

if (!connected)

sendMessage("Client");

// попытаться принять пакет датаграммы

Datagram dg = dc.newDatagram(32);

dc.receive(dg);

// проверить, что датаграмма содержит данные

if (dg.getLength() > 0) {

String data = new String(dg.getData(), 0, dg.getLength());

if (data.equals("Server")) { //Ответить на сообщение сервера о соединении

// оповестить пользователя об установлении соединения

canvas.setStatus("Connected to peer server.");

connected = true;

}

else {

// отправить данные

canvas.receiveMessage(data); //Сообщение содержит символы азбуки Морзе, поэтому его следует передать холсту

}

}

}

}

catch (ConnectionNotFoundException cnfe) {

System.err.println("The network server is unavailable.");

}

catch (IOException ioe) {

}

}

Метод run() класса клиента очень похож на аналогичный метод класса сервера за исключением того, что в классе клиента отсутствует переменная адреса при отправлении датаграммы. Кроме того, URL немного отличается от того, который использовался в классе сервера. И снова важно отметить, что номер порта (5555) должен быть одинаковым для клиента и сервера.

Класс LHClient также реализует метод sendMessage(), который также очень похож на аналогичный метод сервера. В листинге 14.4 приведен код метода sendMessage() клиента.

Листинг 14.4. Метод sendMessage() класса LHClient отправляет строковое сообщение серверу как пакет датаграммы

public void sendMessage(String message) {

// отправить сообщение

try {

// преобразовать строку в массив байтов

byte[] bytes = message.getBytes();

// отправить сообщение

Datagram dg = null; //Упаковка данных в датаграмму и отправка клиенту

dg = dc.newDatagram(bytes, bytes.length);

dc.send(dg);

}

catch (Exception e) {

}

}

Единственное отличие методов sendMessage() сервера и клиента – это то, что версия класса клиента не использует адреса при отправлении пакета серверу. Это незначительное, но очень важное отличие. Холст мидлета Lighthouse Когда классы сервера и клиента созданы, перейдем к созданию холста класса Lighthouse. Класс называется LHCanvas, он выводит на экран информацию о ходе подключения, а также отображает нужную картинку с маяком в соответствии с получаемой информацией.

Перейти на страницу:

Похожие книги

1С: Управление торговлей 8.2
1С: Управление торговлей 8.2

Современные торговые предприятия предлагают своим клиентам широчайший ассортимент товаров, который исчисляется тысячами и десятками тысяч наименований. Причем многие позиции могут реализовываться на разных условиях: предоплата, отсрочка платежи, скидка, наценка, объем партии, и т.д. Клиенты зачастую делятся на категории – VIP-клиент, обычный клиент, постоянный клиент, мелкооптовый клиент, и т.д. Товарные позиции могут комплектоваться и разукомплектовываться, многие товары подлежат обязательной сертификации и гигиеническим исследованиям, некондиционные позиции необходимо списывать, на складах периодически должна проводиться инвентаризация, каждая компания должна иметь свою маркетинговую политику и т.д., вообщем – современное торговое предприятие представляет живой организм, находящийся в постоянном движении.Очевидно, что вся эта кипучая деятельность требует автоматизации. Для решения этой задачи существуют специальные программные средства, и в этой книге мы познакомим вам с самым популярным продуктом, предназначенным для автоматизации деятельности торгового предприятия – «1С Управление торговлей», которое реализовано на новейшей технологической платформе версии 1С 8.2.

Алексей Анатольевич Гладкий

Финансы / Программирование, программы, базы данных
Язык программирования C++. Пятое издание
Язык программирования C++. Пятое издание

Лучшее руководство по программированию и справочник по языку, полностью пересмотренное и обновленное под стандарт С++11!Р'С‹ держите в руках новое издание популярного и исчерпывающего бестселлера по языку программирования С++, которое было полностью пересмотрено и обновлено под стандарт С++11. Оно поможет вам быстро изучить язык и использовать его весьма эффективными и передовыми способами. Р' соответствии с самыми передовыми и современными методиками изложения материала авторы демонстрируют использование базового языка и его стандартной библиотеки для разработки эффективного, читабельного и мощного кода.С самого начала этой книги читатель знакомится со стандартной библиотекой С++, ее самыми популярными функциями и средствами, что позволяет сразу же приступить к написанию полезных программ, еще не овладев всеми нюансами языка. Большинство примеров из книги было пересмотрено так, чтобы использовать новые средства языка и продемонстрировать РёС… наилучшие СЃРїРѕСЃРѕР±С‹ применения. Эта книга — не только проверенное руководство для новичков в С++, она содержит также авторитетное обсуждение базовых концепций и методик языка С++ и является ценным ресурсом для опытных программистов, особенно желающих побыстрей узнать об усовершенствованиях С++11.Стенли Р'. Липпман работал старшим консультантом в Jet Propulsion Laboratory, архитектором РіСЂСѓРїРїС‹ Visual С++ корпорации Microsoft, техническим сотрудником Bell Laboratories и главным инженером- программистом по анимации в кинокомпаниях Disney, DreamWorks, Pixar и PDI.Р–РѕР·и Лажойе, работающий ныне в кинокомпании Pixar, был членом канадской РіСЂСѓРїРїС‹ разработчиков компилятора C/C++ корпорации IBM, а также возглавлял рабочую группу базового языка С++ в составе международной организации по стандартизации ANSI/ISO.Барбара Э. Му имеет почти тридцатилетний опыт программирования. На протяжении пятнадцати лет она работала в компании AT&T, сотрудничая с Бьярне Страуструпом, автором языка С++, и несколько лет руководила РіСЂСѓРїРїРѕР№ разработчиков С++.• Узнайте, как использовать новые средства языка С++11 и стандартной библиотеки для быстрого создания надежных программ, а также ознакомьтесь с высокоуровневым программированием• Учитесь на примерах, в которых показаны передовые стили программирования и методики проектирования• Р

Барбара Э. Му , Жози Лажойе , Стенли Б. Липпман

Программирование, программы, базы данных