Uploaded by User8177

lab1

advertisement
Programowanie Systemów Rozproszonych
Laboratorium 1
Wprowadzenie do Visual Studio i C#
Paweł Paduch [email protected]
11-03-2019
Rozdział 1
Wstęp
1.1
Na początek
Pierwsze zajęcia laboratoryjne z Programowania Systemów Rozproszonych
mają charakter wprowadzający. Na początku studenci po otrzymaniu od prowadzącego loginów i haseł zostaną poproszeni o zalogowanie się. Pierwsze logowanie
powinno odbywać się pod systemem Windows. W okienku logowania należy zaznaczyć „Zaloguj do: KIN”. Lub użyć przedrostka w nazwie użytkownika np.
KIN\12345
Po wprowadzeniu pierwszy raz hasła należy hasło zmienić na swoje indywidualne. Hasło należy zapamiętać (lub nawet zapisać) gdyż indywidualny login i hasło
będą używane przez cały semestr. Zalogowani studenci mają swoją przestrzeń
na dysku sieciowym Z: tam też proszę zamieszczać swoje prace.
1.2
Uczestnictwo
• Zajęcia laboratoryjne są obowiązkowe.
• Każdy student ma obowiązek wpisać się na listę obecności, co będzie potwierdzeniem jego uczestnictwa na zajęciach.
• Spóźnienie powyżej 15 min. traktowane jest jako nieobecność.
• Odrabiać można jedynie nieobecności pisemnie usprawiedliwione (np. zwolnienie lekarskie, pismo urzędowe).
• Usprawiedliwienie należy okazać niezwłocznie (pierwsze laboratoria po
okresie nieobecności) i umówić się na termin odróbczy. Usprawiedliwienia
typu: „musiałem być w pracy”, „uciekł mi autobus/pociąg/taksówka”, „źle
się czułem”, „nie miałem z kim dziecka zostawić” nie będą honorowane.
• Zgodnie z regulaminem studiów „Nieobecność studenta nawet usprawiedliwiona, na więcej niż 1/3 zajęć, może być podstawą do niezaliczenia tych
zajęć.” Kolejne 3 nieobecności będą zgłaszane do dziekana w celu weryfikacji listy studentów.
1
1.3
Zasady zaliczenia
Zaliczenie uzyska student, który w ciągu całego semestru uzyskał sumarycznie przynajmniej połowę punktów przewidzianych do zdobycia. W przypadku
kilku prowadzących punkty te będą przeliczane wagowo w zależności jaką część
zajęć dany prowadzący wykonał w ciągu semestru. Na zaliczenie laboratorium
składać się będą 3 elementy:
• Na każdych zajęciach laboratoryjnych studenci wykonują zadania przedstawione przez prowadzącego. Zadania te są oceniane w skali od 0 do 5
punktów.
• Po każdych laboratoriach student powinien przesłać sprawozdanie z zajęć.
Sposób przekazania i termin ustala prowadzący. Za prawidłowe sprawozdanie student może otrzymać maksymalnie 1 punkt.
• Podczas zajęć mogą odbywać się sprawdziany weryfikujące nabytą wiedzę.
Ocena ze sprawdzianów to około 50% całkowitej oceny.
1.4
Poprawy
Student, który nie uzyskał zaliczenia w trakcie trwania semestru może się
o nie ubiegać dwukrotnie w trakcie trwania sesji egzaminacyjnej, w tym raz
podczas sesji poprawkowej. Poprawa będzie polegała na napisaniu sprawdzianu
(przynajmniej na połowę punktów) oraz wykonaniu części praktycznej.
1.5
Moodle
Każdy student powinien mieć założone konto na wydziałowej platformie edukacyjnej http://www.weaii-moodle.tu.kielce.pl/ Hasła do kursu poda prowadzący.
1.6
zasady korespondencji
Zasady korespondencji opisałem pod adresem
https://achilles.tu.kielce.pl/portal/Members/332bd2d158a24964b2b98a7fc2879842/ogolnezasady-korespondencji-mailowej Należy przede wszystkim pamiętać o:
• prawidłowej konfiguracji programu pocztowego tak aby w polu nadawca
widniało imię i nazwisko
• zamieszczeniu tematu maila łącznie z podaniem nazwy grupy np. 1ID21A
• podaniu treści maila wraz z podpisem
1.7
Sprawozdania
• Po każdych zajęciach laboratoryjnych należy przesłać sprawozdanie (chyba, że prowadzący ustali inaczej).
2
• Czas na oddanie sprawozdania jest do końca (czyli do godziny 23:59:59,99)
następnego dnia roboczego.
• Sprawozdanie powinno być w formie .odt (plik Open/Libre Office).
• W sprawozdaniu umieszczamy jedynie fragmenty kodu (nie przekraczające
strony). Kod o większej objętości należy wysłać jako osobne załączniki. W
szczególności można wysłać cały projekt wcześniej skompresowany ZIPem.
• Sprawozdanie ma być formą dokumentu co zrobione zostało na zajęciach,
nie pracą domową. Punkty, które nie zostały wykonane na zajęciach takie
też pozostają w sprawozdaniu.
1.8
Prace domowe
Jeżeli na kolejne zajęcia jest zadana praca domowa (np. przemyśleć komunikację, zaprojektować klasę transportową itp.), należy ją także przesłać na maila
zgodnie z zasadami korespondencji najpóźniej na 2 dni przed planowanymi zajęciami.
1.9
Zasady podczas pisania sprawdzianów
Sprawdziany będą przeprowadzane na platformie moodle. Maksymalny czas
przeznaczony na sprawdzian zależny będzie od jego zawartości, zwykle kilka
minut. Na pytania opisowe należy udzielać odpowiedzi precyzyjnie (sprawdzane
są z automatu). Pytania testowe są wielokrotnego wyboru. Nie ma punktów
ujemnych.
Przed rozpoczęciem testu należy:
• wyłączyć i schować telefony komórkowe
• usunąć z uszu, szyi czy głowy i schować wszelkiego rodzaju słuchawki
(osoby niedosłyszące proszę zgłosić fakt posiadania aparatu słuchowego,
na czas testu aparat ten nie będzie potrzebny)
• usunąć wszystkie zbędne rzeczy z biurka (portfele, długopisy, kartki, zeszyty, torebki, kalkulatory, napoje, jedzenie, maskotki itp.).
• zamknąć lub odłożyć w miejsce niedostępne wszelkie torby i plecaki.
Podczas testu nie jest dozwolone:
• korzystanie z Internetu (za wyjątkiem strony moodle)
• korzystanie z innych aplikacji niż przeglądarka internetowa (np. komunikatory, terminale, programy LibreOffice, kalkulatory itp.)
• korzystanie z telefonów komórkowych
• korzystanie z kalkulatorów
• używanie pamięci przenośnych
• używanie rejestratorów dźwiękowych jak i wizyjnych
3
• udostępnianie zasobów komputera swojego lub korzystanie z zasobów innych komputerów
• odwracanie się, zerkanie na sąsiedni monitor, rozglądanie lub rozmawianie
• używanie ściąg
W przypadku naruszenia powyższych zasad lub przejawu innego nieuczciwego
zachowania w trakcie sprawdzianu, student może otrzymać ocenę 0 w trybie
natychmiastowym bez możliwości poprawy w późniejszym terminie!
1.10
Materiały pomocniczne
Do zajęć przydatne mogą być:
• materiały udostępniane przez prowadzących wykłady
• książki związane z tematyką programowania np. „Język C# 2010 i platforma .NET“ Andrew Troelsena
• książki związane z tematyką programowania współbieżnego np. „Programowanie równoległe i asynchroniczne w C# 5.0”
• kursy i poradniki w sieci np. http://www.centrumxp.pl/
4
Rozdział 2
Pierwsze kroki z VS
Po zalogowaniu się z menu start odnajdujemy program Microsoft Visual
Studio 2010, lub nowszy. Przy pierwszym uruchomieniu poproszeni zostaniemy
o wybór preferowanego języka, będzie nim C#.
Z górnego menu wybieramy: File->New Project. W okienku jak na rysunku
Rysunek 2.1: Okienko wybierania nowego projektu
2.1 zaznaczamy Visual C#->Windows Console Application. Na dole wpisujemy
nazwę projektu Hello i nazwę solucji Lab1, potwierdzamy OK.
Utworzony zostanie prosty projekt konsolowy z przygotowanym kodem. Można wypełnić kod metody Main prostą linijką.
Listing 2.1: Program.cs
1
2
3
4
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
5
6
namespace Hello
5
7
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("Hello");
}
}
8
9
10
11
12
13
14
15
}
Już teraz program można skompilować i zobaczyć jak działa
Kompilacja i uruchomienie ctrl+F5 lub F5 - w trybie debugowania.
6
Rozdział 3
Pierwszy komunikat
Dodajemy nowy projekt do solucji Lab1
Rysunek 3.1: Okienko wybierania nowego projektu
We właściwościach solucji zmienić Startup Project na Multiple startup projects jak na rys. 3.2
Dzięki temu oba projekty będą startowały jednocześnie przy uruchamianiu.
W obu projektach Serwer w plikach Program.cs dodajemy dwie nowe przestrzenie nazw:
Listing 3.1: Nowe przestrzenie nazw
1
2
using System.Net.Sockets;
using System.Net;
W obu plikach dodajemy też obiekty klasy TcpListener oraz Socket.
Listing 3.2: Nowe obiekty
7
Rysunek 3.2: Start obu projektów
1
2
private static TcpListener tcpLsn;
private static Socket s;
W programie serwera dodajemy metodę serwuj()
Listing 3.3: Metoda serwuj
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
static void serwuj()
{
tcpLsn = new TcpListener(IPAddress.Parse("127.0.0.1"), 2222); //zainicjiuj ←listenera na podanym porcie i adresie
tcpLsn.Start();
Socket sckt = tcpLsn.AcceptSocket(); //funkcja blokująca do czasu nadejścia ←połączenia
Byte[] odebraneBajty = new Byte[100];
int ret = sckt.Receive(odebraneBajty, odebraneBajty.Length, 0);
string tmp = null;
tmp = System.Text.Encoding.ASCII.GetString(odebraneBajty);
if (tmp.Length > 0)
{
Console.WriteLine("Odebrałem komunikat:");
Console.WriteLine(tmp);
}
tcpLsn.Stop();
}
Oraz wołamy w głównym programie:
Listing 3.4: Zmiany w Main
1
2
3
4
5
static void Main(string[] args)
{
Console.WriteLine("Startuję serwer...");
serwuj();
}
8
W projekcie Hello Dodajemy metody polacz i wyslij oraz modyfikujemy Main:
Listing 3.5: Zmiany w Main
1
2
3
4
5
6
private static void polacz()
{
s = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
IPAddress hostadd = IPAddress.Parse("127.0.0.1");
int port = 2222;
7
8
IPEndPoint EPhost = new IPEndPoint(hostadd, port);
s.Connect(EPhost);
9
10
11
}
12
13
14
private static void wyslij(string wiadomosc)
{
15
Byte[] byteData = Encoding.ASCII.GetBytes(wiadomosc.ToCharArray());
s.Send(byteData, byteData.Length, 0);
16
17
18
}
19
20
21
22
23
24
25
static void Main(string[] args)
{
polacz();
Console.WriteLine("Wysyłam komunikat...");
wyslij("ala ma kota");
}
Teraz można uruchomić programy. Na konsoli Serwera powinniśmy zobaczyć
przesłany komunikat.
9
Rozdział 4
Pierwsze Zadanie
Należy tak zmodyfikować program by stworzyć prosty komunikator.
Użytkownik powinien móc naprzemiennie wpisywać tekst raz w jednym raz w
drugim terminalu. Tekst powinien być przekazywany przez łącze TCP/IP tak
jak na powyższym przykładzie. Program powinien się zakończyć gdy w którejkolwiek konsoli użytkownik napiszę słowo „quit”.
Należy dodać obsługę błędów, przechwycenie wyjątków.
10
Rozdział 5
Komunikator wersja
współbieżna
Przerobić komunikator, do wersji współbieżnej.
11
Download