Programowanie Aplikacji Sieciowych 2017/2018 Propozycje programów zaliczeniowych Jako program zaliczeniowy rozumiemy parę programów - serwer i klient. Brak któregokolwiek z programów (klienta lub serwera) skutkuje brakiem zaliczenia. W każdym programie serwer ma możliwość obsługi wielu klientów jednocześnie (do wyboru: za pomocą wątków lub zdarzeń). W każdym z programów należy zaimplementować własny protokół - dokładnie określić typ i format dozwolonych wiadomości. Komendy protokołu wraz z ich parametrami, powinny być dokładnie zdefiniowanie w osobnym plliku, który również należy dołączyć do oddawanego programu zaliczeniowego. Należy zadbać o prawidłową obsługę błędów każdej funkcji w programie. W projektach nie korzystamy z gotowych bibliotek. Program można pisać samodzielnie lub w grupie składającej się z maksymalnie 2 osób, gdzie każda z osób ma jasno określone zadania (ustalone z prowadzącym), które wykonuje, i za które w projekcie odpowiada. Obowiązują zapisy na wybrany projekt, chęć wykonywania określonego projeku można zgłaszać osobiście (na zajęciach) lub mailowo (katarzyna.mazur@umcs.pl). Podczas zapisów na dany temat projektu obowiązuje zasada - kto pierwszy, ten lepszy. Jeden projekt może być wykonywany przez jedną grupę / osobę, nie można wykonywać 2 takich samych projektów. Jako program zaliczeniowy można wybrać dowolny program z poniższej listy, lub zgłaszać własne propozycje programów zaliczeniowych (które muszą zostać zaakceptowane przez prowadzącego). Brak któregokolwiek z plików w paczce oddanej jako program zaliczeniowy (w paczce powinien znaleźć się program klienta, program serwera, opis protokołu, opis uruchomienia programu) skutkuje brakiem zaliczenia. Prawidłowa implementacja wybranego z podanej poniżej listy tematów umożliwia uzyskanie zaliczenia (oceny 3). Projekty, które będą wyróżniały się rozbudowanym protokołem, zaawansowaniem w wykorzystaniu funkcji programowania sieciowego (złożoność projektu) mają szansę na ocenę 5. Na prawidłową implementację składają się: napisanie obu programów: klienta i serwera implementacja własnego protokołu, odpowiednie zdefiniowanie dozwolonych komend i ich parametrów upewnienie się, że wysłano / odebrano całą wiadomość poprawne utworzenie / zamknięcie wykorzystywanych gniazd sieciowych Gotowe projekty zapisane pod nazwą w formacie nazwisko1 nazwisko2 nr projektu 2018.zip należy wysłać, wraz z opisem uruchomienia programu, na adres katarzyna.mazur@umcs.pl co najmniej tydzień przed wybranym terminem zaliczenia. Zaliczenie planowane jest na 25.06.2018-29.06.2018 oraz 02.07.2018-06.07.2018 w godzinach od 9:00 do 15:00. Czas przeznaczony na zaliczenie to ok. pół godziny.
1. Zdalny analizator pakietów (Remote Packet Analyzer) - wysyłają do serwera pakiety sieciowe (w postaci szesnastkowej lub binarnej), a następnie odbierają od serwera odkodowany cały pakiet - odbiera od klientów pakiety, a następnie odkodowuje każde pole pakietu, i tak odkodowany pakiet w całości przesyła klientom Zarówno klient jak i serwer, muszą określić protokół przesyłu pakietów - określić, co aktualnie przesyłamy (typ pakietu) i w jakiej postaci (typ danych: szesnastkowo lub binarnie) W aplikacji należy obsłużyć co najmniej 10 różnych typów pakietów IP, portem, jaki wysłał pakiet, kiedy odesłano odpowiedź,...) Realizacja: Karol Kłodnicki 2. Serwer uploadu/downloadu plików (Remote Hosting Provider) - wysyłają do serwera pliki w dowolnym formacie (txt, mp3, png,...), mają możliwość pobrania z serwera listy wysłanych plików (każdy użytkownik ma własne konto na serwerze służące do przechowywania plików), pobrania dowolnego wcześniej wrzuconego pliku, klient może również pobrać pliki innych użytkowników, jeśli są publicznie dostępne - odbiera od klientów pliki, wysyła klientom pliki, o które pytają, zarządza kontami klientów IP, portem, jaki plik nadesłał,...) 3. Gra w statki (Remote Battleship Game) - łączą się z serwerem i rozgrywają pomiędzy sobą grę w statki - zarządza grą klientów w taki sposób, że równocześnie może być przeprowadzonych kilka gier IP, portem, jaki ruch wykonał,...) Realizacja: Bartłomiej Kloc 4. Zdalny słownik polsko-niemiecki, niemiecko-polski (Remote Anty Grammar Wörterbuch) - łączą się z serwerem, wysyłając mu wiadomość do przetłumaczenia, wiadomość może być krótką wiadomością, lub całym plikiem (tekstowym), który serwer musi przetłumaczyć, i odesłać klientowi w postaci krótkiej wiadomości, bądź całego pliku - tłumaczy tekst i zwraca odpowiedź, zarządza kontami klientów, gdzie przechowuje historię tłumaczeń, każdy klient ma własne konto na serwerze i dostęp do poprzednio tłumaczonych plików/wiadomości, o które może w każdej chwili ponownie zapytać serwer IP, portem, o jakie tłumaczenie poprosił,...) 2
5. BitTorrent - łączą się z głównym serwerem, w celu pobrania danego pliku, mają możliwość sprawdzenia, czy taki plik istnieje, i jeśli tak, na jakim serwerze się znajduje, pobiera dane pliki z jednego lub kilku serwerów - istnieje główny serwer, do którego, podczas uruchomienia, zgłaszają się pozostałe serwery, informując go o tym, jakie posiadają pliki, które mogą udostępnić (w przypadku zmian na jakimkolwiek serwerze wysyłają aktualizację do serwera głównego), serwer udostępnia klientom listę plików i ich położenie IP, portem, o jakie tłumaczenie poprosił,...) Aplikacja to w rzeczywistości sieć peer-to-peer, gdzie jeden plik może znajdować się na jednym serwerze, lub też jeden plik może (w częściach) znajdować się na kilku serwerach 6. Gra w kółko i krzyżyk - serwer zarządza grami klientów, w danej chwili może być prowadzonych kilka gier Realizacja: Paweł Sosnówka, Bartosz Śnieżek 7. Gra w scrabble - serwer zarządza grami klientów, w danej chwili może być prowadzonych kilka gier, serwer dla każdego losuje litery, których można używać, dosyła brakujące litery klientom,... 8. Gra karciana IP,...) 9. Gra w Bingo 3
10. Gra w Go 11. Gra w Makao - łączą się z serwerem, czekają na kolejne osoby (założyć, ile osób może grać w danej rozgrywce), grają razem - serwer zarządza grami klientów, w danej chwili może być prowadzonych kilka gier, lub tylko jedna gra, ale z więcej niż 2 klientami,... 12. Gra liczbowa 13. Gra w szachy 4
14. Gra w wisielca, mogą grać 2 osoby, lub liczba osób dla jednej partii gry jest do ustalenia,... Realizacja: Marek Szajewski, Monika Szkołut 15. Gra Snake,... 16. Czat IRC z mechanizmami bezpieczeństwa - łączą się z serwerem, rozmawiają w tematycznych pokojach,... - odbiera połączenia od klientów następnie pozwala na wybór pokoju i uwierzytelnienie, aby uzyskać dodatkowe uprawnienia,... Realizacja: Mirosław Wnuczek, Szymon Wawrzyńczyk, Mateusz Wlazłowski 17. Kompresja plików ZIP - wysyłaja do serwera pliki zip, oczekują w odpowiedzi od serwera listy plików spakowanych zipem, mogą poprosić serwer o odesłanie wybranego pliku z archiwum,... - odbiera od klientów archiwa zip, dekompresuje, odsyła do klienta listę plików zawartych w zipie, może podesłać klientowi dowolny plik z zipa (rozpakowany),... 5
18. Gra 1 z 10 - łączą się z serwerem, grają razem, odpowiadają na pytania,... - odbiera połączenia klientów, wysyła klientom pytania, odbiera odpowiedzi, sprawdza ich poprawność, odsyła informację o tym, czy udało się odpowiedzieć poprawnie na pytanie, utrzymuje informacje o atanie gry - który klient ma ile punktów, kto wygrał,... 19. Gra Milionrzy - łączą się z serwerem, grają razem, odpowiadają na pytania,... - odbiera połączenia klientów, wysyła klientom pytania, odbiera odpowiedzi, sprawdza ich poprawność, odsyła informację o tym, czy udało się odpowiedzieć poprawnie na pytanie, utrzymuje informacje o atanie gry - który klient ma ile punktów, kto wygrał,... Realizacja: Krystian Witek, Michał Tołczyżewski 20. Gra typu Memory 21. Czat Realizacja: Kirill Yatsenko 6
22. Kalambury 23. Teleturniej 24. Serwer WWW (prosty blog) - posiadają konta na serwerze, każdy ma własną stronę na serwerze, na której może dodawać posty - zarządza stronami (blogami) klientów Realizacja: Jakub Ostrowski, Filip Postępski 25. Serwer SMTP 7
26. Serwer POP3 / IMAP 27. Obsługa BlockChain 28. Serwer HTTP - zwykły klient HTTP (prosta przeglądarka) + atakujący, który próbuje wykonać atak DoS Slowloris na serwerze - obsługa nagłówków HTTP, kodów HTTP, odporny na atak DoS Slowloris 29. Gra RPG 30. Gra Bomberman 8
31. Gra planszowa 32. Gra młynek 33. WAF / DDoS 34. WebSocket Czat - komunikują się z serwerem za pomocą protokołu WebSocket (wiadomość jest opakowana w ramki protokołu WebSocket) - odbiera od klienta wiadomości i wysyła pozostałym klientom na czacie, również wykorzystując protokół WebSocket - tu WebSocket 9
35. Synchronizacja folderów między komputerami - tu WebSocket 36. Gra koło fortuny - tu WebSocket 37. Gra w warcaby Realizacja: Szymon Romaniuk, Michał Paluszkiewicz, Artur Kanclerz 38. Gra w państwa-miasta Realizacja: Dąbrowski Kamil, Pudwel Patryk, Skrzyszewska Agata 39. Gra Lotto Realizacja: Patryk Augustyniak, Mikołaj Batyra, Łukasz Bartmiński 10
40. Gra karciana poker 41. Gra multiplayer Tank 11