Антиплагиат (1231616), страница 7
Текст из файла (страница 7)
Использование дополнительных процессов при тестировании функционала, очень замедляет приложение.[1]Но так как СУБД их не имеет, то и прилож ение работает на преж нем уровне.Поэ тому выбор остановился на СУБД SQLite, т.к. имеет соответствующ ие преимущ ества для кроссплотформенного прилож енияонлайн-консультанта, а недостатки данной СУБД не критичны.4 РЕАЛИЗАЦИЯ ПРИЛОЖ ЕНИЯ «ОНЛАЙН-КОНСУЛЬТАНТ»В предыдущ ей главе выбраны язык программирования, среда разработки, а такж е способы обмена сервера с различными видамиклиентов.Перейдем к реализац ии системы «онлайн-консультант», структурная схема взаимодействия которой представлена на рисунке 13.Рисунок 13 – Реализуемая схема соединенияДанная схема физически упрощ ена, по сравнению со схемой указанной на рисунке 7.
Теперь в роли web-сервера компанииразработчика выступает web-сервер предприятия, который помимо э того такж е является связующ им звеном меж ду компьютераhttp://dvgups.antiplagiat.ru/ReportPage.aspx?docId=427.24088421&repNumb=115/2320.06.2016Антиплагиатсотрудников компании.4.1 Реализац ия клиентского прилож енияКлиентское прилож ение построено таким образом, что графическая оболочка программы отделена от её функц иональной работы.Запуск программы начинается с активац ии её основного класса main().
Данный класс последовательно выполняет следующ ее:– поиск файла конфигурац ии config.cnf и загрузка данных из него, если такие присутствуют и файл сущ ествует. В э том файлеописаны все основные настройки запуска клиентской части, такие как IP адрес сервера, номер порта и прочее. Код выглядитследующ им образом:readFile = new ufferedReader(new FileReader("config.cnf"));String s=readFile.readLine();while(s!=null){if(s.equals("[Server configer]")){ip=readFile.readLine().split("=")[1];port=Integer.parseInt(readFile.readLine().split("=")[1 ]);}s=readFile.readLine();};– запуск графического уведомления пользователя о состоянии подключения к серверному прилож ению с фоновым изображ ением(рисунок 14), а такж е различных всплывающ их сообщ ений, уведомляющ их об ошибке подключения, выбора адреса сервера и порта;Рисунок 14 – фоновое изображ ение– подключение к серверу, используя выбранные параметры настройки IP адреса и номера порта;– запись данных с параметрами настройки подключения в файл config.cnf, при условии, что подключение выполнено успешно;– запуск окна авторизац ии пользователя;– открытие канала получения и канала отправки данных на сервер/с сервера;– при успешной авторизац ии – запуск графической оболочки программы, состоящ ей из главного окна прилож ения, активной иконкив области уведомлений операц ионной системы;– ож идание завершения потоков передачи и получения данных со стороны клиента.Подробно опишем проц есс авторизац ии пользователя, при подсоединении к серверному прилож ению.
Графический интерфейспользователя показан на рисунке 15.Рисунок 15 – Окно авторизац ии пользователяПосле введения данных и наж атия на кнопку «Авторизац ия» данные имени и пароля отправляются на сервером с кодом «$toServer$100», что означает передача серверу данных авторизац ии. На данный запрос приходит ответное сообщ ение с сервера обуспешности авторизац ии (код «$accept$») или её ошибке (код «$notaccept$»). Код совершенных команд следующ ий:public void sendLogPass(String log, String pass){out.println("$toServer$ 100"); //Код авторизац ииout.println(log);out.println(pass);};while ((input=in.readLine())!=null) {switch(input){case "$accept$":{isAutor=true;id=Integer.parseInt(in.readLine().split("=")[1]);this.sleep(2000);break;}case "$notaccept$":isAutor=false; break;}}Если авторизац ия прошла успешно, то активируется иконка в системном лотке операц ионной системы (рисунок 16) и основное окнопрограммы (рисунок 17).Рисунок 16 – Иконка активного прилож енияДиалоги с сотрудниками загруж аются в основное окно в виде массива, который заполняется либо при подключении к серверу (припервом подключении происходит загрузка данных с сервера и сохраняется в файл), либо из файла (при повторном запускепрограммы).
Код программы представлен ниж е:try{Is=new HashMap<Integer,String>();readFile = new ufferedReader(new FileReader("temp00"));String s=readFile.readLine();while(s!=null){Is.put(Integer.parseInt(s.split(":")[0]),s.split(":")[1]);if(Integer.parseInt(s.split(":")[0])==get.getI()){thisI=Integer.parseInt(s.split(":")[0]);}s=readFile.readLine();}}catch(IOException ex){if(ex.getMessage().contains("Не удается найти указанныйфайл")){send.sendSingleRequest("$toServer$ 200");}}http://dvgups.antiplagiat.ru/ReportPage.aspx?docId=427.24088421&repNumb=116/2320.06.2016АнтиплагиатПри выборе диалога с сотрудником (рисунок 17), данные переписки меж ду пользователя такж е загруж аются из файла, созданногоранее на компьютере владельц а, либо с сервера, если такие данные сущ ествуют.
Код программы представлен ниж е:try{readFile = new ufferedReader(newFileReader("itempd"+thisI));String s=AES.decrypt(readFile.readLine(),"coding");String to;while(s!=null){if(s.startsWith("[withI=")){to=s.split("=")[1];to=to.substring(0, to.length()-1);LinkedHashMap<String, String> tempHashMap=newLinkedHashMap<String, String>();s=AES.decrypt(readFile.readLine(),"coding");while(!s.contentEquals("[end]") && s!=null){tempHashMap.put(s.split(":", 2)[0], s.split(":", 2)[1]);s=AES.decrypt(readFile.readLine(),"coding");}talks.put(Integer.parseInt(to), tempHashMap);}s=AES.decrypt(readFile.readLine(),"coding");}readFile.close();}catch(IOException ex){if(ex.getMessage().contains("Не удается найти указанныйфайл")){send.sendSingleRequest("$toServer$ 201");}}Из кода видно, что файл, содерж ащ ий текст переписки, закодирован при помощ и алгоритма AES.AES (Advanced Encryption Standard) – симметричный алгоритм блочного шифрования, принятый в качестве стандарта шифрованияправительством США.
Алгоритм[41]является надёж ным, чтобы использовать его для защ иты сведений, составляющ их государственную тайну [40].Рисунок 17 – Чат меж ду сотрудникамиПри наж атии на кнопку «Отправить» сообщ ение, набранное в текстовом поле, отправляется на сервер в следующ ем порядке:– отправка на сервер кода «$toI$ id», где id – I номер клиента, которому предназначается сообщ ение;– отправка текста сообщ ения;– отправка кода «$end$», который сигнализирует серверу о том, что сообщ ения закончены.Код данных действий представлен ниж е:public void sendMassege(int id, String text){out.println("$toI$ "+id);out.println(text);out.println("$end$");}Клиентское прилож ение постоянно прослушивает поток с данными от сервера, и при поступлении кодового значения «$fromI$»считывает значения I пользователя, от которого пришло сообщ ение, а такж е последовательность строк с отправленными серверомданными.
При получении финального кода «$end$», сообщ ение сохраняется в общ ий список, а прилож ение сигнализируетсоответствующ ей иконкой пользователю, о том, что поступили новые данные (рисунок 18).Рисунок 18 – Реакц ия прилож ения на новое сообщ ениеПроц едура общ ения с клиентами компании организуется вышесказанным образом, за исключением того, что данные переписки склиентами, не хранятся на сервера, а постоянно загруж аются с сервера. Чат с клиентами показан на рисунке 19.Код добавления входящ его сообщ ения от клиента компании представлен ниж е:try{String input;while ((input=in.readLine())!=null){System.out.println(input);switch(input){case "$fromClientI$":{int from=Integer.parseInt(in.readLine());String what = "";while (!(input = in.readLine()).equals("$end$")){what+=input+"\r\n";}what=what.substring(0, what.length()-2);GUI.MainFrames.AddClientMassege(what, from, false);GUI.MainFrames.UpdateStatMessages(from, 1);break;}default: System.out.println(input); break;http://dvgups.antiplagiat.ru/ReportPage.aspx?docId=427.24088421&repNumb=117/2320.06.2016Антиплагиат}}System.out.println("close");} catch(Exception e){e1.printStackTrace();}}Рисунок 19 – Чат с клиентами компанииДалее будет реализац ия модуля сайта.4.2 Реализац ия модуля для сайтаДля решения главной задачи курсового проекта – написания прилож ения «Онлайн-консультант», не обойтись без универсальногоWeb-модуля, через которое будет осущ ествляться обмен сообщ ениями меж ду консультантом и гостем сайта.Модуль для сайта представлен на рисунке 20.Рисунок 20 – Web-модуль онлайн-консультантаМодуль состоит из надписи, содерж ащ ей имя консультанта, окна с текстом переписки, поля для ввода текста и кнопки отправить.Во время открытия страниц ы с сайтом, модуль скрыт в правой части э крана.















