Ім'я файлу: Лабораторна робота.docx
Розширення: docx
Розмір: 17кб.
Дата: 09.05.2021
Пов'язані файли:
Питання з Стародавнього світу.docx
ЗНМ2.docx
5 клас.docx
Розглянемо популярні стратегії виявленння вимог детальніше.docx
ГЛАВА 1.docx

Лабораторна робота №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;

} }

Контрольні питання

  1. Опишіть формат повідомлення-запиту протоколу HTTP за методом GET.

GET

Запитує вміст вказаного ресурсу. Запитаний ресурс може приймати параметри (наприклад, пошукова система може приймати як параметр шуканий рядок). Вони передаються в рядку URI (наприклад: http://www.example.net/resource?param1=value1¶m2=value2). Згідно зі стандартом HTTP, запити типу GET вважаються ідемпотентними — багаторазове повторення одного і того ж запиту GET повинне приводити до однакових результатів (за умови, що сам ресурс не змінився за час між запитами). Це дозволяє кешувати відповіді на запити GET. Якщо назва ресурсу не вказана (у URI наявні лише схема та доменне ім'я), то вебсервер повертає індекс директорії вебсервера.

  1. Назвіть основні елементи повідомлення-відповіді, яка генерується HTTP-сервером.

Перший рядок відповіді має такий вигляд:
HTTP/‹Версія› ‹Код статусу› ‹Опис статусу›

Коди статусу:

1хх — інформаційний: запит прийнятий, продовжуй процес.

2хх — успіх: дія була успішно передана, зрозуміла, та прийнята.

3хх — перенаправлення: наступні дії мають бути успішно виконані для реалізації запиту.

4хх — помилка клієнта: запит містить синтаксичні помилки або не може бути виконаний.

5хх — помилка сервера: сервер не зміг виконати правильно сформований запит.

Найбільш поширені статуси:
200 OK — запит виконано успішно.

301 Moved Permanently — ресурс переміщено.

403 Forbidden — доступ до запитаного ресурсу заборонений.

404 Not Found — ресурс не знайдений.

503 Service Unavailable — сервіс недоступний.


  1. Яку необхідно внести зміну в початковий текст розглянутої програми web–сервера для обробки запитів файлів типу GIF?

Якщо потрібно передати JPEG-файл, то рядок має вигляд Content-Type: image/jpeg, а у разі GIF-файлу — Content-Type: image/gif.
скачати

© Усі права захищені
написати до нас