
Добавил:
nechitay03
Только когда поступишь в технический вуз поймешь на сколько ты гуманитарий
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:JAVA ДЛЯ ПОТОКОВ ИВБО / ПР-15 / RandomNumberHttpServer
.javaimport java.io.*;
import java.net.*;
import java.util.*;
public class RandomNumberHttpServer {
private static final int PORT = 36; // Порт для сервера
// ФИО: Василий Пупкин Иванович
// Шифр: 040418
public static void main(String[] args) {
try (ServerSocket serverSocket = new ServerSocket(PORT)) {
System.out.println("Random Number HTTP Server запущен на порту " + PORT);
while (true) {
try (Socket clientSocket = serverSocket.accept()) {
handleClient(clientSocket);
}
}
} catch (IOException e) {
System.err.println("Ошибка запуска сервера: " + e.getMessage());
}
}
private static void handleClient(Socket clientSocket) throws IOException {
BufferedReader in = new BufferedReader(new InputStreamReader(clientSocket.getInputStream(), "UTF-8"));
PrintWriter out = new PrintWriter(new OutputStreamWriter(clientSocket.getOutputStream(), "UTF-8"), true);
String line = in.readLine();
if (line == null) return;
String[] requestParts = line.split(" ");
String method = requestParts[0];
String path = requestParts[1];
if (method.equals("GET") && path.startsWith("/random?")) {
handleRandomNumberRequest(path, out);
} else if (method.equals("GET") && path.equals("/info")) {
handleInfo(out);
} else {
handleNotFound(out);
}
}
private static void handleRandomNumberRequest(String path, PrintWriter out) {
try {
// Извлечение параметров min и max из URL
String[] params = path.split("\\?")[1].split("&");
int min = Integer.parseInt(params[0].split("=")[1]);
int max = Integer.parseInt(params[1].split("=")[1]);
if (min > max) {
sendHttpResponse(out, 400, "<h1>400 Bad Request</h1><p>Параметр min не может быть больше max.</p>");
} else {
int randomNumber = new Random().nextInt((max - min) + 1) + min;
sendHttpResponse(out, 200, "<h1>Сгенерированное число</h1><p>" + randomNumber + "</p>");
}
} catch (NumberFormatException e) {
sendHttpResponse(out, 400, "<h1>400 Bad Request</h1><p>Некорректные параметры. Проверьте формат чисел.</p>");
} catch (Exception e) {
sendHttpResponse(out, 400, "<h1>400 Bad Request</h1><p>Некорректные параметры.</p>");
}
}
private static void handleInfo(PrintWriter out) {
// Ответ с ФИО и шифром
String info = "<h1>Информация о студенте</h1>" +
"<p>ФИО: Василий Пупкин Иванович</p>" +
"<p>Шифр: 040418</p>";
sendHttpResponse(out, 200, info);
}
private static void handleNotFound(PrintWriter out) {
sendHttpResponse(out, 404, "<h1>404 Not Found</h1>");
}
private static void sendHttpResponse(PrintWriter out, int statusCode, String body) {
try {
byte[] responseBodyBytes = body.getBytes("UTF-8");
int contentLength = responseBodyBytes.length;
out.println("HTTP/1.1 " + statusCode + " " + (statusCode == 200 ? "OK" : statusCode == 400 ? "Bad Request" : "Not Found"));
out.println("Content-Type: text/html; charset=UTF-8");
out.println("Content-Length: " + contentLength);
out.println();
out.println(body);
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
}
}