Файл: I. основные сведения о предприятии ооо сах. Ком.doc

ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 26.10.2023

Просмотров: 344

Скачиваний: 2

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
new AuthorizePacket();AP.read(in);switch (AP.getSost()) {case 1: {Cipher encrypter_RSA = Cipher.getInstance("RSA"); KeyFactory kf = KeyFactory.getInstance("RSA");encrypter_RSA.init(Cipher.ENCRYPT_MODE,kf.generatePublic(new X509EncodedKeySpec(AP.getKey())));AP.setKey(encrypter_RSA.doFinal(KeyAES.getEncoded()));sendPacket(AP,client);break;}case 2:{name = AP.getName();if (AP.getCheck().equals("ВсеОк")){value = name+

  • IP: "+client.getInetAddress().getLocalHost().getHostAddress().toString(); Server.csls.put(value, client);
MesPacket M = new MesPacket(encrypter_AES.doFinal((""+name + " вошел в чат"+"").getBytes()));M.readAll();break;}AP.setSost((short)3);sendPacket(AP,client);close();}default: {MesPacket M = newMesPacket(encrypter_AES.doFinal((""+name + "
вышел из чата"+"
").getBytes()));M.readAll();close();break;}}break;}}} elseThread.sleep(10);}} catch (Exception e) {System.err.println("Отключение"+name);close();}}Подключение к серверу (на клиенте):private void Start() {try {TextChat.getDocument().insertString(TextChat.getDocument().getLength(), "Идет подключение..." + "\n", null);socket = new Socket(sip, 9322);//обработка в случае успешного соединения с сервером.handle();} catch (Exception e) {try {TextChat.getDocument().insertString(TextChat.getDocument().getLengt h(), "Не удалось подключиться к серверу, закройте приложение" + "\n", null);} catch (BadLocationException e1) { System.exit(0);}}}public static void sendPacket (AbsPacket P,Socket s){ DataOutputStream out;try {out = new DataOutputStream(s.getOutputStream());out.writeShort(P.GetId()); //считываем id пакета и пишемP.write(out);out.flush();} catch (IOException e) { try {s.close();} catch (IOException e1) {}System.out.println("Закрытие потока");}}


public void close() {
Server.csls.remove(value);interrupt();}}public void readPacket() { //на клиентеtry {short id = in.readShort();switch (id) {case 1: {try {int size = in.readInt();int lenByte = in.readInt();byte[] b = new byte[lenByte];in.read(b);int sh = 0;String a = new String (decrypter_AES.doFinal(b)); StringBuffer buf = new StringBuffer(a);HTMLEditorKit kit = (HTMLEditorKit) TextChat.getEditorKit();if (size > 0)for (int i = 0; i < size; i++) {int C = in.readInt() + sh;int S = in.readInt();buf.replace(C - 1, C, "");System.out.println("buf = " + buf);sh += 24 + listPathIm[S].length();}kit.insertHTML((HTMLDocument)TextChat.getDocument(), TextChat.getDocument().getLength(),"[" + formating.format(System.currentTimeMillis()) + "] " + buf, 0, 0, null); panel.updateUI();} catch (BadLocationException e) {}break;}case 3: {AuthorizePacket AP = new AuthorizePacket();AP.read(in);if (AP.getSost() == 1) {Cipher decriptCipher = Cipher.getInstance("RSA"); decriptCipher.init(Cipher.DECRYPT_MODE, kP.getPrivate());SecretKey Key = newSecretKeySpec(decriptCipher.doFinal(AP.getKey()), "AES");encrypter_AES.init(Cipher.ENCRYPT_MODE, Key);decrypter_AES.init(Cipher.DECRYPT_MODE, Key);AP.setSost((short) 2);AP.setName(name);sendPacket(AP);} else {

TextChat.getDocument().insertString(TextChat.getDocument().getLengt h(), "Ошибка аутентификации, закройте приложение" + "\n", null);

}
}
}
} catch (Exception e) {
e.printStackTrace();
}
}

private void handle() { //на клиенте
try {
out = new DataOutputStream(socket.getOutputStream()); in = new DataInputStream(socket.getInputStream());
sendPacket(new AuthorizePacket(kP.getPublic().getEncoded(),(short)1));
while (true) {
if (in.available() > 0)
readPacket();
else
try {
Thread.sleep(10);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
} catch (Exception e) {
System.err.println("Ошибка чтения/передачи");
close();
e.printStackTrace();
}
}


Каждый пакет данных пересылающийся клиентом или сервером присваивается свой id. Это позволяет структурировать разного рода, типа информацию.
Java, строгий язык на котором можно решать в принципе любую задачу, благодаря кроссплатформенности может работать на разных платформах что очень важно для клиентской части.
Алгоритм работы системы программы выглядит следующим образом:


  1. Сервер подключается к порту на хосте и ждет соединения с клиентом;

  1. Клиент создает сокет и пытается соединить его с портом на хосте;

  1. Если создание сокета прошло успешно, то сервер переходит в режим ожидания команд от клиента;

  1. Клиент формирует команду и передает ее серверу, переходит в режим ожидания ответа;

  1. Сервер принимает команду, выполняет ее и пересылает ответ клиенту;

  1. Клиент обрабатывает полученную информацию и выводит её пользователю в удобном виде, для её восприятия.

  1. Пока клиент или сервер не разорвет соединение смотреть пункт 4.
Приложение объединяет в себе два режима:

  • Режим сервера: Запускает сервер на порту 9322. Представляет с собой окно со списком подключившихся к нему клиентов. В верхней части окна отображается IP адрес по которому клиенты имеют возможность подключиться;

  • Режим клиента: открывается окно в котором нужно ввести IP сервера и “nickname” который должен состоять от 5 до 15
латинских, русских символов или цифр.При создании сервера генерируется симметричный ключ алгоритмом AES этим ключом сервер шифрует всю информацию, передаваемую клиентам. Для получения этого ключа клиент при подключении к серверу генерирует у себя парный ключ (публичный и приватный) алгоритмом RSA.

Рис. 5 Главное менюРис. 6 Подключение к серверу


Рис. 7 Режим сервера
Разработанное приложение работает везде где можно установить Java Runtime Environment 7 или выше. Имеет хорошую степень защиты информации т.к использует алгоритм AES, принятый в качестве стандарта шифрования правительством США в 2001 году.
2.3.2 Результат тестирования клиент-серверного приложения Разработанное веб-приложение прошло функциональное тестирова-ние. Функциональное тестирование – это тестирование программного обеспечения с целью проверки соблюдения функциональных требований, то есть способности программного обеспечения в определенных условиях решать за-дачи, поставленные перед ней на этапе проектирования. Результаты тестирования приведены в таблице 2. Проведены необходимые тесты, охватывающие весь функционал разработанного клиент-серверного приложения. Таблица 2 - Функциональное тестирование



Название те-




Шаги

Ожидаемый

Тест

п/п

ста







результат

пройден?



















1.

Авторизация

1.

Пользователь захо-

Пользователь

Да







дит на страницу авто-

авторизуется,










ризации.

попадает в ин-










2.

Вводит логин и па-

терфейс адми-










роль.

нистратора и










3.

Нажимает кнопку

получает его










«Войти».

права.






















2.

Добавление

1.

Администратор за-

Новый админи-

Да




нового

ходит на страницу

стратор создан,







администра-

списка администрато-

администратор







тора

ров.

перенаправля-










2.

Администратор

ется на страницу










нажимает кнопку «До-

редактирования










бавить».

пользователя.










3.

Администратор













вводит новые логин и













пароль и нажимает













кнопку «Сохранить».

























3.

Удаление

1. Администратор за-

Выбранные ад-

Да




администра-

ходит на страницу

министраторы







тора

списка администрато-

удалены, адми-










ров.

нистратор пере-










2. Администратор вы-

направляется на










бирает одного или не-

ту же страницу.










скольких пользовате-













лей из списка.













3. Администратор













выбирает «Удалить»,













а затем «Выполнить»













и подтверждает дей-













ствие.






















4.

Удаление

1. Администратор за-

Выбранные

Да




сотрудников

ходит на страницу

альбомы со-










просмотра альбомов

трудников и










сотрудников.

связанные с










2. Администратор вы-

ними записи










бирает одного или не-

удалены, адми-










скольких сотрудников

нистратор пе-










из списка.

ренаправляется










3. Администратор

на ту же стра-










выбирает «Удалить»,

ницу.










а затем «Выполнить»













и подтверждает дей-













ствие.

























5.

Просмотр дан-

1. Администратор за-

Происходит пе-

Да







ных конкрет-

ходит на страницу

реход на стра-










ного сотруд-

просмотра альбомов

ницу с дан-










ника

сотрудников.

ными сотруд-













2. Администратор

ника. Данные













нажимает на ссылку,

отображаются













ведущую на стра-

корректно и













ницу отслеживания

упорядочено.













сотрудника.




























6.

Установка ло-

1. Администратор за-

Клиент скопи-

Да







кального кли-

пускает локальный

рован в папку










ента

клиент с заданными

на компьютере,













параметрами

в реестр добав-













2. Локальный клиент

лена запись для













устанавливается, до-

автозапуска, на













бавляет запись в ре-

сервере создан













естр, создает конфи-

альбом нового













гурационный файл.

сотрудника.













3. Локальный клиент
















создает на сервере
















новый альбом со-
















трудника.

























Для реализации апробации было проведено тестирование приложения в компании «Сах.ком». Для выявления ошибок была создана анкета с вопросами, которая заполнялась после тестирования приложения.Анкета 1.Результаты тестирования приложения

  1. ОС с который вы запускали данное приложение:

    1. Windows

    1. Linux

    1. Mac OS X

    1. Другое:_____________

  1. Были ошибки во время работы приложения, если да, то какие?
Развернутый ответ:________________________________

  1. Удобный интерфейс?

    1. Да

    1. Нет

  1. Оцените приложение по шкале от 1 до 5

  1. Пожелания для улучшения дизайна/работы приложения Развернутый ответ:________________________________
Результаты тестирования показали следующее:

  1. Ошибки во время работы приложения небыли обнаружены;

  1. Интерфейс посчитали удобным 95,5% тестируемых (Рисунок 12);
Рис.8. Оценка удобства интерфейса

  1. Средняя оценка приложения составила: 4,59 (Рисунок 13);
Рис.9. Оценка работоспособности и устойчивости приложения




  1. Все пожелания были учтены, приложение доработано за несколько дней.
Рис. 10 Платформы, на которых протестирована работа приложенияПо результатам анкетирования критических багов не обнаружено. Найденные ошибки были исправлены в следующей версии, как пожелания и замечания тестировщиков.

  1. Игра была установлена и работала под разными версиями операционных систем (Рисунок 14);

  1. Ошибки во время работы приложения небыли обнаружены;