Skip to main content

Laboratorium 3

Zadania do wykonania

  1. Napisz w języku Java aplikację typu klient-serwer. Serwer powinien jednocześnie nasłuchiwać na połączenia TCP i UDP na tym samym porcie (lub różnych, jeśli to konieczne). Serwer musi obsługiwać wielu klientów jednocześnie, wykorzystując wielowątkowość. Klient powinien mieć możliwość przesyłania plików do serwera zarówno za pomocą protokołu TCP, jak i UDP. Serwer powinien akceptować tylko prawdziwe pliki ZIP - wykorzystaj bibliotekę Apache Commons Compress do weryfikacji, czy przesłany plik jest prawdziwym plikiem ZIP, a nie plikiem z fałszywym rozszerzeniem. Zaimplementuj logowanie zdarzeń na serwerze, wykorzystując Log4j2, aby rejestrować informacje o połączeniach, przesłanych plikach oraz ewentualnych błędach. Logi powinny zawierać informacje takie jak czas zdarzenia, adres IP klienta, typ połączenia (TCP/UDP), nazwa pliku itp.

  2. Stwórz aplikację w języku Python wykorzystującą moduł socket. Zaimplementuj prosty serwer HTTP obsługujący metody GET i POST. Dla metody GET serwer powinien zwracać prostą stronę HTML. Dla metody POST serwer powinien przyjmować dane w formacie JSON i zwracać odpowiedź zawierającą przetworzone dane. Upewnij się, że serwer działa w sposób bezstanowy, tzn. nie przechowuje żadnego stanu pomiędzy żądaniami od klientów. Wykorzystaj moduł logging, aby rejestrować informacje o przychodzących żądaniach, takie jak metoda HTTP, ścieżka żądania, adres IP klienta oraz kody odpowiedzi.

  3. Napisz aplikację w języku Java wykorzystującą bibliotekę OkHttp lub RestTemplate. Wykonaj żądanie HTTP GET do zewnętrznego API, przekazując parametry zapytania (query parameters). Ustaw odpowiednie nagłówki, takie jak Accept z wartością application/json. Odbierz odpowiedź w formacie JSON i sparsuj ją, aby wyświetlić wybrane informacje. Zarejestruj szczegóły wysyłanych żądań i otrzymywanych odpowiedzi, w tym URL, kody statusu oraz treść odpowiedzi.

  4. Wykorzystując moduł requests w języku Python, napisz skrypt. Wyślij żądanie HTTP POST do wskazanego API, przesyłając dane w formacie JSON. Odbierz odpowiedź z serwera i wyświetl kod statusu oraz treść odpowiedzi. Dodaj obsługę wyjątków, aby w przypadku wystąpienia błędu (np. brak połączenia, błąd serwera) skrypt wyświetlał odpowiedni komunikat.

  5. Napisz serwer TCP w języku Python. Serwer powinien nasłuchiwać na lokalnym porcie 12345. Po nawiązaniu połączenia z klientem, odbiera od niego wiadomość tekstową. Odpowiada klientowi, przesyłając tę samą wiadomość poprzedzoną tekstem "Serwer otrzymał: ". Po wymianie wiadomości serwer zamyka połączenie.

Materiały

📄 Pobierz PDF LAB-3