Содержание
Введение 3
1.Разработка мессенджера на java 4
Заключение 18
Список литературы 19
2
Введение
3
1.Разработка мессенджера на java
8
3. Рисование в окне аплета. Аплет исполняет рисование в своём окне,
применяя методы класса Graphics, в котором целиком инкапсулированы
особенности аппаратной платформы. Для окна аплета создаётся объект
класса Graphics, ссылка на который передаётся методу Paint.
4. Растровые изображения. Рисование простых и анимированных
изображений считаетсяодним из самых распространённых применений
аплетов. Библиотеки классов Java содержат простые в применении средства,
которые предназначены для работы с растровыми изображениями форматов
GIF и JPEG: загрузки, масштабирования, создания на их базе анимационных
изображений.
5. Анимация. Аплеты Java предоставляют пользователю возможность
отображения небольших анимационных и видероликов на страницах Web —
сервера. Для этого нужно подготовить и разместить в каталогах Web сервера
файлы отдельных кадров фильма в формате GIF или JPEG. Аплет Java
загрузит эти изображения, после чего начнёт их поочерёдное отображение в
цикле. Данный цикл должен выполняться в отдельной задаче. [2]
6. Звук. Звуковые возможности аплетов Java ограничиваются
воспроизведением звуковых клипов, записанных только в файлах формата
AU (фирма Sun). Однако в Internet существует конвертеры для данного
формата (например, freeware программа GoldWave, доступная по адресу ftp.
winsite.com).
7. Взаимодействие между аплетами. Аплеты, которые расположены в
одном и том же документе HTML могут взаимодействовать между собой,
используя ссылки на иные аплеты, которые можно получить через интерфейс
AppletContext.
8. Обработка событий. Когда пользователь исполняет операции с
мышью или клавиатурой в окне аплета, возникают события, которые
передаются соответствующим методам класса Applet. Переопределяя эти
методы, можно организовать обработку событий, которые возникают в
процессе взаимодействия с мышью и клавиатурой [18, https://niscu.ru].
9
9. Реализация мультизадачности. Для создания мультизадачных
приложений Java необходимо использовать класс java. lang. Thread. В том
классе определены все методы, необходимые для создания задач, управления
их состоянием и синхронизации.
10. Работа с файлами. Хотя аплеты не имеют доступа к локальным
файлам, они могут обращаться к файлам, находящимся в каталогах WWW —
сервера. Библиотека классов языка Java содержит многочисленные средства,
которые предназначены для работы с файлами. Все взаимодействие
происходит через потоки следующих видов:[1]
стандартные потоки ввода и вывода,
потоки, которые связаны с локальными файлами,
потоки, которые связаны с файлами в оперативной памяти,
потоки, которые связаны с удалёнными файлами.
Сетевые приложения. Существует два аспекта сетевого
программирования на языке Java: доступ к файлам на WWW — серверах и
создание серверных и клиентских приложений с использованием сокетов.
Доступ к файлам осуществляет через потоки типа 7d и позволяет, например
пересылать необработанные данные с сервера на машину пользователя, а там
уже осуществлять их обработку и представление. Создание каналов между
приложениями Java с помощью сокетов открывает широкие возможности по
обработке информации по схеме клиент-сервер.
Описание классов и методов, использованных в программе
Класс ChatMessage
При установлении соединения через TCP фактически по сети
передаются байты.
Когда мы работаем между двумя приложениями Java, если оба имеют
доступ к тем же кодам, пересылаются объекты между двумя приложениями.
Serializable (cериализация) — это процесс сохранения состояния объекта в
последовательность байт; Deserializable (десериализация) — это процесс
восстановления объекта, из этих байт.
10
В данном приложении все сообщения, отправленные от сервера к
клиенту, имеют тип String, которая содержит само сообщение.
Класс Server
Класс Server отвечает за всю логику работы серверного приложения.
Можно запустить сервер введя: Java Server после предложения
консоли. Всё будет исполняться в консольном режиме и сервер будет ждать
соединения через порт 1500.
Для остановки сервера нужно использовать C.
Класс Client
Класс Client отвечает за всю логику работы клиентского приложения.
После запуска сервера можно запустить клиентское приложение,
введя:
Java Client на консольный порт. После этого запускается клиентское
приложение с именем пользователя Anonymous на локальном компьютере
через порт 880. Таким образом, команда эквивалентна;
Java Client Анонимные 880 локальный.
После того как приложение запустилось в консольном режиме можно
ввести:
Logout — выйти и закрыть соединение;
WHOISIN — чтобы получить список пользователей подключенных к
серверу;
Все остальное это сообщение, которое будет транслироваться, с
введённым именем пользователя, для всех клиентов чата.
Классы GUI
Для того, чтобы приложение выводилось на консоль, нужно три
класса. Остальные два класса (GUI) применяются в качестве дополнения, как
очень простой графический интерфейс пользователя.
GUI здесь простой графический интерфейс. Является как можно более
простым, без необычных шрифтов, цветов, иконок. Применяетеся класс
JTextArea.
11
Описание класса TextArea
С помощью класса TextArea можно создать многострочное поле
заданной ширины и высоты, снабженное полосами просмотра. Класс
TextArea создан на базе класса TextComponent, по этой причине для работы с
многострочными полями можно применять методы данного класса.
Краткое описание класса TextArea приведено ниже:
Конструкторы:
Создание поля без текста и без указания размеров public TextArea ();
Создание поля без текста с указанием размеров public TextArea (int
rows, int cols);
Создание поля с текстом без указания размеров public TextArea (String
text);
Создание поля с текстом и с указанием размеров public TextArea
(String text, int rows, int cols);
Создание поля TextArea.
Когда создается многострочное текстовое поле редактирования, то
можно употреблять конструктор, допускающий указание размеров поля в
строках и столбцах:
TextArea txt;
txt = new TextArea («Введите строку текста», 5, 35);
Созданное поле прибавляется в окно апплета методом add.
В классе TextArea есть методы для работы с блоками текста (вставка и
замена), а также методы, с помощью которых можно установить количество
строк и столбцов в поле редактирования.
Компонент JTextArea позволяет пользователям вводить и
редактировать несколько строк текста. Он прост в употреблении, но
позволяет работать только с неформатированными последовательностями
символов. Данный компонент не поддерживает стили, по умолчанию в нем
употребляется модель PlainDocument. Следовательно, данный компонент
ориентирован на обработку обыкновенного текста. JTextArea поддерживает
12
стандартные команды редактирования (конкретный набор команд зависит от
применяемого стиля).
Несмотря на то, что компонент JTextArea позволяет редактировать
текст, который состоит из нескольких строк, он не поддерживает прокрутку.
Если прокрутка необходима, следует поместить JTextArea в состав
JScrollPane. Именно в таком виде компонент JTextArea применяется в
большинстве приложений.[2]
Если не помещать текстовую область в состав панели с прокруткой,
необходимо указать при вызове конструктора число строк и столбцов. Если
компонент JTextArea включается в состав JScrollPane, размеры текстовой
области устанавливаются в соответствии с предпочтительными размерами
панели. При работе с компонентом JTextArea нужно учесть одну
особенность: если он используется без панели с прокруткой, то его размеры
будут увеличиваться с тем, чтобы в нем помещался весь введенный текст. В
результате возникнут проблемы с компоновкой. Это еще один аргумент в
пользу использования панели с прокруткой.
Компонент JTextArea не генерирует события действия. Набор
событий ограничивается теми, которые были унаследованы от
JTextComponent. В частности, при работе с данным компонентом возникают
события, связанные с текстовым курсором. Он также генерирует события
документа; это происходит при изменении модели. Для большинства
приложений достаточно обработчика событий текстового курсора. Более
того, работая с текстовой областью, можно вовсе отказаться от обработки
событий. Приложению достаточно извлекать текст по мере необходимости.
Подобно остальным текстовым компонентам, JTextArea считается
подклассом JTextComponent. Это обозначает, что при работе с данным
компонентом можно употреблять все методы, определенные в
JTextComponent. Можно извлечь содержимое текстовой области с помощью
метода getText (). Выделенный текст доступен посредством метода
13
getSelectedText (). Можно также выделять текст из программы, вызывая в
начале метод setCaretPosition (), а затем moveCaretPosition ().
Руководство пользователя
Запуск сервера
Начать нужно с запуска серверного приложения «Server» на одном из
компьютеров, подключенному к сети. Вводим номер порта 800 и нажимаем
кнопку «Start». Происходит подключение к серверу.
Рисунок 3.1 — Подключение сервера
Запуск клиентского приложения
После запуска серверного приложения запускаем клиентское «Client».
Вместо Anonymous прописывается имя пользователя, потом нажимаем
кнопку Login. О том, что подключение произошло будет выведена запись
типа: «Connection accepted localhost/127.0.0.1: 800» . [3]
Рисунок 3.2 — Подключение клиентского приложения
Запускаем следующее клиентское приложение от другого
пользователя. Посмотреть, кто подключён, можно при помощи кнопки «Who
is in». В текущих подключениях будет указанно число подключенных
пользователей, имя пользователей и время, дата их подключения.
Рисунок 3.3 — Текущие подключения
В итоге чат с сообщениями будет выглядеть приблизительно
следующим образом:
Рисунок 3.4 — Чат с обменом сообщениями
Выход из приложения осуществляется нажатием кнопки «Logout».
Появляется следующая запись: «Server has close the connection: java. io.
EOFException» .
Рисунок 3.5 — Выход из приложения
Для входа необходимо опять ввести имя пользователя и нажать
«Login» .
Функционал мессенджера для Андроид и iOS
14
Мессенджер (IM = Instant Messenger) - это программа, мобильное
приложение или веб-сервис для мгновенного обмена сообщениями.
Чаще всего под мессенджером понимают программу, в которую
пишут сообщения и где читают. Однако, за всякой такой программой стоит
сеть обмена сообщениями, которая тоже входит в понятие "мессенджер". Это
может быть сеть внутри вашей компании, а может быть глобальная сеть,
например Jabber.
По причине этого того, что этих сетей развелось довольно много,
отнюдь не все мессенджеры совместимы.
Нужно сказать, что понятие мессенджера уже давно не связывают
только с обменом текстовыми сообщениями. Сегодняшние мессенджеры уже
стали полноценными коммуникационными центрами, которые помимо
обмена сообщениями реализуют голосовую и видеосвязь, обмен файлами,
веб-конференции.
Наиболее знамениые мессенджеры - это WhatsApp, Viber, Facebook
Messenger, Skype, ICQ, Google Hangouts.
Для регистрации не применяется номер телефона.
При разработке регистрационного процесса мессенджера со всей
очевидностью стало понятно, что телефонный номер в качестве
идентификатора вообще не нужен и даже мешает.
Это приблизительно тоже самое чтобы делать так, чтобы какое-то
устройство поддерживало код Морзе, т. е. анахронизм в чистом виде.
Удивительно, но многие мессенджеры упорно продолжают
регистрировать по номеру телефона — видимо получить информацию о
владельце настолько значимо, что они мирятся со следующими проблемами:
Нет гарантированной доставки СМС по всем операторам.
Процент удачного приема СМС в среднем — 60-70% и это
неудивительно, т. к. имеется сотни стран, а в любой стране несколько
операторов и обеспечить работоспособность всякого роута достточно трудно.
15
Все крупные агрегаторы СМС (например Nexmo) вообще не
гарантируют доставку, а в такие страны как Афганистан например на
некоторых операторах вообще невозможно отправить СМС. На всякого
оператора у Nexmo несколько роутов и временами целые направления у
данногоагрегатора не работают неделями.
Таким образом, мессенджер не требует номера телефона владельца,
все что необходимо — выдумать логин, который проверяется на
уникальность и пароль.
Емайл при регистрации спрашивается только для того чтобы смогли
восстановить пароль. Т.е. если указывается неверный емайл или его не
подтвердить, то регистрация все равно произойдет, возможно восстановить
пароль если вы его забыли.
Мессенджер не требует доступа к записной книжке.
К сожалению, почти все знаменитые мессенджеры требуют доступ к
телефонной книге, одного номера телефона им недостаточно.
И люди не догадываются, насколько это может быть опасно.
Но недавний хайп вокруг приложения GetContact представляет что не
все так просто — уже слито более 2 млрд. номеров, причем слиты номера
тех, кто даже не устанавливал это приложение.
Стандартное шифрование
Мессенджер приеменяет стандартный протокол шифрования
TLS/SRTP. Шифруется все, в том числе аудио и видеозвонки.
В качестве простого независимого аудита можно сделать следующее
— включить параллельно аккаунту шлюз или IP телефон, который умеет
шифровать по TLS/SRTP и включить данную функцию — сервер поймет и
подхватит шифрование.
Безопасность и приватность.
Мессенджер получился более безопасный чем иные
разрекламированные мессенджеры, в главном благодаря той простой
причине, что мы не требуем номер и не требуем доступа к записной книжке.
16
Даже если представить гипотетический случай что удалась атака
MITM и удалось расшифровать сообщения, то будет совершенно непонятно
кому принадлежит переписка ибо нет самого главного — номера телефона и
нельзя идентифицировать стороны общения.
Общение только после одобрения запроса.
В мессенджере нельзя коммуницировать с пользователем, не отправив
запрос на начало общения и не получив разрешения у другой стороны.
17
Заключение
19