Решение задачи: либо полное переопределение класса System (вместе с out и т д.), либо делается static блок инициализации, где на консоли печатается другое и выполняется System exit()


Скачать 338.52 Kb.
НазваниеРешение задачи: либо полное переопределение класса System (вместе с out и т д.), либо делается static блок инициализации, где на консоли печатается другое и выполняется System exit()
страница8/8
ТипРешение
filling-form.ru > Туризм > Решение
1   2   3   4   5   6   7   8

4.3Модификации задания


Модификации задания отличаются друг от друга по нескольким критериям; так что каждая из модификаций представляет собой некоторую комбинацию из нижеследующих пунктов. Здесь звездочками * обозначено то, что является модификациями обязательных требований (остальное относится к дополнительным требованиям).

  1. Различие по содержанию хранимой информации о занятости *:

    1. отдельные временные интервалы занятости задачей (между переключениями задач)

    2. время занятости задачей в течение дня

  2. Различие по формату хранения/передачи информации. Здесь сразу 3 критерия – для хранения иерархии, для хранения занятости, для передачи информации (иерархии + занятости + другое) *:

    1. текст (с разделителями) типа «список» или «таблица» (в случае структурно сложной информации, структура элементов текста линейная – «таблица»)

    2. текст (с разделителями) типа «дерево» (только для иерархической информации, строка текста содержит явное указание на ее уровень в иерархии)

    3. XML-совместимый формат

    4. сериализованные объекты

    5. собственный бинарный формат (при побайтовом чтении могут использоваться байты-разделители, хотя для хранения чисел, дат и т.п. разделители не нужны)

  3. Различие по размещению (клиент или сервер) следующих функций:

    1. загрузка иерархии задач (из файла) *

    2. сохранение/загрузка занятости (в файле) *

    3. обобщение информации о занятости (в случае, если эта информация хранится в обобщенном по дням виде; в противном случае информация обобщается лишь при генерации отчета)

    4. сохранение иерархии задач (в случае, если она редактируемая); выбор = выбор по п. 3.1

    5. генерация отчета (статистики)

  4. Различие по времени выполнения операций (при запуске, по запросу пользователя, при выполнении другой операции, при выходе). К операциям относятся:

    1. соединение клиента с сервером, – возможно, сопровождающееся загрузкой задачи и/или занятости с него (при запуске или по запросу) *

    2. сохранение занятости (при переключениях между задачами или по запросу или при выходе) *

    3. сохранение иерархии задач (при операциях редактирования задач или по запросу или при выходе)

Примечание к критерию 4. Загрузка чего-либо на клиенте происходит либо сразу после соединения с сервером (если загружать надо с сервера), либо при запуске (если из файла). Загрузка чего-либо на сервере происходит при его запуске.

4.4Лабораторная работа 2.6. Port Mapper


Краткое описание

Создать программу для перенаправления входящих (по какому-либо порту) соединений на другой компьютер.

Мотивация

Необходимо обеспечить доступ извне к HTTP-серверу, работающему на компьютере с виртуальным IP-адресом. С помощью Port Mapper-а можно организовать такой доступ с любого компьютера, на котором установлена Java-машина.

Детальное описание

Требуется написать серверное приложение (консольное приложение, не реагирующее на нажатие клавиш). Также можно написать «консоль администратора»: при подключении telnet-ом на определенный порт, можно осуществлять управление приложением. Для совсем продвинутых студентов – написать клиента.

Должен быть главный класс SocketTransmitter, который слушает какой-то порт, который указывается при создании экземпляра этого класса (см. диаграмму на следующей странице). При поступлении входящего соединения (3) он открывает новое исходящее соединение (4) на порт другого компьютера (назовем его сервером; порт и IP-адрес сервера указываются в конструкторе класса SocketTransmitter) и запускает два потока, передающие данные в обе стороны (6-11). Запросы клиента (12) принимает один из потоков и перенаправляет их на сервер (13). Второй поток передает данные в другую сторону: от сервера к клиенту (14, 15).

Запуск SocketTransmitte-’а не должен захватывать управление программой (он должен выполняться в отдельном потоке). Обязательно наличие функции, которая корректно завершает работу SocketTransmitte-’а. Все функции должны быть в обязательном порядке синхронизованы. Никаких race condition или deadlock-ов не должно быть.

Требования

Звездочками * отмечены обязательные требования, в скобках – количество баллов (может быть уменьшено, если требование реализовано не полностью, с ошибками, с замечаниями и т.п.).

  1. Поддержка неограниченного числа одновременных подключений. (3) *

  2. Грамотная синхронизация. Никаких race condition или deadlock-ов. (3) *

  3. Если никакие данные не передаются, приложение не должно загружать процессор. (2) *

  4. Ведение логов. Все ошибки должны грамотно складываться в лог. (2) *

  5. Сохранение/загрузка настроек в файле (xml-формат/properties-файл/сериализация). (4)

  6. Фильтры IP-адресов, квоты на трафик, статистика трафика. (2+3+3)

  7. Пул потоков. При каждом новом соединении не создается новый поток, а используется один из пула, при наличии там свободных потоков. (6)

  8. Администраторская консоль (через telnet); возможности:

  • Создание новых SocketTransmitter-ов

  • Удаление существующих

  • Список работающих

  • Помощь

  • Остановка сервера

  • Грамотная синхронизация. Никаких race condition или deadlock-’ов.

  • Аутентификация

(7+)

Следующие пункты имеют смысл только при наличии администраторской консоли.

  1. Графический клиент к администраторской консоли (5).

  2. Health-монитор. Следит за состоянием потоков, при запросе из администраторской консоли выдает состояния всех потоков (OK/Probably hung) (5).

  3. Documentation (Javadoc), Code style и прочее. (6)


4.5Лабораторная работа 2.7. Игровой сервер


Краткое описание

Реализовать клиентское и серверное приложения: «игровой сервер». Предлагается создать программу, которая предоставит возможность двум (или более) пользователям играть друг с другом по сети.

Детальное описание

Сервер содержит список игроков - тех, кто сейчас подключен к серверу. Игроки делятся на две группы: «играющие» и «свободные». Группа «Играющие» состоит из игроков, которые участвуют в какой-либо партии. Соответственно в группе «свободные» - игроки, которые сейчас не участвуют ни в одной партии. При подключении к серверу игрок попадает в группу «свободные». Игрок переходит в группу «играющие» когда он присоединяется к уже существующей партии или начинает новую. Соответственно, когда «партия» заканчивается, игрок возвращается в группу «свободные».

Под термином «партия» подразумевается один сеанс связи между игроками (через сервер), в процессе которого они обмениваются информацией о сделанном ходе и текущем состоянии. Есть несколько вариантов контролирования этого процесса (обмена данными):

  • сервер самостоятельно контролирует соблюдение правил, вычисляет новые состояния для всех игроков и рассылает эту информацию всем участникам; контроль завершения партии осуществляется сервером;

  • клиенты самостоятельно контролируют правильность хода; при возникновении конца партии (например, мата в шахматах) один или несколько клиентов уведомляют об этом сервер;

  • клиенты только реализуют отображение и пересылку информации; при возникновении конца партии один из игроков сообщает об этом серверу, после чего сервер спрашивает согласия остальных игроков на завершение партии (при этом запрашиваются информация о том, кто проиграл, а кто выиграл). Предполагается, что игроки честные, и реализовывать проверки в программе не надо.

Сервер хранит некоторые данные об игроках: имя, пароль, ранг и др. Для вычисления ранга можно использовать, например, следующий алгоритм: каждому новому игроку дается определенное количество очков. Пусть k – коэффициент «значимости» партии (k << 1). При окончании партии сервер выполняет следующие изменения количества очков: если ничья, то каждому игроку прибавляется количество очков оппонента, умноженное на k/2. Иначе выигравшему начисляется количество очков проигравшего, умноженное на k.

Требования

Звездочками * отмечены обязательные требования, в скобках – количество баллов (может быть уменьшено, если требование реализовано не полностью, с ошибками, с замечаниями и т.п.).

  1. При подключению к серверу клиент получает список игроков из группы «свободные», после чего он может выбрать, с кем он бы хотел сыграть. Выбранному сопернику посылается запрос, согласен ли он сыграть с таким-то игроком и в случае получения утвердительного ответа начинается партия. (5) *

  2. Завершение партии должен контролироваться программой (либо клиентом, либо сервером). (4) *

  3. При долгом бездействии игрока в партии, ему выводится предупреждение «idling». Если он не проявит активности, то соединение с ним закрывается. (3)

  4. Использование XML для обмена данными между сервером и клиентом. (4)

  5. Для каждого игрока сервер должен вести статистику: количество выигранных и проигранных партий, сколько всего времени провел на сервере, ранг (очки). (2)

  6. При подключении к серверу клиент получает список всех игроков. При выборе в качестве соперника игрока из группы «играющие» сервер должен выполнить действия, описанные в пункте 1 после того, как выбранный игрок закончит текущую партию. То есть сервер поддерживает «ожидание игрока»: клиент выбирает игрока, который уже с кем-то играет, чтобы сыграть с ним, когда он освободится (сервер автоматически сообщает, что выбранный игрок закончил свою партию). (4)

  7. Возможность банить игроков/ip адреса. (3)

  8. Возможность восстановления игровой позиции в случае разрыва связи с одним клиентом. То есть при обрыве соединения клиенту дается возможность подключиться к серверу в течении некоторого времени (например, 2 минут) и если он подключится – партия должна продолжиться. (5)

  9. Сохранение пользовательских настроек на сервере. (3) *

  10. Ограничение времени, данного игроку на раздумывание (на партию 30 минут каждому игроку) – то есть в сумме игрок не может размышлять над своим ходом более какого либо времени. (4)

  11. Поддержка «чемпионатов». (6)

  12. Возможность сохранения партии в файл. (3)

  13. Изменение Look-and-Feel на клиенте. (2)

  14. Организовать ведение логов на сервере. (2) *

Модификации задания

В качестве модификаций задания предлагается реализовать различные игры (баллы также зависят от реализованной игры). В зависимости от сложности реализации контроля соблюдения правил за различные игры начисляется различное количество баллов. Cложные игры (шахматы, нарды, домино), где для написания клиента может потребоваться много времени, рекомендуются задавать только студентам из групп углубленного изучения Java.

Игры:

  1. Шашки.

  • Поле: 8x8.

  • Правила игры, контролируемые программой: окончание партии; если есть возможность, игрок должен «брать» максимальное количество фишек противника.

  • Реализация: Java2D; JTable+JLables; Console

  • Ресурсы: http://www.shashki.com/

  1. Шахматы.

  1. «Точки» («ГО»).

  • Поле: размер поля на усмотрение студента.

  • Правила игры, контролируемые программой: окончание партии; «окружение» точек противника

  • Реализация: Java2D

  • Ресурсы: http://www.tochki-club.narod.ru/; http://forum.kido.com.ru/

  1. Морской Бой.

  • Поле: 10x10

  • Правила игры, контролируемые программой: окончание партии;

  • Реализация: Java2D или JTable+JLables

  1. Нарды.

  • Правила игры, контролируемые программой: окончание партии; корректность хода;

  • Реализация: Java2D

  • Ресурсы: http://amis.h11.ru/nardprav.htm

  1. Домино.

  • Правила игры, контролируемые программой: окончание партии; правильность хода

  • Реализация: Java2D

  • Ресурсы: http://www.orgdosug.ru/pubcatalog.php?cid=83

  1. «Быки И Коровы»
1   2   3   4   5   6   7   8

Похожие:

Решение задачи: либо полное переопределение класса System (вместе с out и т д.), либо делается static блок инициализации, где на консоли печатается другое и выполняется System exit() iconТиповая форма договора банковского вклада с неснижаемым остатком в рублях «Премиальный»
Года), с одной стороны, и "Вкладчик" (либо "Вноситель" в случае внесения вклада на имя третьего лица), с другой стороны, вместе либо...

Решение задачи: либо полное переопределение класса System (вместе с out и т д.), либо делается static блок инициализации, где на консоли печатается другое и выполняется System exit() iconКонтрольная работа по термодинамике выполняется либо в отдельной...
Изучение дисциплины базируется на знании материала дисциплин: «Физика», «Химия», «Математика», «Гидравлика», «Инженерная графика»,...

Решение задачи: либо полное переопределение класса System (вместе с out и т д.), либо делается static блок инициализации, где на консоли печатается другое и выполняется System exit() iconR/3 System Release 46B 30. 10. 2000
Разработка с использованием abap-инструментальных средств (упражнения) 28

Решение задачи: либо полное переопределение класса System (вместе с out и т д.), либо делается static блок инициализации, где на консоли печатается другое и выполняется System exit() iconPhone Conversation”
В его основе лежит решение какой-либо задачи, проблемы (от греческого problema- «задача, задание»)

Решение задачи: либо полное переопределение класса System (вместе с out и т д.), либо делается static блок инициализации, где на консоли печатается другое и выполняется System exit() icon1 общая характеристика гостиничного бизнеса 6
Характеристики компьютерных программ бронирования (на примере Fidelio Hotel Management System) 52

Решение задачи: либо полное переопределение класса System (вместе с out и т д.), либо делается static блок инициализации, где на консоли печатается другое и выполняется System exit() iconПро gps
«Global Positioning System», которое дословно можно перевести, как «глобальная система позиционирования»

Решение задачи: либо полное переопределение класса System (вместе с out и т д.), либо делается static блок инициализации, где на консоли печатается другое и выполняется System exit() iconDiasoft System Architect
Перед началом работы с системой описания бизнес-объектов необходимо проверить у себя на машине

Решение задачи: либо полное переопределение класса System (вместе с out и т д.), либо делается static блок инициализации, где на консоли печатается другое и выполняется System exit() iconРешение задач (с показом алгоритма решения)
Эссе — (фр essai – попытка, проба), небольшое прозаическое сочинение свободной композиции, выражающее впечатления автора от чего...

Решение задачи: либо полное переопределение класса System (вместе с out и т д.), либо делается static блок инициализации, где на консоли печатается другое и выполняется System exit() iconРекомендации ООН st/SG/AC. 10/30 «Globally Harmonized System of Classification...
Оон st/SG/AC. 10/30 «Globally Harmonized System of Classification and Labelling of Chemicals (Согласованная на глобальном уровне...

Решение задачи: либо полное переопределение класса System (вместе с out и т д.), либо делается static блок инициализации, где на консоли печатается другое и выполняется System exit() iconДокументация об открытом запросе предложений
Работы по техническому обслуживанию программного комплекса интегрированной диспетчерской службы на базе модуля pi-system

Вы можете разместить ссылку на наш сайт:


Все бланки и формы на filling-form.ru




При копировании материала укажите ссылку © 2019
контакты
filling-form.ru

Поиск