Programowanie sieciowe (studia niestacjonarne)

Zajęcia

  1. 09.X.2011 — zajęcia organizacyjne i wprowadzające:
    (wymagania, warunki zaliczenia, zakres materiału, harmonogram semestru, ...)
    Zapoznanie ze środowiskiem programistycznym dostępnym w laboratorium (Visual Studio 2010),
    w tym celu mają Państwo napisać kilka prostych programów (zadanie 0).

    Materiały dydaktyczne z zajęć: Dokumentacja do wybranych wykorzystywanych klas i funkcji języka C#:
  2. 23.X.2011 ??? klienty usług TCP (przykładowy prosty klient i serwer usługi WWW), protokół TCP/IP, nawiązywanie połączeń, obsługa błędów (wyłapywanie wyjątków)
    • realizacja Zadania 1.: klient echo, nawiązywanie połączeń, nasłuch na porcie, transfer danych
    Dokumentacja: Wybrane materiały dydaktyczne z zajęć:
  3. 06.XI.2011 — klienty i serwery usług UDP, serwery wielowątkowe, obsługa wątków, tekstowe i binarne protokoły komunikacji;
    1. Sprawdzenie Zadania 1
    2. Protokół UDP: wysyłanie i odbieranie pakietów UDP (klasy UdpClient, IPEndPoint),
      funkcje pomocnicze: Encoding.ASCII.GetBytes(), Encoding.ASCII.GetString()
    3. Serwery wielowątkowe: Tworzenie i zarządzanie wątkami (klasa Thread)
    4. Obsługa elementów GUI z poziomu innych wątków (delegaty, metoda Invoke())
    5. Ćwiczenie dydaktyczne: funkcjonalny mini-komunikator oparty o UDP
    6. Szczegółowe omówienie propozycji tematów projektów:
      Sieciowe szachy, warcaby, GO, kółko i krzyżyk, zdalne zarządzanie plikami, trojan, serwer czasu,
      serwer WWW, komunikator internetowy, klient FTP
    7. Obowiązkowy wybór tematów projektów
    Wybrane materiały dydaktyczne z zajęć, prezentujące omówioną tematykę:
  4. 20.XI.2011 — projektowanie protokołów komunikacji, implementacja protokołów warstwy aplikacji, mechanizmy zwielokrotniania wejścia/wyjścia, serwery wielowątkowe;
    1. Prezentacja postępów w realizacji projektów: propozycje interfejsów GUI;
      mile widziane: wysyłanie pakietów w reakcji na zdarzenia zachodzące w GUI
    2. Sprawdzenie Zadania 1 c.d.
    3. Wybrane zagadnienia teoretyczne:
      mechanizmy zwielokrotniania wejścia/wyjścia; interfejs gniazd Berkeley Sockets
    4. Omówienie zakresu tematycznego, obowiązującego na zaliczenie: tematy.pdf
    5. Realizacja projektów c.d.: implementacja protokołu komunikacji; nasłuchiwanie i odbiór pakietów, aktualizacja stanu aplikacji w reakcji na dane odczytywane z pakietów przychodzących z sieci
    Dodatkowe materiały dydaktyczne do zajęć:
    • multithread-serv.cs – Serwer wielowątkowy TCP, obsługujący jednocześnie wielu klientów
  5. 27.XI.2011:
    1. sprawdzian pisemny z części teoretycznej
    2. prezentacja i ocena projektów

Galeria wybranych zrealizowanych projektów studenckich


Serwer i klient czasu - A.Janiak

Gra karciana: Oczko - J.Antczak

Gra planszowa "4 w rzędzie" - K.Grabowicz

Gra planszowa Chińczyk - M.Żebrowski

Gra sieciowa: Statki - M. Jakóbowski

Klient SMTP - J. Joachimiak

Komunikator - M. Kaczorowski

Gra logiczna GO - J. Tobera

 

Oprogramowanie

Na komputerach w salach laboratoryjnych zainstalowane jest środowisko programistyczne Microsoft Visual Studio 2010. Możliwe jest wykonywanie zadań przy użyciu dowolnych innych języków i narzędzi, jeśli tylko będą Państwo w stanie zaprezentować swoje programy w laboratorium i jeśli samodzielność ich wykonania nie będzie budziła wątpliwości.

 

Treści zadań

Zadanie 0 (na rozgrzewkę)

Instrukcja do zadania

Zadanie 1 ??? klienty, serwery TCP/UDP

Instrukcja do zadania

Zadanie projektowe

Zadanie projektowe polega na stworzeniu programu, pracującego w architekturze klient-serwer – aplikacja wielowątkowa lub wykorzystująca inne metody zwielokrotniania wejścia-wyjścia, jeśli jest to konieczne.

Przykładowe tematy projektów do wyboru:

  1. Prosta gra logiczna: kółko i krzyżyk, statki etc., oferująca rozgrywkę przez sieć
  2. Serwer i/lub klient prostej usługi sieciowej: np. prosty klient IRC lub prosty serwer WWW
  3. Program umożliwiający przesyłanie danych przez sieć (w rodzaju FTP)
  4. Klient+serwer umożliwiające zdalne zarządzanie komputerem (zarządzanie plikami, wyłączenie komputera etc.)
  5. Klient+serwer umożliwiające rozmowy Internetowe dla wielu użytkowników
  6. Sieciowa gra zręcznościowa w rodzaju pong lub asteroids
  7. Serwer udostępniający muzykę
  8. Własna propozycja tematu

Uwaga: Biorąc pod uwagę, że przedmiot trwa tylko przez pół semestru, założenia i funkcjonalność projektu powinny być możliwie proste.

Zadanie może być zrealizowane w dowolnej technologii i w dowolnym języku programowania, jeśli tylko zostanie to uzgodnione z prowadzącym. Program powinien zapewniać obsługę podstawowych błędów.

Podczas realizacji projektu mogą Państwo korzystać z fragmentów poprzednich zadań.

Istnieje ewentualna możliwość realizacji projektu w grupach dwuosobowych, w przypadku chęci realizowania rozbudowanego, niestandardowego projektu.

Przed przystąpieniem do realizacji należy obowiązkowo zgłosić wybór projektu prowadzącemu w celu omówienia szczegółów, zakresu projektu oraz planowanego sposobu realizacji zadania.

 

Przydzielone tematy projektów

studenttemat projektu
M.KaczorowskiKomunikator dla wielu użytkowników
M.JakóbowskiSieciowa gra logiczna: Statki
J.ToberaSieciowa gra logiczna: GO
R.RosiakGra sieciowa: Patyczki
K.PawlakSerwer FTP
W.KujawaKomunikator z funkcją transferu zrzutów ekranu
G.KosiackiKlient FTP
A.JaniakKlient / serwer czasu (usługa daytime)
J.JoachimiakProgram pocztowy (klient SMTP)
M.ŻebrowskiSieciowa gra losowa: Chińczyk
J.AntczakSieciowa gra karciana: Oczko
K.GrabowiczSieciowa gra logiczna: "4 w rzędzie"
Ł.BatarowiczSerwer WWW
S.Krawiec
K.DrzanikowskiSieciowa gra logiczna: Warcaby
K.StępniakSieciowa gra logiczna: Kółko i krzyżyk
... ...

 

Polecana literatura

W trakcie semestru pojawią się tutaj odnośniki do innych wartościowych materiałów.

 

Zasady uzyskania zaliczenia

Wyniki

...