Wymagania:
a+b (np. 12+30)Wskazowki:
split(„\+”)try-with-resourcesRozwiazanie (przykladowy serwer):
try (ServerSocket server = new ServerSocket(5001)) { while (true) { try (Socket client = server.accept(); BufferedReader in = new BufferedReader(new InputStreamReader(client.getInputStream())); PrintWriter out = new PrintWriter(client.getOutputStream(), true)) { String expr = in.readLine(); String[] parts = expr.split("\\+"); if (parts.length != 2) { out.println("BLAD FORMATU"); continue; } int a = Integer.parseInt(parts[0].trim()); int b = Integer.parseInt(parts[1].trim()); out.println(a + b); } catch (Exception ex) { // obsluga pojedynczego klienta } } }
Wymagania:
STOP konczy dzialanieWskazowki:
trim()DatagramPacket na kazde receiveRozwiazanie (przykladowe):
int counter = 0; try (DatagramSocket socket = new DatagramSocket(6001)) { byte[] buffer = new byte[1024]; while (true) { DatagramPacket packet = new DatagramPacket(buffer, buffer.length); socket.receive(packet); String text = new String(packet.getData(), 0, packet.getLength(), StandardCharsets.UTF_8).trim(); counter++; System.out.println(counter + ": " + text); if ("STOP".equalsIgnoreCase(text)) break; } }
Wymagania:
Wskazowki:
HttpClient i HttpRequesthttps://jsonplaceholder.typicode.com/todos/1Rozwiazanie (przykladowe):
HttpClient client = HttpClient.newBuilder() .connectTimeout(Duration.ofSeconds(5)) .build(); HttpRequest request = HttpRequest.newBuilder() .uri(URI.create("https://jsonplaceholder.typicode.com/todos/1")) .timeout(Duration.ofSeconds(5)) .GET() .build(); HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString()); System.out.println("Status: " + response.statusCode()); System.out.println(response.body());
Wymagania:
Wskazowki:
CopyOnWriteArrayList<PrintWriter>Rozwiazanie (szkic):
static List<PrintWriter> clients = new CopyOnWriteArrayList<>(); void handle(Socket socket) { try (socket; BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream())); PrintWriter out = new PrintWriter(socket.getOutputStream(), true)) { clients.add(out); String line; while ((line = in.readLine()) != null) { for (PrintWriter c : clients) { if (c != out) c.println(line); } } } catch (IOException ignored) { } finally { // usun writer klienta z listy } }
Wymagania:
GET /notes - lista notatek (JSON)POST /notes - dodanie notatki (tekst)List<String>)Wskazowki:
HttpServer.create(new InetSocketAddress(8081), 0)POST odczytaj body z exchange.getRequestBody()Rozwiazanie (szkic):
List<String> notes = Collections.synchronizedList(new ArrayList<>()); server.createContext("/notes", exchange -> { String method = exchange.getRequestMethod(); if ("GET".equalsIgnoreCase(method)) { String json = notes.stream().map(s -> "\"" + s + "\"").collect(Collectors.joining(",", "[", "]")); byte[] bytes = json.getBytes(StandardCharsets.UTF_8); exchange.sendResponseHeaders(200, bytes.length); try (OutputStream os = exchange.getResponseBody()) { os.write(bytes); } } else if ("POST".equalsIgnoreCase(method)) { String body = new String(exchange.getRequestBody().readAllBytes(), StandardCharsets.UTF_8).trim(); notes.add(body); exchange.sendResponseHeaders(201, -1); } else { exchange.sendResponseHeaders(405, -1); } });
Wymagania:
Authorization: Bearer …Wskazowki:
System.nanoTime()Rozwiazanie (fragment):
long start = System.nanoTime(); HttpRequest req = HttpRequest.newBuilder() .uri(URI.create("https://example.com/api/me")) .header("Authorization", "Bearer " + token) .GET() .build(); HttpResponse<String> res = client.send(req, HttpResponse.BodyHandlers.ofString()); long ms = (System.nanoTime() - start) / 1_000_000; System.out.println("Status=" + res.statusCode() + ", czas=" + ms + "ms");