Ім'я файлу: Лабораторна робота.docx Розширення: docx Розмір: 17кб. Дата: 09.05.2021 скачати Пов'язані файли: Питання з Стародавнього світу.docx ЗНМ2.docx 5 клас.docx Розглянемо популярні стратегії виявленння вимог детальніше.docx ГЛАВА 1.docx АСФІКСІЯ.rtf перспективи розвитку профілактичного напрямку медицини.ppt Лабораторна робота №2 Тема: Розробка простого web-сервера Мета: ознайомлення з питаннями розробки додатків для Інтернету. Завдання: Змініть програму-сервер так, щоб вона не припиняла роботу після обробки одного запиту, а переходила в режим очікування наступного запиту - обробляла запити безперервно (без перезапуску). import java.io.*; import java.net.*; import java.util.*; class WebServer { public static void main(String argv[]) throws Exception { String requestMessageLine; String fileName; ServerSocket listenSocket = new ServerSocket(6789); Socket connectionSocket = listenSocket.accept(); BufferedReader inFromClient = new BufferedReader( new InputStreamReader( connectionSocket.getInputStream())); DataOutputStream outToClient = new DataOutputStream( connectionSocket.getOutputStream()); requestMessageLine = inFromClient.readLine(); StringTokenizer tokenizedLine = new StringTokenizer(requestMessageLine); if (tokenizedLine.nextToken().equals("GET")) { fileName = tokenizedLine.nextToken(); fileName = fileName.substring(1); System.out.println("Requested file is: " + fileName); File file = new File(fileName); int numOfBytes = (int) file.length(); FileInputStream inFile = new FileInputStream (fileName); byte[] fileInBytes = new byte[numOfBytes]; inFile.read(fileInBytes); outToClient.writeBytes("HTTP/1.0 200 Document Follows\r\n"); if (fileName.endsWith(".jpg")) outToClient.writeBytes("Content-Type: image/jpeg\r\n"); outToClient.writeBytes("Content-Length: " + numOfBytes + "\r\n"); outToClient.writeBytes("\r\n"); outToClient.write(fileInBytes, 0, numOfBytes); connectionSocket.close(); } Else Continue; } } Контрольні питання Опишіть формат повідомлення-запиту протоколу HTTP за методом GET. GET Запитує вміст вказаного ресурсу. Запитаний ресурс може приймати параметри (наприклад, пошукова система може приймати як параметр шуканий рядок). Вони передаються в рядку URI (наприклад: http://www.example.net/resource?param1=value1¶m2=value2). Згідно зі стандартом HTTP, запити типу GET вважаються ідемпотентними — багаторазове повторення одного і того ж запиту GET повинне приводити до однакових результатів (за умови, що сам ресурс не змінився за час між запитами). Це дозволяє кешувати відповіді на запити GET. Якщо назва ресурсу не вказана (у URI наявні лише схема та доменне ім'я), то вебсервер повертає індекс директорії вебсервера. Назвіть основні елементи повідомлення-відповіді, яка генерується HTTP-сервером. Перший рядок відповіді має такий вигляд: HTTP/‹Версія› ‹Код статусу› ‹Опис статусу› Коди статусу: 1хх — інформаційний: запит прийнятий, продовжуй процес. 2хх — успіх: дія була успішно передана, зрозуміла, та прийнята. 3хх — перенаправлення: наступні дії мають бути успішно виконані для реалізації запиту. 4хх — помилка клієнта: запит містить синтаксичні помилки або не може бути виконаний. 5хх — помилка сервера: сервер не зміг виконати правильно сформований запит. Найбільш поширені статуси: 200 OK — запит виконано успішно. 301 Moved Permanently — ресурс переміщено. 403 Forbidden — доступ до запитаного ресурсу заборонений. 404 Not Found — ресурс не знайдений. 503 Service Unavailable — сервіс недоступний. Яку необхідно внести зміну в початковий текст розглянутої програми web–сервера для обробки запитів файлів типу GIF? Якщо потрібно передати JPEG-файл, то рядок має вигляд Content-Type: image/jpeg, а у разі GIF-файлу — Content-Type: image/gif. |